diff options
author | Till Straumann <strauman@slac.stanford.edu> | 2008-11-03 20:54:33 +0000 |
---|---|---|
committer | Till Straumann <strauman@slac.stanford.edu> | 2008-11-03 20:54:33 +0000 |
commit | c592a7f54a776d490acbafa627a411b522fbfda0 (patch) | |
tree | bddaf8b09f8372c005c4b5840704041606afd768 | |
parent | f3a4c7a85ac57736e4dff1e7eb2de4b1104373b7 (diff) |
2008-11-03 Till Straumann <strauman@slac.stanford.edu>
PR 1332: call BSP_uart_termios_set()/BSP_uart_intr_ctrl()
only from 'firstOpen' and only if this is a serial console.
-rw-r--r-- | c/src/lib/libbsp/i386/pc386/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/lib/libbsp/i386/pc386/console/console.c | 25 |
2 files changed, 21 insertions, 9 deletions
diff --git a/c/src/lib/libbsp/i386/pc386/ChangeLog b/c/src/lib/libbsp/i386/pc386/ChangeLog index cb823b452f..9e38a68e12 100644 --- a/c/src/lib/libbsp/i386/pc386/ChangeLog +++ b/c/src/lib/libbsp/i386/pc386/ChangeLog @@ -1,3 +1,8 @@ +2008-11-03 Till Straumann <strauman@slac.stanford.edu> + + PR 1332: call BSP_uart_termios_set()/BSP_uart_intr_ctrl() + only from 'firstOpen' and only if this is a serial console. + 2008-03-03 Joel Sherrill <joel.sherrill@OARcorp.com> * startup/linkcmds: Add wildcard to gcc_except_table section so diff --git a/c/src/lib/libbsp/i386/pc386/console/console.c b/c/src/lib/libbsp/i386/pc386/console/console.c index 5581c6583c..70f7814aa2 100644 --- a/c/src/lib/libbsp/i386/pc386/console/console.c +++ b/c/src/lib/libbsp/i386/pc386/console/console.c @@ -274,6 +274,20 @@ static int console_last_close(int major, int minor, void *arg) return 0; } +static int ser_console_first_open(int major, int minor, void *arg) +{ + /* + * Pass data area info down to driver + */ + BSP_uart_termios_set(BSPConsolePort, + ((rtems_libio_open_close_args_t *)arg)->iop->data1); + + /* Enable interrupts on channel */ + BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS); + + return 0; +} + /*-------------------------------------------------------------------------+ | Console device driver OPEN entry point +--------------------------------------------------------------------------*/ @@ -321,6 +335,8 @@ console_open(rtems_device_major_number major, cb.write = BSP_uart_termios_write_com2; } + cb.firstOpen = ser_console_first_open; + status = rtems_termios_open (major, minor, arg, &cb); if(status != RTEMS_SUCCESSFUL) @@ -329,15 +345,6 @@ console_open(rtems_device_major_number major, return status; } - /* - * Pass data area info down to driver - */ - BSP_uart_termios_set(BSPConsolePort, - ((rtems_libio_open_close_args_t *)arg)->iop->data1); - - /* Enable interrupts on channel */ - BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS); - return RTEMS_SUCCESSFUL; } |