/** DUart.h * Header defining the DUART constants (Base addresses, sizes, flags) * * Based on Serial I/O Port library headers available in PL011Uart.h * * Copyright (c) 2011-2012, ARM Limited. All rights reserved. * Copyright (c) 2016, Freescale Semiconductor, Inc. All rights reserved. * Copyright 2017, 2020 NXP * * SPDX-License-Identifier: BSD-2-Clause-Patent * **/ #ifndef DUART_H_ #define DUART_H_ // FIFO Control Register #define DUART_FCR_FIFO_EN 0x01 /* Fifo enable */ #define DUART_FCR_CLEAR_RCVR 0x02 /* Clear the RCVR FIFO */ #define DUART_FCR_CLEAR_XMIT 0x04 /* Clear the XMIT FIFO */ #define DUART_FCR_DMA_SELECT 0x08 /* For DMA applications */ #define DUART_FCR_TRIGGER_MASK 0xC0 /* Mask for the FIFO trigger range */ #define DUART_FCR_TRIGGER_1 0x00 /* Mask for trigger set at 1 */ #define DUART_FCR_TRIGGER_4 0x40 /* Mask for trigger set at 4 */ #define DUART_FCR_TRIGGER_8 0x80 /* Mask for trigger set at 8 */ #define DUART_FCR_TRIGGER_14 0xC0 /* Mask for trigger set at 14 */ #define DUART_FCR_RXSR 0x02 /* Receiver soft reset */ #define DUART_FCR_TXSR 0x04 /* Transmitter soft reset */ // Modem Control Register #define DUART_MCR_DTR 0x01 /* Reserved */ #define DUART_MCR_RTS 0x02 /* RTS */ #define DUART_MCR_OUT1 0x04 /* Reserved */ #define DUART_MCR_OUT2 0x08 /* Reserved */ #define DUART_MCR_LOOP 0x10 /* Enable loopback test mode */ #define DUART_MCR_AFE 0x20 /* AFE (Auto Flow Control) */ #define DUART_MCR_DMA_EN 0x04 #define DUART_MCR_TX_DFR 0x08 // Line Control Register /* * Note: if the word length is 5 bits (DUART_LCR_WLEN5), then setting * DUART_LCR_STOP will select 1.5 stop bits, not 2 stop bits. */ #define DUART_LCR_WLS_MSK 0x03 /* character length select mask */ #define DUART_LCR_WLS_5 0x00 /* 5 bit character length */ #define DUART_LCR_WLS_6 0x01 /* 6 bit character length */ #define DUART_LCR_WLS_7 0x02 /* 7 bit character length */ #define DUART_LCR_WLS_8 0x03 /* 8 bit character length */ #define DUART_LCR_STB 0x04 /* # stop Bits, off=1, on=1.5 or 2) */ #define DUART_LCR_PEN 0x08 /* Parity eneble */ #define DUART_LCR_EPS 0x10 /* Even Parity Select */ #define DUART_LCR_STKP 0x20 /* Stick Parity */ #define DUART_LCR_SBRK 0x40 /* Set Break */ #define DUART_LCR_BKSE 0x80 /* Bank select enable */ #define DUART_LCR_DLAB 0x80 /* Divisor latch access bit */ // Line Status Register #define DUART_LSR_DR 0x01 /* Data ready */ #define DUART_LSR_OE 0x02 /* Overrun */ #define DUART_LSR_PE 0x04 /* Parity error */ #define DUART_LSR_FE 0x08 /* Framing error */ #define DUART_LSR_BI 0x10 /* Break */ #define DUART_LSR_THRE 0x20 /* Xmit holding register empty */ #define DUART_LSR_TEMT 0x40 /* Xmitter empty */ #define DUART_LSR_ERR 0x80 /* Error */ // Modem Status Register #define DUART_MSR_DCTS 0x01 /* Delta CTS */ #define DUART_MSR_DDSR 0x02 /* Reserved */ #define DUART_MSR_TERI 0x04 /* Reserved */ #define DUART_MSR_DDCD 0x08 /* Reserved */ #define DUART_MSR_CTS 0x10 /* Clear to Send */ #define DUART_MSR_DSR 0x20 /* Reserved */ #define DUART_MSR_RI 0x40 /* Reserved */ #define DUART_MSR_DCD 0x80 /* Reserved */ // Interrupt Identification Register #define DUART_IIR_NO_INT 0x01 /* No interrupts pending */ #define DUART_IIR_ID 0x06 /* Mask for the interrupt ID */ #define DUART_IIR_MSI 0x00 /* Modem status interrupt */ #define DUART_IIR_THRI 0x02 /* Transmitter holding register empty */ #define DUART_IIR_RDI 0x04 /* Receiver data interrupt */ #define DUART_IIR_RLSI 0x06 /* Receiver line status interrupt */ // Interrupt Enable Register #define DUART_IER_MSI 0x08 /* Enable Modem status interrupt */ #define DUART_IER_RLSI 0x04 /* Enable receiver line status interrupt */ #define DUART_IER_THRI 0x02 /* Enable Transmitter holding register int. */ #define DUART_IER_RDI 0x01 /* Enable receiver data interrupt */ // LCR defaults #define DUART_LCR_8N1 0x03 #define DUART_LCRVAL DUART_LCR_8N1 /* 8 data, 1 stop, no parity */ #define DUART_MCRVAL (DUART_MCR_DTR | \ DUART_MCR_RTS) /* RTS/DTR */ #define DUART_FCRVAL (DUART_FCR_FIFO_EN | \ DUART_FCR_RXSR | \ DUART_FCR_TXSR) /* Clear & enable FIFOs */ #define URBR 0x0 #define UTHR 0x0 #define UDLB 0x0 #define UDMB 0x1 #define UIER 0x1 #define UIIR 0x2 #define UFCR 0x2 #define UAFR 0x2 #define ULCR 0x3 #define UMCR 0x4 #define ULSR 0x5 #define UMSR 0x6 #define USCR 0x7 #define UDSR 0x10 #endif /* DUART_H_ */