drv_uart.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2018-02-08 RT-Thread the first version
  9. */
  10. #ifndef __DRV_UART_H__
  11. #define __DRV_UART_H__
  12. #define UART0_BASE_ADDR (0x01C25000)
  13. #define UART1_BASE_ADDR (0x01C25400)
  14. #define UART2_BASE_ADDR (0x01C25800)
  15. #define UART_THR (0X00)
  16. #define UART_RHB (0X00)
  17. #define UART_DLL (0X00)
  18. #define UART_DLH (0X04)
  19. #define UART_IER (0X04)
  20. #define UART_IIR (0X08)
  21. #define UART_FCR (0X08)
  22. #define UART_LCR (0X0C)
  23. #define UART_MCR (0X10)
  24. #define UART_LSR (0X14)
  25. #define UART_MSR (0X18)
  26. #define UART_SCH (0X1C)
  27. #define UART_USR (0X7C)
  28. #define UART_TFL (0X80)
  29. #define UART_RFL (0X84)
  30. #define UART_HSK (0X88)
  31. #define UART_HALT (0XA4)
  32. #define UART_DBG_DLL (0XB0)
  33. #define UART_DBG_DLH (0XB4)
  34. struct tina_uart
  35. {
  36. volatile rt_uint32_t rx_tx_dll; /* 0x00 */
  37. volatile rt_uint32_t dlh_ier; /* 0x04 */
  38. volatile rt_uint32_t iir_fcr; /* 0x08 */
  39. volatile rt_uint32_t lcr; /* 0x0C */
  40. volatile rt_uint32_t mcr; /* 0x10 */
  41. volatile rt_uint32_t lsr; /* 0x14 */
  42. volatile rt_uint32_t msr; /* 0x18 */
  43. volatile rt_uint32_t sch; /* 0x1C */
  44. volatile rt_uint32_t reserved0[23];
  45. volatile rt_uint32_t usr; /* 0x7c */
  46. volatile rt_uint32_t tfl; /* 0x80 */
  47. volatile rt_uint32_t rfl; /* 0x84 */
  48. volatile rt_uint32_t hsk; /* 0x88 */
  49. volatile rt_uint32_t reserved1[6];
  50. volatile rt_uint32_t halt; /* 0xa4 */
  51. volatile rt_uint32_t reserved2[2];
  52. volatile rt_uint32_t dbg_dll; /* 0xb0 */
  53. volatile rt_uint32_t dbg_dlh; /* 0xb4 */
  54. };
  55. typedef struct tina_uart *tina_uart_t;
  56. #define UART0 ((tina_uart_t)UART0_BASE_ADDR)
  57. #define UART1 ((tina_uart_t)UART1_BASE_ADDR)
  58. #define UART2 ((tina_uart_t)UART2_BASE_ADDR)
  59. int rt_hw_uart_init(void);
  60. #endif /* __DRV_UART_H__ */