xref: /nrf52832-nimble/rt-thread/libcpu/arm/s3c24x0/serial.h (revision 104654410c56c573564690304ae786df310c91fc)
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