1
#include <drivers/serial/uart_dev.h>
2
#include <drivers/serial/diag_serial.h>
3
#include <drivers/gpio/gpio.h>
4
#include <drivers/ttys.h>
6
#include "kernel/irq_lock.h"
7
#include "plib035_uart.h"
10
#include "util/ring_buff.h"
11
#include <embox/unit.h>
12
#include <kernel/time/ktime.h>
14
#include <drivers/serial/k1921vk035_io_request.h>
16
#define BAUDRATE OPTION_GET(NUMBER, baudrate)
17
#define RX_BUFFER_SIZE OPTION_GET(NUMBER, rx_buffer_size)
19
#define UART1_RX_IRQn 30
20
#define UART1_E_RT_IRQn 32
22
extern const struct uart_ops k1921vk035_uart_ops;
23
extern irq_return_t uart_io_request_handler(unsigned int irq_nr, void *data);
25
RING_BUFFER_DEF(rx_ring_buff, char, RX_BUFFER_SIZE);
27
static struct uart uart_io_request1 = {
28
.uart_ops = &k1921vk035_uart_ops,
29
.irq_num = UART1_RX_IRQn,
30
.base_addr = (uint32_t)UART1,
31
.irq_handler = uart_io_request_handler,
33
.baud_rate = BAUDRATE,
34
.uart_param_flags = UART_PARAM_FLAGS_8BIT_WORD | UART_PARAM_FLAGS_DEV_TYPE_UART |
35
UART_PARAM_FLAGS_USE_IRQ | UART_PARAM_FLAGS_2_STOP | UART_PARAM_FLAGS_PARITY_EVEN,
39
io_request_t io_request1 = {
40
.type = IO_REQUEST_MODE_NONE,
42
.rx_buff = &rx_ring_buff,
43
.uart = &uart_io_request1,
46
EMBOX_UNIT_INIT(io_request1_init);
48
static int io_request1_init() {
49
sem_init(&io_request1.semaphore, 0, 0);
51
int retval = uart_register(&uart_io_request1, &uart_io_request1.params) || uart_open(&uart_io_request1);
55
STATIC_IRQ_ATTACH(UART1_RX_IRQn, uart_io_request_handler, &io_request1);
56
STATIC_IRQ_ATTACH(UART1_E_RT_IRQn, uart_io_request_handler, &io_request1);