embox
1/**
2* @file
3*
4* @date Mar 11, 2023
5* @author Anton Bondarev
6*/
7
8#include <kernel/irq.h>
9
10#include <util/macro.h>
11
12#include <drivers/serial/uart_dev.h>
13#include <drivers/ttys.h>
14
15#include <drivers/common/memory.h>
16
17#include <framework/mod/options.h>
18
19#define UART_BASE OPTION_GET(NUMBER, base_addr)
20#define IRQ_NUM OPTION_GET(NUMBER, irq_num)
21#define BAUD_RATE OPTION_GET(NUMBER,baud_rate)
22
23#define TTY_NAME ttyS0
24
25extern irq_return_t uart_irq_handler(unsigned int irq_nr, void *data);
26
27extern const struct uart_ops muart_uart_uart_ops;
28
29static struct uart muart_uart_ttyS0 = {
30.uart_ops = &muart_uart_uart_ops,
31.irq_num = IRQ_NUM,
32.base_addr = UART_BASE,
33.params = {
34.baud_rate = BAUD_RATE,
35.uart_param_flags = UART_PARAM_FLAGS_8BIT_WORD | UART_PARAM_FLAGS_USE_IRQ,
36},
37};
38
39PERIPH_MEMORY_DEFINE(muart_uart, UART_BASE, 0x1000);
40
41STATIC_IRQ_ATTACH(IRQ_NUM, uart_irq_handler, &muart_uart_ttyS0);
42
43TTYS_DEF(TTY_NAME, &muart_uart_ttyS0);
44