From 441b90e6c950cff5ecb63ebf8308e0a755d1a2bb Mon Sep 17 00:00:00 2001 From: Jennifer Averett Date: Wed, 1 Feb 2012 14:32:28 -0600 Subject: Correct run-time selection of console port. This was broken by conversion of console driver to libchip style. --- .../lib/libbsp/i386/pc386/console/printk_support.c | 39 +++++++++++++--------- 1 file changed, 23 insertions(+), 16 deletions(-) (limited to 'c/src/lib/libbsp/i386/pc386/console/printk_support.c') 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 #include #include - -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; + -- cgit v1.2.3