1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero * 6*10465441SEvalZero * Change Logs: 7*10465441SEvalZero * Date Author Notes 8*10465441SEvalZero */ 9*10465441SEvalZero #ifndef __RT_HW_SERIAL_H__ 10*10465441SEvalZero #define __RT_HW_SERIAL_H__ 11*10465441SEvalZero 12*10465441SEvalZero #include <rthw.h> 13*10465441SEvalZero #include <rtthread.h> 14*10465441SEvalZero 15*10465441SEvalZero #include "s3c24x0.h" 16*10465441SEvalZero 17*10465441SEvalZero #define USTAT_RCV_READY 0x01 /* receive data ready */ 18*10465441SEvalZero #define USTAT_TXB_EMPTY 0x02 /* tx buffer empty */ 19*10465441SEvalZero #define BPS 115200 /* serial baudrate */ 20*10465441SEvalZero 21*10465441SEvalZero #define UART_RX_BUFFER_SIZE 64 22*10465441SEvalZero #define UART_TX_BUFFER_SIZE 64 23*10465441SEvalZero 24*10465441SEvalZero struct serial_int_rx 25*10465441SEvalZero { 26*10465441SEvalZero rt_uint8_t rx_buffer[UART_RX_BUFFER_SIZE]; 27*10465441SEvalZero rt_uint32_t read_index, save_index; 28*10465441SEvalZero }; 29*10465441SEvalZero 30*10465441SEvalZero struct serial_int_tx 31*10465441SEvalZero { 32*10465441SEvalZero rt_uint8_t tx_buffer[UART_TX_BUFFER_SIZE]; 33*10465441SEvalZero rt_uint32_t write_index, save_index; 34*10465441SEvalZero }; 35*10465441SEvalZero 36*10465441SEvalZero typedef struct uartport 37*10465441SEvalZero { 38*10465441SEvalZero volatile rt_uint32_t ulcon; 39*10465441SEvalZero volatile rt_uint32_t ucon; 40*10465441SEvalZero volatile rt_uint32_t ufcon; 41*10465441SEvalZero volatile rt_uint32_t umcon; 42*10465441SEvalZero volatile rt_uint32_t ustat; 43*10465441SEvalZero volatile rt_uint32_t urxb; 44*10465441SEvalZero volatile rt_uint32_t ufstat; 45*10465441SEvalZero volatile rt_uint32_t umstat; 46*10465441SEvalZero volatile rt_uint32_t utxh; 47*10465441SEvalZero volatile rt_uint32_t urxh; 48*10465441SEvalZero volatile rt_uint32_t ubrd; 49*10465441SEvalZero }uartport; 50*10465441SEvalZero 51*10465441SEvalZero struct serial_device 52*10465441SEvalZero { 53*10465441SEvalZero uartport* uart_device; 54*10465441SEvalZero 55*10465441SEvalZero /* rx structure */ 56*10465441SEvalZero struct serial_int_rx* int_rx; 57*10465441SEvalZero 58*10465441SEvalZero /* tx structure */ 59*10465441SEvalZero struct serial_int_tx* int_tx; 60*10465441SEvalZero }; 61*10465441SEvalZero 62*10465441SEvalZero rt_err_t rt_hw_serial_register(rt_device_t device, const char* name, rt_uint32_t flag, struct serial_device *serial); 63*10465441SEvalZero 64*10465441SEvalZero void rt_hw_serial_isr(rt_device_t device); 65*10465441SEvalZero 66*10465441SEvalZero #endif 67