evalsoc_uart.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // See LICENSE for license details.
  2. #ifndef _EVALSOC_UART_H
  3. #define _EVALSOC_UART_H
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. /* Register offsets */
  8. #define UART_REG_TXFIFO 0x00
  9. #define UART_REG_RXFIFO 0x04
  10. #define UART_REG_TXCTRL 0x08
  11. #define UART_REG_RXCTRL 0x0c
  12. #define UART_REG_IE 0x10
  13. #define UART_REG_IP 0x14
  14. #define UART_REG_DIV 0x18
  15. /* TXCTRL register */
  16. #define UART_TXEN 0x1
  17. #define UART_TXWM(x) (((x) & 0xffff) << 16)
  18. /* RXCTRL register */
  19. #define UART_RXEN 0x1
  20. #define UART_RXWM(x) (((x) & 0xffff) << 16)
  21. /* IP register */
  22. #define UART_IP_TXWM 0x1
  23. #define UART_IP_RXWM 0x2
  24. #define UART_TXFIFO_FULL (1<<31)
  25. #define UART_RXFIFO_EMPTY (1<<31)
  26. #define UART_TXCTRL_TXCNT_OFS (16)
  27. #define UART_TXCTRL_TXCNT_MASK (0x1F << UART_TXCTRL_TXCNT_OFS)
  28. #define UART_TXCTRL_TXEN_OFS (0)
  29. #define UART_TXCTRL_TXEN_MASK (0x1 << UART_TXCTRL_TXEN_OFS)
  30. #define UART_TXCTRL_NSTOP_OFS (1)
  31. #define UART_TXCTRL_NSTOP_MASK (0x3 << UART_TXCTRL_NSTOP_OFS)
  32. #define UART_RXCTRL_RXCNT_OFS (16)
  33. #define UART_RXCTRL_RXCNT_MASK (0x1F << UART_RXCTRL_RXCNT_OFS)
  34. #define UART_RXCTRL_RXEN_OFS (0)
  35. #define UART_RXCTRL_RXEN_MASK (0x1 << UART_RXCTRL_RXEN_OFS)
  36. #define UART_IE_TXIE_OFS (0)
  37. #define UART_IE_TXIE_MASK (0x1 << UART_IE_TXIE_OFS)
  38. #define UART_IE_RXIE_OFS (1)
  39. #define UART_IE_RXIE_MASK (0x1 << UART_IE_RXIE_OFS)
  40. #define UART_IP_TXIP_OFS (0)
  41. #define UART_IP_TXIP_MASK (0x1 << UART_IP_TXIP_OFS)
  42. #define UART_IP_RXIP_OFS (1)
  43. #define UART_IP_RXIP_MASK (0x1 << UART_IP_RXIP_OFS)
  44. typedef enum uart_stop_bit {
  45. UART_STOP_BIT_1 = 0,
  46. UART_STOP_BIT_2 = 1
  47. } UART_STOP_BIT;
  48. int32_t uart_init(UART_TypeDef* uart, uint32_t baudrate);
  49. int32_t uart_config_stopbit(UART_TypeDef* uart, UART_STOP_BIT stopbit);
  50. int32_t uart_write(UART_TypeDef* uart, uint8_t val);
  51. uint8_t uart_read(UART_TypeDef* uart);
  52. int32_t uart_set_tx_watermark(UART_TypeDef* uart, uint32_t watermark);
  53. int32_t uart_enable_txint(UART_TypeDef* uart);
  54. int32_t uart_disable_txint(UART_TypeDef* uart);
  55. int32_t uart_set_rx_watermark(UART_TypeDef* uart, uint32_t watermark);
  56. int32_t uart_enable_rxint(UART_TypeDef* uart);
  57. int32_t uart_disable_rxint(UART_TypeDef* uart);
  58. int32_t uart_get_status(UART_TypeDef* uart);
  59. int32_t uart_clear_status(UART_TypeDef* uart, uint32_t mask);
  60. #ifdef __cplusplus
  61. }
  62. #endif
  63. #endif /* _EVALSOC_UART_H */