Cleanup and re-write uart code
This commit is contained in:
@@ -31,7 +31,7 @@ static inline uintptr_t get_uart_base(void) {
|
||||
|
||||
#define BAUD_115200 115200
|
||||
|
||||
/* Exosphère: add the clkreset values for UART C,D,E */
|
||||
/* UART devices */
|
||||
typedef enum {
|
||||
UART_A = 0,
|
||||
UART_B = 1,
|
||||
@@ -148,31 +148,31 @@ typedef enum {
|
||||
} UartInterruptIdentification;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ uint32_t UART_THR_DLAB;
|
||||
/* 0x04 */ uint32_t UART_IER_DLAB;
|
||||
/* 0x08 */ uint32_t UART_IIR_FCR;
|
||||
/* 0x0C */ uint32_t UART_LCR;
|
||||
/* 0x10 */ uint32_t UART_MCR;
|
||||
/* 0x14 */ uint32_t UART_LSR;
|
||||
/* 0x18 */ uint32_t UART_MSR;
|
||||
/* 0x1C */ uint32_t UART_SPR;
|
||||
/* 0x20 */ uint32_t UART_IRDA_CSR;
|
||||
/* 0x24 */ uint32_t UART_RX_FIFO_CFG;
|
||||
/* 0x28 */ uint32_t UART_MIE;
|
||||
/* 0x2C */ uint32_t UART_VENDOR_STATUS;
|
||||
/* 0x30 */ uint8_t _pad_30[0x0C];
|
||||
/* 0x3C */ uint32_t UART_ASR;
|
||||
} uart_t;
|
||||
uint32_t UART_THR_DLAB;
|
||||
uint32_t UART_IER_DLAB;
|
||||
uint32_t UART_IIR_FCR;
|
||||
uint32_t UART_LCR;
|
||||
uint32_t UART_MCR;
|
||||
uint32_t UART_LSR;
|
||||
uint32_t UART_MSR;
|
||||
uint32_t UART_SPR;
|
||||
uint32_t UART_IRDA_CSR;
|
||||
uint32_t UART_RX_FIFO_CFG;
|
||||
uint32_t UART_MIE;
|
||||
uint32_t UART_VENDOR_STATUS;
|
||||
uint8_t _0x30[0x0C];
|
||||
uint32_t UART_ASR;
|
||||
} tegra_uart_t;
|
||||
|
||||
void uart_select(UartDevice dev);
|
||||
void uart_config(UartDevice dev);
|
||||
void uart_init(UartDevice dev, uint32_t baud);
|
||||
void uart_wait_idle(UartDevice dev, UartVendorStatus status);
|
||||
void uart_send(UartDevice dev, const void *buf, size_t len);
|
||||
void uart_recv(UartDevice dev, void *buf, size_t len);
|
||||
|
||||
static inline volatile uart_t *get_uart_device(UartDevice dev) {
|
||||
static inline volatile tegra_uart_t *uart_get_regs(UartDevice dev) {
|
||||
static const size_t offsets[] = {0, 0x40, 0x200, 0x300, 0x400};
|
||||
return (volatile uart_t *)(UART_BASE + offsets[dev]);
|
||||
return (volatile tegra_uart_t *)(UART_BASE + offsets[dev]);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user