116 lines
4.5 KiB
C
116 lines
4.5 KiB
C
/***************************************************************************
|
|
*
|
|
* Copyright 2015-2019 BES.
|
|
* All rights reserved. All unpublished rights reserved.
|
|
*
|
|
* No part of this work may be used or reproduced in any form or by any
|
|
* means, or stored in a database or retrieval system, without prior written
|
|
* permission of BES.
|
|
*
|
|
* Use of this work is governed by a license granted by BES.
|
|
* This work contains confidential and proprietary information of
|
|
* BES. which is protected by copyright, trade secret,
|
|
* trademark and other intellectual property rights.
|
|
*
|
|
****************************************************************************/
|
|
#ifndef __REG_UART_H__
|
|
#define __REG_UART_H__
|
|
|
|
#include "plat_types.h"
|
|
|
|
// UART Registers
|
|
struct UART_T {
|
|
__IO uint32_t UARTDR; // 0x000
|
|
union {
|
|
__I uint32_t UARTRSR; // 0x004
|
|
__O uint32_t UARTECR; // 0x004
|
|
};
|
|
uint32_t RESERVED_008[4]; // 0x008
|
|
__I uint32_t UARTFR; // 0x018
|
|
uint32_t RESERVED_01C; // 0x01C
|
|
__IO uint32_t UARTILPR; // 0x020
|
|
__IO uint32_t UARTIBRD; // 0x024
|
|
__IO uint32_t UARTFBRD; // 0x028
|
|
__IO uint32_t UARTLCR_H; // 0x02C
|
|
__IO uint32_t UARTCR; // 0x030
|
|
__IO uint32_t UARTIFLS; // 0x034
|
|
__IO uint32_t UARTIMSC; // 0x038
|
|
__I uint32_t UARTRIS; // 0x03C
|
|
__I uint32_t UARTMIS; // 0x040
|
|
__O uint32_t UARTICR; // 0x044
|
|
__IO uint32_t UARTDMACR; // 0x048
|
|
uint32_t RESERVED_04C[997]; // 0x04C
|
|
__I uint32_t UARTPID0; // 0xFE0
|
|
__I uint32_t UARTPID1; // 0xFE4
|
|
__I uint32_t UARTPID2; // 0xFE8
|
|
__I uint32_t UARTPID3; // 0xFEC
|
|
__I uint32_t UARTPCID0; // 0xFF0
|
|
__I uint32_t UARTPCID1; // 0xFF4
|
|
__I uint32_t UARTPCID2; // 0xFF8
|
|
__I uint32_t UARTPCID3; // 0xFFC
|
|
};
|
|
|
|
// Data status bits
|
|
#define UART_DATA_ERROR_MASK 0x0F00
|
|
|
|
// Status reg bits
|
|
#define UART_STATUS_ERROR_MASK 0x0F
|
|
|
|
// Flag reg bits
|
|
#define UARTFR_RI (1 << 8) // Ring indicator
|
|
#define UARTFR_TXFE (1 << 7) // Transmit FIFO empty
|
|
#define UARTFR_RXFF (1 << 6) // Receive FIFO full
|
|
#define UARTFR_TXFF (1 << 5) // Transmit FIFO full
|
|
#define UARTFR_RXFE (1 << 4) // Receive FIFO empty
|
|
#define UARTFR_BUSY (1 << 3) // UART busy
|
|
#define UARTFR_DCD (1 << 2) // Data carrier detect
|
|
#define UARTFR_DSR (1 << 1) // Data set ready
|
|
#define UARTFR_CTS (1 << 0) // Clear to send
|
|
|
|
// Flag reg bits - alternative names
|
|
#define UART_TX_EMPTY_FLAG_MASK UARTFR_TXFE
|
|
#define UART_RX_FULL_FLAG_MASK UARTFR_RXFF
|
|
#define UART_TX_FULL_FLAG_MASK UARTFR_TXFF
|
|
#define UART_RX_EMPTY_FLAG_MASK UARTFR_RXFE
|
|
#define UART_BUSY_FLAG_MASK UARTFR_BUSY
|
|
|
|
// Control reg bits
|
|
#define UARTCR_CTSEN (1 << 15) // CTS hardware flow control enable
|
|
#define UARTCR_RTSEN (1 << 14) // RTS hardware flow control enable
|
|
#define UARTCR_RTS (1 << 11) // Request to send
|
|
#define UARTCR_DTR (1 << 10) // Data transmit ready.
|
|
#define UARTCR_RXE (1 << 9) // Receive enable
|
|
#define UARTCR_TXE (1 << 8) // Transmit enable
|
|
#define UARTCR_LBE (1 << 7) // Loopback enable
|
|
#define UARTCR_UARTEN (1 << 0) // UART Enable
|
|
|
|
// Line Control Register Bits
|
|
#define UARTLCR_H_DMA_RT_EN (1 << 15)
|
|
#define UARTLCR_H_DMA_RT_CNT(n) (((n) & 0x7F) << 8)
|
|
#define UARTLCR_H_DMA_RT_CNT_MASK (0x7F << 8)
|
|
#define UARTLCR_H_DMA_RT_CNT_SHIFT (8)
|
|
#define UARTLCR_H_SPS (1 << 7) // Stick parity select
|
|
#define UARTLCR_H_WLEN_8 (3 << 5)
|
|
#define UARTLCR_H_WLEN_7 (2 << 5)
|
|
#define UARTLCR_H_WLEN_6 (1 << 5)
|
|
#define UARTLCR_H_WLEN_5 (0 << 5)
|
|
#define UARTLCR_H_FEN (1 << 4) // FIFOs Enable
|
|
#define UARTLCR_H_STP2 (1 << 3) // Two stop bits select
|
|
#define UARTLCR_H_EPS (1 << 2) // Even parity select
|
|
#define UARTLCR_H_PEN (1 << 1) // Parity Enable
|
|
#define UARTLCR_H_BRK (1 << 0) // Send break
|
|
|
|
// UARTIFLS reg bits
|
|
#define UARTIFLS_TXFIFO_LEVEL(n) (((n) & 3) << 0)
|
|
#define UARTIFLS_TXFIFO_LEVEL_MASK (3 << 0)
|
|
#define UARTIFLS_TXFIFO_LEVEL_SHIFT (0)
|
|
#define UARTIFLS_RXFIFO_LEVEL(n) (((n) & 3) << 3)
|
|
#define UARTIFLS_RXFIFO_LEVEL_MASK (3 << 3)
|
|
#define UARTIFLS_RXFIFO_LEVEL_SHIFT (3)
|
|
|
|
// DMACR reg bits
|
|
#define UARTDMACR_RXDMAE (1 << 0)
|
|
#define UARTDMACR_TXDMAE (1 << 1)
|
|
#define UARTDMACR_DMAONERR (1 << 2)
|
|
|
|
#endif
|