From c45f5a249089e1e453f358bcab052ddce8a8dff7 Mon Sep 17 00:00:00 2001 From: bernard Date: Fri, 18 Jul 2014 06:45:54 +0800 Subject: [Drivers] re-write serial framework. --- bsp/at91sam9260/drivers/usart.c | 24 ++++++++++------------- bsp/beaglebone/drivers/serial.c | 36 ++++++++++++++++------------------ bsp/frdm-k64f/board/drv_uart.c | 5 ++--- bsp/lpc408x/drivers/drv_uart.c | 10 ++++------ bsp/lpc43xx/drivers/drv_uart.c | 14 ++++++------- bsp/mb9bf506r/drivers/fm3_uart.c | 40 +++++++++++++++----------------------- bsp/realview-a8/drivers/serial.c | 13 +++++-------- bsp/rm48x50/drivers/drv_uart.c | 6 +++--- bsp/stm32f0x/drivers/usart.c | 10 +++------- bsp/xplorer4330/drivers/drv_uart.c | 16 +++++++-------- bsp/zynq7000/drivers/uart.c | 11 ++++------- 11 files changed, 77 insertions(+), 108 deletions(-) (limited to 'bsp') diff --git a/bsp/at91sam9260/drivers/usart.c b/bsp/at91sam9260/drivers/usart.c index 7b95ca0e4d..c47d378cb8 100644 --- a/bsp/at91sam9260/drivers/usart.c +++ b/bsp/at91sam9260/drivers/usart.c @@ -95,7 +95,7 @@ void rt_at91_usart_handler(int vector, void *param) return; } rt_interrupt_enter(); - rt_hw_serial_isr(dev); + rt_hw_serial_isr((struct rt_serial_device *)dev, RT_SERIAL_EVENT_RX_IND); rt_interrupt_leave(); } @@ -231,7 +231,6 @@ static const struct rt_uart_ops at91_usart_ops = #if defined(RT_USING_DBGU) static struct rt_serial_device serial_dbgu; -static struct serial_ringbuffer dbgu_int_rx; struct at91_uart dbgu = { DBGU, AT91_ID_SYS @@ -241,7 +240,6 @@ struct at91_uart dbgu = { #if defined(RT_USING_UART0) static struct rt_serial_device serial0; -static struct serial_ringbuffer uart0_int_rx; struct at91_uart uart0 = { UART0, AT91SAM9260_ID_US0 @@ -250,7 +248,6 @@ struct at91_uart uart0 = { #if defined(RT_USING_UART1) static struct rt_serial_device serial1; -static struct serial_ringbuffer uart1_int_rx; struct at91_uart uart1 = { UART1, AT91SAM9260_ID_US1 @@ -259,7 +256,6 @@ struct at91_uart uart1 = { #if defined(RT_USING_UART2) static struct rt_serial_device serial2; -static struct serial_ringbuffer uart2_int_rx; struct at91_uart uart2 = { UART2, AT91SAM9260_ID_US2 @@ -268,7 +264,6 @@ struct at91_uart uart2 = { #if defined(RT_USING_UART3) static struct rt_serial_device serial3; -static struct serial_ringbuffer uart3_int_rx; struct at91_uart uart3 = { UART3, AT91SAM9260_ID_US3 @@ -337,29 +332,29 @@ void rt_hw_uart_init(void) #if defined(RT_USING_DBGU) serial_dbgu.ops = &at91_usart_ops; - serial_dbgu.int_rx = &dbgu_int_rx; serial_dbgu.config.baud_rate = BAUD_RATE_115200; serial_dbgu.config.bit_order = BIT_ORDER_LSB; serial_dbgu.config.data_bits = DATA_BITS_8; serial_dbgu.config.parity = PARITY_NONE; serial_dbgu.config.stop_bits = STOP_BITS_1; serial_dbgu.config.invert = NRZ_NORMAL; + serial_dbgu.config.bufsz = RT_SERIAL_RB_BUFSZ; /* register vcom device */ rt_hw_serial_register(&serial_dbgu, "dbgu", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &dbgu); #endif #if defined(RT_USING_UART0) serial0.ops = &at91_usart_ops; - serial0.int_rx = &uart0_int_rx; serial0.config.baud_rate = BAUD_RATE_115200; serial0.config.bit_order = BIT_ORDER_LSB; serial0.config.data_bits = DATA_BITS_8; serial0.config.parity = PARITY_NONE; serial0.config.stop_bits = STOP_BITS_1; serial0.config.invert = NRZ_NORMAL; + serial0.config.bufsz = RT_SERIAL_RB_BUFSZ; /* register vcom device */ rt_hw_serial_register(&serial0, "uart0", @@ -379,10 +374,11 @@ void rt_hw_uart_init(void) serial1.config.parity = PARITY_NONE; serial1.config.stop_bits = STOP_BITS_1; serial1.config.invert = NRZ_NORMAL; + serial1.config.bufsz = RT_SERIAL_RB_BUFSZ; /* register vcom device */ rt_hw_serial_register(&serial1, "uart1", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart1); rt_hw_interrupt_install(uart1.irq, rt_at91_usart_handler, (void *)&(serial1.parent), "UART1"); @@ -391,17 +387,17 @@ void rt_hw_uart_init(void) #if defined(RT_USING_UART2) serial2.ops = &at91_usart_ops; - serial2.int_rx = &uart2_int_rx; serial2.config.baud_rate = BAUD_RATE_115200; serial2.config.bit_order = BIT_ORDER_LSB; serial2.config.data_bits = DATA_BITS_8; serial2.config.parity = PARITY_NONE; serial2.config.stop_bits = STOP_BITS_1; serial2.config.invert = NRZ_NORMAL; + serial2.config.bufsz = RT_SERIAL_RB_BUFSZ; /* register vcom device */ rt_hw_serial_register(&serial2, "uart2", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart2); rt_hw_interrupt_install(uart2.irq, rt_at91_usart_handler, (void *)&(serial2.parent), "UART2"); @@ -410,17 +406,17 @@ void rt_hw_uart_init(void) #if defined(RT_USING_UART3) serial3.ops = &at91_usart_ops; - serial3.int_rx = &uart3_int_rx; serial3.config.baud_rate = BAUD_RATE_115200; serial3.config.bit_order = BIT_ORDER_LSB; serial3.config.data_bits = DATA_BITS_8; serial3.config.parity = PARITY_NONE; serial3.config.stop_bits = STOP_BITS_1; serial3.config.invert = NRZ_NORMAL; + serial3.config.bufsz = RT_SERIAL_RB_BUFSZ; /* register vcom device */ rt_hw_serial_register(&serial3, "uart3", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart3); rt_hw_interrupt_install(uart3.irq, rt_at91_usart_handler, (void *)&(serial3.parent), "UART3"); diff --git a/bsp/beaglebone/drivers/serial.c b/bsp/beaglebone/drivers/serial.c index d07621080b..8dcd389123 100644 --- a/bsp/beaglebone/drivers/serial.c +++ b/bsp/beaglebone/drivers/serial.c @@ -41,7 +41,7 @@ static void am33xx_uart_isr(int irqno, void* param) if ((iir & (0x02 << 1)) || (iir & (0x6 << 1))) { - rt_hw_serial_isr(serial); + rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND); } } @@ -165,7 +165,6 @@ static const struct rt_uart_ops am33xx_uart_ops = /* UART device driver structure */ #ifdef RT_USING_UART0 -struct serial_ringbuffer uart0_int_rx; struct am33xx_uart uart0 = { UART0_BASE, @@ -175,7 +174,6 @@ struct rt_serial_device serial0; #endif #ifdef RT_USING_UART1 -struct serial_ringbuffer uart1_int_rx; struct am33xx_uart uart1 = { UART1_BASE, @@ -185,7 +183,6 @@ struct rt_serial_device serial1; #endif #ifdef RT_USING_UART2 -struct serial_ringbuffer uart2_int_rx; struct am33xx_uart uart2 = { UART2_BASE, @@ -195,7 +192,6 @@ struct rt_serial_device serial2; #endif #ifdef RT_USING_UART3 -struct serial_ringbuffer uart3_int_rx; struct am33xx_uart uart3 = { UART3_BASE, @@ -205,7 +201,6 @@ struct rt_serial_device serial3; #endif #ifdef RT_USING_UART4 -struct serial_ringbuffer uart4_int_rx; struct am33xx_uart uart4 = { UART4_BASE, @@ -215,7 +210,6 @@ struct rt_serial_device serial4; #endif #ifdef RT_USING_UART5 -struct serial_ringbuffer uart5_int_rx; struct am33xx_uart uart5 = { UART5_BASE, @@ -359,8 +353,9 @@ int rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; + serial0.ops = &am33xx_uart_ops; - serial0.int_rx = &uart0_int_rx; serial0.config = config; /* enable RX interrupt */ UART_IER_REG(uart0.base) = 0x01; @@ -370,7 +365,7 @@ int rt_hw_serial_init(void) rt_hw_interrupt_mask(uart0.irq); /* register UART0 device */ rt_hw_serial_register(&serial0, "uart0", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart0); #endif @@ -381,8 +376,9 @@ int rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; + serial1.ops = &am33xx_uart_ops; - serial1.int_rx = &uart1_int_rx; serial1.config = config; /* enable RX interrupt */ UART_IER_REG(uart1.base) = 0x01; @@ -392,7 +388,7 @@ int rt_hw_serial_init(void) rt_hw_interrupt_mask(uart1.irq); /* register UART0 device */ rt_hw_serial_register(&serial1, "uart1", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart1); #endif @@ -403,8 +399,9 @@ int rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; + serial2.ops = &am33xx_uart_ops; - serial2.int_rx = &uart2_int_rx; serial2.config = config; /* enable RX interrupt */ UART_IER_REG(uart2.base) = 0x01; @@ -414,7 +411,7 @@ int rt_hw_serial_init(void) rt_hw_interrupt_mask(uart2.irq); /* register UART2 device */ rt_hw_serial_register(&serial2, "uart2", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart2); #endif @@ -425,8 +422,9 @@ int rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; + serial3.ops = &am33xx_uart_ops; - serial3.int_rx = &uart_3_int_rx; serial3.config = config; /* enable RX interrupt */ UART_IER_REG(uart3.base) = 0x01; @@ -436,7 +434,7 @@ int rt_hw_serial_init(void) rt_hw_interrupt_mask(uart3.irq); /* register UART3 device */ rt_hw_serial_register(&serial3, "uart3", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart3); #endif @@ -447,9 +445,9 @@ int rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial4.ops = &am33xx_uart_ops; - serial4.int_rx = &uart4_int_rx; serial4.config = config; /* enable RX interrupt */ UART_IER_REG(uart4.base) = 0x01; @@ -459,7 +457,7 @@ int rt_hw_serial_init(void) rt_hw_interrupt_mask(uart4.irq); /* register UART4 device */ rt_hw_serial_register(&serial4, "uart4", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart4); #endif @@ -470,9 +468,9 @@ int rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial5.ops = &am33xx_uart_ops; - serial5.int_rx = &uart5_int_rx; serial5.config = config; /* enable RX interrupt */ UART_IER_REG(uart5.base) = 0x01; @@ -482,7 +480,7 @@ int rt_hw_serial_init(void) rt_hw_interrupt_mask(uart5.irq); /* register UART4 device */ rt_hw_serial_register(&serial5, "uart5", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &uart5); #endif diff --git a/bsp/frdm-k64f/board/drv_uart.c b/bsp/frdm-k64f/board/drv_uart.c index 7813b21ad7..ac9ef8d51a 100644 --- a/bsp/frdm-k64f/board/drv_uart.c +++ b/bsp/frdm-k64f/board/drv_uart.c @@ -16,7 +16,6 @@ #include "drv_uart.h" static struct rt_serial_device _k64_serial; //abstracted serial for RTT -static struct serial_ringbuffer _k64_int_rx; //UART send buffer area struct k64_serial_device { @@ -231,7 +230,7 @@ static const struct rt_uart_ops _k64_ops = void UART0_RX_TX_IRQHandler(void) { rt_interrupt_enter(); - rt_hw_serial_isr((struct rt_serial_device*)&_k64_serial); + rt_hw_serial_isr((struct rt_serial_device*)&_k64_serial, RT_SERIAL_EVENT_RX_IND); rt_interrupt_leave(); } @@ -247,9 +246,9 @@ void rt_hw_uart_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; _k64_serial.ops = &_k64_ops; - _k64_serial.int_rx = &_k64_int_rx; _k64_serial.config = config; rt_hw_serial_register(&_k64_serial, "uart0", diff --git a/bsp/lpc408x/drivers/drv_uart.c b/bsp/lpc408x/drivers/drv_uart.c index 37213c0474..0b3756a5b9 100644 --- a/bsp/lpc408x/drivers/drv_uart.c +++ b/bsp/lpc408x/drivers/drv_uart.c @@ -118,7 +118,6 @@ static const struct rt_uart_ops lpc_uart_ops = #if defined(RT_USING_UART0) /* UART0 device driver structure */ -struct serial_ringbuffer uart0_int_rx; struct lpc_uart uart0 = { UART_0, @@ -158,7 +157,7 @@ void UART0_IRQHandler(void) // Receive Data Available or Character time-out if ((tmp == UART_IIR_INTID_RDA) || (tmp == UART_IIR_INTID_CTI)) { - rt_hw_serial_isr(&serial0); + rt_hw_serial_isr(&serial0, RT_SERIAL_EVENT_RX_IND); } /* leave interrupt */ @@ -167,7 +166,6 @@ void UART0_IRQHandler(void) #endif #if defined(RT_USING_UART2) /* UART2 device driver structure */ -struct serial_ringbuffer uart2_int_rx; struct lpc_uart uart2 = { UART_2, @@ -207,7 +205,7 @@ void UART2_IRQHandler(void) // Receive Data Available or Character time-out if ((tmp == UART_IIR_INTID_RDA) || (tmp == UART_IIR_INTID_CTI)) { - rt_hw_serial_isr(&serial2); + rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); } /* leave interrupt */ @@ -227,9 +225,9 @@ void rt_hw_uart_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial0.ops = &lpc_uart_ops; - serial0.int_rx = &uart0_int_rx; serial0.config = config; /* @@ -259,9 +257,9 @@ void rt_hw_uart_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial2.ops = &lpc_uart_ops; - serial2.int_rx = &uart2_int_rx; serial2.config = config; /* diff --git a/bsp/lpc43xx/drivers/drv_uart.c b/bsp/lpc43xx/drivers/drv_uart.c index 867ee32bd5..58a385b8b1 100644 --- a/bsp/lpc43xx/drivers/drv_uart.c +++ b/bsp/lpc43xx/drivers/drv_uart.c @@ -97,7 +97,6 @@ static const struct rt_uart_ops lpc_uart_ops = #if defined(RT_USING_UART0) /* UART0 device driver structure */ -struct serial_ringbuffer uart0_int_rx; struct lpc_uart uart0 = { LPC_USART0, @@ -136,7 +135,7 @@ void UART0_IRQHandler(void) /* read the data to buffer */ while (uart->USART->LSR & UART_LSR_RDR) { - rt_hw_serial_isr(&serial0); + rt_hw_serial_isr(&serial0, RT_SERIAL_EVENT_RX_IND); } break; @@ -150,7 +149,6 @@ void UART0_IRQHandler(void) #endif #if defined(RT_USING_UART2) /* UART2 device driver structure */ -struct serial_ringbuffer uart2_int_rx; struct lpc_uart uart2 = { LPC_USART2, @@ -189,7 +187,7 @@ void UART2_IRQHandler(void) /* read the data to buffer */ while (uart->USART->LSR & UART_LSR_RDR) { - rt_hw_serial_isr(&serial0); + rt_hw_serial_isr(&serial0, RT_SERIAL_EVENT_RX_IND); } break; @@ -214,9 +212,9 @@ void rt_hw_uart_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial0.ops = &lpc_uart_ops; - serial0.int_rx = &uart0_int_rx; serial0.config = config; /* Enable GPIO register interface clock */ @@ -256,7 +254,7 @@ void rt_hw_uart_init(void) /* register UART1 device */ rt_hw_serial_register(&serial0, "uart0", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif #ifdef RT_USING_UART2 @@ -267,9 +265,9 @@ void rt_hw_uart_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial2.ops = &lpc_uart_ops; - serial2.int_rx = &uart2_int_rx; serial2.config = config; /* Enable GPIO register interface clock */ @@ -309,7 +307,7 @@ void rt_hw_uart_init(void) /* register UART1 device */ rt_hw_serial_register(&serial2, "uart2", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif } diff --git a/bsp/mb9bf506r/drivers/fm3_uart.c b/bsp/mb9bf506r/drivers/fm3_uart.c index 51fb820ed8..2c82afd288 100644 --- a/bsp/mb9bf506r/drivers/fm3_uart.c +++ b/bsp/mb9bf506r/drivers/fm3_uart.c @@ -20,7 +20,6 @@ #if (defined(RT_USING_UART0_0) || defined(RT_USING_UART0_1)) /* UART0 device driver structure */ -struct serial_ringbuffer uart0_int_rx; struct uart03_device uart0 = { FM3_MFS0_UART, @@ -33,7 +32,7 @@ void MFS0RX_IRQHandler(void) { /* enter interrupt */ rt_interrupt_enter(); - rt_hw_serial_isr(&serial0); + rt_hw_serial_isr(&serial0, RT_SERIAL_EVENT_RX_IND); /* leave interrupt */ rt_interrupt_leave(); } @@ -41,7 +40,6 @@ void MFS0RX_IRQHandler(void) #if (defined(RT_USING_UART1_0) || defined(RT_USING_UART1_1)) /* UART1 device driver structure */ -struct serial_ringbuffer uart1_int_rx; struct uart03_device uart1 = { FM3_MFS1_UART, @@ -54,7 +52,7 @@ void MFS1RX_IRQHandler(void) { /* enter interrupt */ rt_interrupt_enter(); - rt_hw_serial_isr(&serial1); + rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); /* leave interrupt */ rt_interrupt_leave(); } @@ -62,7 +60,6 @@ void MFS1RX_IRQHandler(void) #if (defined(RT_USING_UART2_0) || defined(RT_USING_UART2_1) || defined(RT_USING_UART2_2)) /* UART2 device driver structure */ -struct serial_ringbuffer uart2_int_rx; struct uart03_device uart2 = { FM3_MFS2_UART, @@ -75,7 +72,7 @@ void MFS2RX_IRQHandler(void) { /* enter interrupt */ rt_interrupt_enter(); - rt_hw_serial_isr(&serial2); + rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); /* leave interrupt */ rt_interrupt_leave(); } @@ -83,7 +80,6 @@ void MFS2RX_IRQHandler(void) #if (defined(RT_USING_UART3_0) || defined(RT_USING_UART3_1) || defined(RT_USING_UART3_2)) /* UART3 device driver structure */ -struct serial_ringbuffer uart3_int_rx; struct uart03_device uart3 = { FM3_MFS3_UART, @@ -96,7 +92,7 @@ void MFS3RX_IRQHandler(void) { /* enter interrupt */ rt_interrupt_enter(); - rt_hw_serial_isr(&serial3); + rt_hw_serial_isr(&serial3, RT_SERIAL_EVENT_RX_IND); /* leave interrupt */ rt_interrupt_leave(); } @@ -104,7 +100,6 @@ void MFS3RX_IRQHandler(void) #if (defined(RT_USING_UART4_0) || defined(RT_USING_UART4_1) || defined(RT_USING_UART4_2)) /* UART4 device driver structure */ -struct serial_ringbuffer uart4_int_rx; struct uart47_device uart4 = { FM3_MFS4_UART, @@ -118,7 +113,7 @@ void MFS4RX_IRQHandler(void) { /* enter interrupt */ rt_interrupt_enter(); - rt_hw_serial_isr(&serial4); + rt_hw_serial_isr(&serial4, RT_SERIAL_EVENT_RX_IND); /* leave interrupt */ rt_interrupt_leave(); } @@ -126,7 +121,6 @@ void MFS4RX_IRQHandler(void) #if (defined(RT_USING_UART5_0) || defined(RT_USING_UART5_1) || defined(RT_USING_UART5_2)) /* UART5 device driver structure */ -struct serial_ringbuffer uart5_int_rx; struct uart47_device uart5 = { FM3_MFS5_UART, @@ -140,7 +134,7 @@ void MFS5RX_IRQHandler(void) { /* enter interrupt */ rt_interrupt_enter(); - rt_hw_serial_isr(&serial5); + rt_hw_serial_isr(&serial5, RT_SERIAL_EVENT_RX_IND); /* leave interrupt */ rt_interrupt_leave(); } @@ -148,7 +142,6 @@ void MFS5RX_IRQHandler(void) #if (defined(RT_USING_UART6_0) || defined(RT_USING_UART6_1)) /* UART6 device driver structure */ -struct serial_ringbuffer uart6_int_rx; struct uart47_device uart6 = { FM3_MFS6_UART, @@ -162,7 +155,7 @@ void MFS6RX_IRQHandler(void) { /* enter interrupt */ rt_interrupt_enter(); - rt_hw_serial_isr(&serial6); + rt_hw_serial_isr(&serial6, RT_SERIAL_EVENT_RX_IND); /* leave interrupt */ rt_interrupt_leave(); } @@ -170,7 +163,6 @@ void MFS6RX_IRQHandler(void) #if (defined(RT_USING_UART7_0) || defined(RT_USING_UART7_1)) /* UART7 device driver structure */ -struct serial_ringbuffer uart7_int_rx; struct uart47_device uart7 = { FM3_MFS7_UART, @@ -184,7 +176,7 @@ void MFS7RX_IRQHandler(void) { /* enter interrupt */ rt_interrupt_enter(); - rt_hw_serial_isr(&serial7); + rt_hw_serial_isr(&serial7, RT_SERIAL_EVENT_RX_IND); /* leave interrupt */ rt_interrupt_leave(); } @@ -796,9 +788,9 @@ void rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial0.ops = &uart03_ops; - serial0.int_rx = &uart0_int_rx; serial0.config = config; /* register UART0 device */ @@ -814,9 +806,9 @@ void rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial1.ops = &uart03_ops; - serial1.int_rx = &uart1_int_rx; serial1.config = config; /* register UART1 device */ @@ -833,9 +825,9 @@ void rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial2.ops = &uart03_ops; - serial2.int_rx = &uart2_int_rx; serial2.config = config; /* register UART2 device */ @@ -852,9 +844,9 @@ void rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial3.ops = &uart03_ops; - serial3.int_rx = &uart3_int_rx; serial3.config = config; /* register UART3 device */ @@ -871,9 +863,9 @@ void rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial4.ops = &uart47_ops; - serial4.int_rx = &uart4_int_rx; serial4.config = config; /* register UART4 device */ @@ -890,9 +882,9 @@ void rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial5.ops = &uart47_ops; - serial5.int_rx = &uart5_int_rx; serial5.config = config; /* register UART5 device */ @@ -909,9 +901,9 @@ void rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial6.ops = &uart47_ops; - serial6.int_rx = &uart6_int_rx; serial6.config = config; /* register UART6 device */ @@ -928,9 +920,9 @@ void rt_hw_serial_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial7.ops = &uart47_ops; - serial7.int_rx = &uart7_int_rx; serial7.config = config; /* register UART7 device */ diff --git a/bsp/realview-a8/drivers/serial.c b/bsp/realview-a8/drivers/serial.c index 0af03b2759..011d10fb99 100644 --- a/bsp/realview-a8/drivers/serial.c +++ b/bsp/realview-a8/drivers/serial.c @@ -58,7 +58,7 @@ static void rt_hw_uart_isr(int irqno, void *param) { struct rt_serial_device *serial = (struct rt_serial_device *)param; - rt_hw_serial_isr(serial); + rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND); } static rt_err_t uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) @@ -131,7 +131,6 @@ static const struct rt_uart_ops _uart_ops = #ifdef RT_USING_UART0 /* UART device driver structure */ -static struct serial_ringbuffer _uart0_int_rx; static struct hw_uart_device _uart0_device = { REALVIEW_UART0_BASE, @@ -142,7 +141,6 @@ static struct rt_serial_device _serial0; #ifdef RT_USING_UART1 /* UART1 device driver structure */ -static struct serial_ringbuffer _uart1_int_rx; static struct hw_uart_device _uart1_device = { REALVIEW_UART1_BASE, @@ -167,7 +165,8 @@ int rt_hw_uart_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; - + config.bufsz = RT_SERIAL_RB_BUFSZ; + #ifdef RT_USING_UART0 uart = &_uart0_device; #ifdef RT_USING_VMM @@ -175,12 +174,11 @@ int rt_hw_uart_init(void) #endif _serial0.ops = &_uart_ops; - _serial0.int_rx = &_uart0_int_rx; _serial0.config = config; /* register UART1 device */ rt_hw_serial_register(&_serial0, "uart0", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); /* enable Rx and Tx of UART */ UART_CR(uart->hw_base) = (1 << 0) | (1 << 8) | (1 << 9); @@ -192,12 +190,11 @@ int rt_hw_uart_init(void) uart->hw_base = vmm_find_iomap("UART1"); #endif _serial1.ops = &_uart_ops; - _serial1.int_rx = &_uart1_int_rx; _serial1.config = config; /* register UART1 device */ rt_hw_serial_register(&_serial1, "uart1", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, uart); + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); /* enable Rx and Tx of UART */ UART_CR(uart->hw_base) = (1 << 0) | (1 << 8) | (1 << 9); #endif diff --git a/bsp/rm48x50/drivers/drv_uart.c b/bsp/rm48x50/drivers/drv_uart.c index 3f0237e648..d42a52bc6b 100644 --- a/bsp/rm48x50/drivers/drv_uart.c +++ b/bsp/rm48x50/drivers/drv_uart.c @@ -178,11 +178,10 @@ static const struct rt_uart_ops _sci_ops = static void _irq_wrapper(int vector, void *param) { - rt_hw_serial_isr((struct rt_serial_device*)param); + rt_hw_serial_isr((struct rt_serial_device*)param, RT_SERIAL_EVENT_RX_IND); } static struct rt_serial_device _sci2_serial; -static struct serial_ringbuffer _sci2_int_rx; void rt_hw_uart_init(void) { @@ -195,9 +194,9 @@ void rt_hw_uart_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; _sci2_serial.ops = &_sci_ops; - _sci2_serial.int_rx = &_sci2_int_rx; _sci2_serial.config = config; rt_hw_serial_register(&_sci2_serial, "sci2", @@ -208,3 +207,4 @@ void rt_hw_uart_init(void) rt_hw_interrupt_install(SCI_INT_VEC, _irq_wrapper, &_sci2_serial, "sci2"); rt_hw_interrupt_umask(SCI_INT_VEC); } + diff --git a/bsp/stm32f0x/drivers/usart.c b/bsp/stm32f0x/drivers/usart.c index f7784ce556..7a7d3a8230 100644 --- a/bsp/stm32f0x/drivers/usart.c +++ b/bsp/stm32f0x/drivers/usart.c @@ -134,7 +134,6 @@ static const struct rt_uart_ops stm32_uart_ops = #if defined(RT_USING_UART1) /* UART1 device driver structure */ -struct serial_ringbuffer uart1_int_rx; struct stm32_uart uart1 = { USART1, @@ -152,7 +151,7 @@ void USART1_IRQHandler(void) rt_interrupt_enter(); if(USART_GetITStatus(uart->uart_device, USART_IT_RXNE) != RESET) { - rt_hw_serial_isr(&serial1); + rt_hw_serial_isr(&serial1, RT_SERIAL_EVENT_RX_IND); /* clear interrupt */ USART_ClearITPendingBit(uart->uart_device, USART_IT_RXNE); } @@ -169,7 +168,6 @@ void USART1_IRQHandler(void) #if defined(RT_USING_UART2) /* UART2 device driver structure */ -struct serial_ringbuffer uart2_int_rx; struct stm32_uart uart2 = { USART2, @@ -187,7 +185,7 @@ void USART2_IRQHandler(void) rt_interrupt_enter(); if(USART_GetITStatus(uart->uart_device, USART_IT_RXNE) != RESET) { - rt_hw_serial_isr(&serial2); + rt_hw_serial_isr(&serial2, RT_SERIAL_EVENT_RX_IND); /* clear interrupt */ USART_ClearITPendingBit(uart->uart_device, USART_IT_RXNE); } @@ -281,14 +279,13 @@ void rt_hw_usart_init(void) config.baud_rate = BAUD_RATE_115200; serial1.ops = &stm32_uart_ops; - serial1.int_rx = &uart1_int_rx; serial1.config = config; NVIC_Configuration(&uart1); /* register UART1 device */ rt_hw_serial_register(&serial1, "uart1", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif /* RT_USING_UART1 */ @@ -297,7 +294,6 @@ void rt_hw_usart_init(void) config.baud_rate = BAUD_RATE_115200; serial2.ops = &stm32_uart_ops; - serial2.int_rx = &uart2_int_rx; serial2.config = config; NVIC_Configuration(&uart2); diff --git a/bsp/xplorer4330/drivers/drv_uart.c b/bsp/xplorer4330/drivers/drv_uart.c index c8242277b2..4fa489ea06 100644 --- a/bsp/xplorer4330/drivers/drv_uart.c +++ b/bsp/xplorer4330/drivers/drv_uart.c @@ -97,7 +97,6 @@ static const struct rt_uart_ops lpc_uart_ops = #if defined(RT_USING_UART0) /* UART0 device driver structure */ -struct serial_ringbuffer uart0_int_rx; struct lpc_uart uart0 = { LPC_USART0, @@ -136,7 +135,7 @@ void UART0_IRQHandler(void) /* read the data to buffer */ while (uart->USART->LSR & UART_LSR_RDR) { - rt_hw_serial_isr(&serial0); + rt_hw_serial_isr(&serial0, RT_SERIAL_EVENT_RX_IND); } break; @@ -150,7 +149,6 @@ void UART0_IRQHandler(void) #endif #if defined(RT_USING_UART2) /* UART2 device driver structure */ -struct serial_ringbuffer uart2_int_rx; struct lpc_uart uart2 = { LPC_USART2, @@ -189,7 +187,7 @@ void UART2_IRQHandler(void) /* read the data to buffer */ while (uart->USART->LSR & UART_LSR_RDR) { - rt_hw_serial_isr(&serial0); + rt_hw_serial_isr(&serial0, RT_SERIAL_EVENT_RX_IND); } break; @@ -214,9 +212,9 @@ void rt_hw_uart_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; - + config.bufsz = RT_SERIAL_RB_BUFSZ; + serial0.ops = &lpc_uart_ops; - serial0.int_rx = &uart0_int_rx; serial0.config = config; /* Enable GPIO register interface clock */ @@ -256,7 +254,7 @@ void rt_hw_uart_init(void) /* register UART1 device */ rt_hw_serial_register(&serial0, "uart0", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif #ifdef RT_USING_UART2 @@ -267,9 +265,9 @@ void rt_hw_uart_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; serial2.ops = &lpc_uart_ops; - serial2.int_rx = &uart2_int_rx; serial2.config = config; /* Enable GPIO register interface clock */ @@ -309,7 +307,7 @@ void rt_hw_uart_init(void) /* register UART1 device */ rt_hw_serial_register(&serial2, "uart2", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, uart); #endif } diff --git a/bsp/zynq7000/drivers/uart.c b/bsp/zynq7000/drivers/uart.c index f10c48d330..df4250b399 100644 --- a/bsp/zynq7000/drivers/uart.c +++ b/bsp/zynq7000/drivers/uart.c @@ -98,7 +98,7 @@ static void rt_hw_uart_isr(int irqno, void *param) { struct rt_serial_device *serial = (struct rt_serial_device *)param; - rt_hw_serial_isr(serial); + rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND); } static rt_err_t uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg) @@ -267,9 +267,7 @@ static struct hw_uart_device _uart_device1 = .txmio = (rt_uint32_t*)(Zynq7000_SLCR_BASE+0x07C0), /* MIO48 */ }; -static struct serial_ringbuffer _uart_int_rx0; static struct rt_serial_device _serial0; -static struct serial_ringbuffer _uart_int_rx1; static struct rt_serial_device _serial1; int rt_hw_uart_init(void) @@ -282,21 +280,20 @@ int rt_hw_uart_init(void) config.parity = PARITY_NONE; config.stop_bits = STOP_BITS_1; config.invert = NRZ_NORMAL; + config.bufsz = RT_SERIAL_RB_BUFSZ; _serial0.ops = &_uart_ops; - _serial0.int_rx = &_uart_int_rx0; _serial0.config = config; _serial1.ops = &_uart_ops; - _serial1.int_rx = &_uart_int_rx1; _serial1.config = config; /* register uart device */ rt_hw_serial_register(&_serial0, "uart0", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &_uart_device0); rt_hw_serial_register(&_serial1, "uart1", - RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM, + RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX, &_uart_device1); return 0; } -- cgit v1.3.1