embox
51 строка · 1.3 Кб
1/**
2* @file
3* @date 04 aug 2015
4* @author: Anton Bondarev
5*/
6
7#include <drivers/common/memory.h>8#include <drivers/serial/uart_dev.h>9#include <drivers/ttys.h>10#include <embox/unit.h>11#include <framework/mod/options.h>12#include <kernel/irq.h>13#include <util/macro.h>14
15EMBOX_UNIT_INIT(uart_init);16
17#define UART_BASE OPTION_GET(NUMBER, base_addr)18#define IRQ_NUM OPTION_GET(NUMBER, irq_num)19#define BAUD_RATE OPTION_GET(NUMBER, baud_rate)20#define TTY_NAME ttyS121
22extern irq_return_t uart_irq_handler(unsigned int irq_nr, void *data);23
24extern const struct uart_ops mikron_usart_ops;25
26static struct uart uart1 = {27.dev_name = MACRO_STRING(TTY_NAME),28.uart_ops = &mikron_usart_ops,29.irq_num = IRQ_NUM,30.base_addr = UART_BASE,31.params = ((struct uart_params){32.baud_rate = BAUD_RATE,33.uart_param_flags = UART_PARAM_FLAGS_8BIT_WORD34| UART_PARAM_FLAGS_USE_IRQ,35}),36};37
38static const struct uart_params uart_defparams = {39.baud_rate = BAUD_RATE,40.uart_param_flags = UART_PARAM_FLAGS_8BIT_WORD | UART_PARAM_FLAGS_USE_IRQ,41};42
43static int uart_init(void) {44return uart_register(&uart1, &uart_defparams);45}
46
47PERIPH_MEMORY_DEFINE(mikron_usart, UART_BASE, 0x30);48
49STATIC_IRQ_ATTACH(IRQ_NUM, uart_irq_handler, &uart1);50
51TTYS_DEF(TTY_NAME, &uart1);52