diff options
author | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 2012-02-01 14:32:28 -0600 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@oarcorp.com> | 2012-02-01 14:32:28 -0600 |
commit | 441b90e6c950cff5ecb63ebf8308e0a755d1a2bb (patch) | |
tree | 3d10d20754dbd8affec36de47c95e9db453fc237 /c/src/lib/libbsp/i386/pc386/console/printk_support.c | |
parent | Fix spelling error and improve comment. (diff) | |
download | rtems-441b90e6c950cff5ecb63ebf8308e0a755d1a2bb.tar.bz2 |
Correct run-time selection of console port.
This was broken by conversion of console driver to libchip style.
Diffstat (limited to 'c/src/lib/libbsp/i386/pc386/console/printk_support.c')
-rw-r--r-- | c/src/lib/libbsp/i386/pc386/console/printk_support.c | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/c/src/lib/libbsp/i386/pc386/console/printk_support.c b/c/src/lib/libbsp/i386/pc386/console/printk_support.c index 4e478ebaa5..2a5e5fc762 100644 --- a/c/src/lib/libbsp/i386/pc386/console/printk_support.c +++ b/c/src/lib/libbsp/i386/pc386/console/printk_support.c @@ -22,9 +22,7 @@ #include <bsp.h> #include <libchip/serial.h> #include <libchip/ns16550.h> - -BSP_output_char_function_type BSP_output_char = _IBMPC_outch; -BSP_polling_getchar_function_type BSP_poll_char = BSP_wait_polled_input; +#include "../../../shared/console_private.h" rtems_device_minor_number BSPPrintkPort = 0; @@ -32,26 +30,35 @@ int ns16550_inbyte_nonblocking_polled( int minor ); -void BSP_com_outch(char ch) -{ - console_tbl *cptr; +void BSP_outch(char ch); +int BSP_inch(void); - cptr = &Console_Configuration_Ports[BSPPrintkPort]; +void BSP_outch(char ch) +{ + if ( BSPPrintkPort == BSP_CONSOLE_VGA ) { + _IBMPC_outch( ch ); + } else { + console_tbl *cptr; - return cptr->pDeviceFns->deviceWritePolled( BSPPrintkPort, ch ); + cptr = &Console_Configuration_Ports[BSPPrintkPort]; + cptr->pDeviceFns->deviceWritePolled( BSPPrintkPort, ch ); + } } -int BSP_com_inch( void ) +int BSP_inch(void) { int result; - console_tbl *cptr; - - cptr = &Console_Configuration_Ports[BSPPrintkPort]; - - do { - result = ns16550_inbyte_nonblocking_polled( BSPPrintkPort ); - } while (result == -1); + if ( BSPPrintkPort == BSP_CONSOLE_VGA ) { + result = BSP_wait_polled_input(); + } else { + do { + result = ns16550_inbyte_nonblocking_polled( BSPPrintkPort ); + } while (result == -1); + } return result; } +BSP_output_char_function_type BSP_output_char = BSP_outch; +BSP_polling_getchar_function_type BSP_poll_char = BSP_inch; + |