diff options
author | Vipul Nayyar <nayyar_vipul@yahoo.com> | 2013-07-26 20:23:39 +0530 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-29 09:07:19 +0200 |
commit | 2bdcf4fd511941dab9ef0db0790363dedfaf622f (patch) | |
tree | bd5fd57c1b34098691a332fb2012506795617b0e /c/src/lib/libbsp/i386/shared/comm | |
parent | score: Move object content to public API (diff) | |
download | rtems-2bdcf4fd511941dab9ef0db0790363dedfaf622f.tar.bz2 |
Updated legacy code in i386 pc386
Diffstat (limited to 'c/src/lib/libbsp/i386/shared/comm')
-rw-r--r-- | c/src/lib/libbsp/i386/shared/comm/tty_drv.c | 93 |
1 files changed, 34 insertions, 59 deletions
diff --git a/c/src/lib/libbsp/i386/shared/comm/tty_drv.c b/c/src/lib/libbsp/i386/shared/comm/tty_drv.c index aafb02a58f..16a40df465 100644 --- a/c/src/lib/libbsp/i386/shared/comm/tty_drv.c +++ b/c/src/lib/libbsp/i386/shared/comm/tty_drv.c @@ -27,63 +27,19 @@ #include <termios.h> #include <uart.h> #include <libcpu/cpuModel.h> +#include "tty_drv.h" int BSP_poll_read(int); /* Internal routines */ static int tty1_conSetAttr( int minor, const struct termios *t); static int tty2_conSetAttr( int minor, const struct termios *t); -static void isr_on(const rtems_irq_connect_data *); -static void isr_off(const rtems_irq_connect_data *); -static int isr_is_on(const rtems_irq_connect_data *); extern BSP_polling_getchar_function_type BSP_poll_char; extern int BSPConsolePort; extern void rtems_set_waiting_id_comx( int port, rtems_id id, rtems_event_set event ); /* - * Interrupt structure for tty1 - */ -static rtems_irq_connect_data tty1_isr_data = -{ - BSP_UART_COM1_IRQ, - BSP_uart_termios_isr_com1, - 0, - isr_on, - isr_off, - isr_is_on}; - -/* - * Interrupt structure for tty2 - */ -static rtems_irq_connect_data tty2_isr_data = -{ - BSP_UART_COM2_IRQ, - BSP_uart_termios_isr_com2, - 0, - isr_on, - isr_off, - isr_is_on}; - -static void -isr_on(const rtems_irq_connect_data *unused) -{ - return; -} - -static void -isr_off(const rtems_irq_connect_data *unused) -{ - return; -} - -static int -isr_is_on(const rtems_irq_connect_data *irq) -{ - return BSP_irq_enabled_at_i8259s(irq->name); -} - -/* * TTYS1 - device driver INITIALIZE entry point. */ rtems_device_driver @@ -111,12 +67,14 @@ tty1_initialize(rtems_device_major_number major, */ /* 9600-8-N-1, without hardware flow control */ BSP_uart_init( BSP_UART_COM1, 9600, CHR_8_BITS, 0, 0, 0 ); - status = BSP_install_rtems_irq_handler( &tty1_isr_data ); - if( !status ) - { - printk("Error installing ttyS1 interrupt handler!\n"); - rtems_fatal_error_occurred(status); - } + status = rtems_interrupt_handler_install( + BSP_UART_COM1_IRQ, + "tty_drv", + RTEMS_INTERRUPT_UNIQUE, + BSP_uart_termios_isr_com1, + NULL + ); + assert(status == RTEMS_SUCCESSFUL); /* * Register the device */ @@ -132,7 +90,14 @@ tty1_initialize(rtems_device_major_number major, static int tty1_last_close(int major, int minor, void *arg) { - BSP_remove_rtems_irq_handler( &tty1_isr_data ); + rtems_status_code status; + + status = rtems_interrupt_handler_remove( + BSP_UART_COM1_IRQ, + BSP_uart_termios_isr_com1, + NULL + ); + assert(status == RTEMS_SUCCESSFUL); return 0; } @@ -339,12 +304,15 @@ tty2_initialize(rtems_device_major_number major, */ /* 9600-8-N-1, without hardware flow control */ BSP_uart_init( BSP_UART_COM2, 9600, CHR_8_BITS, 0, 0, 0); - status = BSP_install_rtems_irq_handler( &tty2_isr_data ); - if( !status ) - { - printk("Error installing serial console interrupt handler!\n"); - rtems_fatal_error_occurred(status); - } + status = rtems_interrupt_handler_install( + BSP_UART_COM2_IRQ, + "tty_drv", + RTEMS_INTERRUPT_UNIQUE, + BSP_uart_termios_isr_com2, + NULL + ); + assert(status == RTEMS_SUCCESSFUL); + /* * Register the device */ @@ -360,7 +328,14 @@ tty2_initialize(rtems_device_major_number major, static int tty2_last_close(int major, int minor, void *arg) { - BSP_remove_rtems_irq_handler( &tty2_isr_data ); + rtems_status_code status; + + status = rtems_interrupt_handler_remove( + BSP_UART_COM2_IRQ, + BSP_uart_termios_isr_com2, + NULL + ); + assert(status == RTEMS_SUCCESSFUL); return 0; } |