Looks good to me, thanks for the type fixes too. On Tue, Jun 16, 2020, 11:58 PM <chr...@rtems.org> wrote:
> From: Chris Johns <chr...@rtems.org> > > --- > bsps/i386/pc386/console/conscfg.c | 7 ++-- > bsps/i386/pc386/console/printk_support.c | 42 +++++++++++++++++++----- > 2 files changed, 37 insertions(+), 12 deletions(-) > > diff --git a/bsps/i386/pc386/console/conscfg.c > b/bsps/i386/pc386/console/conscfg.c > index a4ae88626f..8aa8ab5c2a 100644 > --- a/bsps/i386/pc386/console/conscfg.c > +++ b/bsps/i386/pc386/console/conscfg.c > @@ -46,15 +46,14 @@ > > #define CLOCK_RATE (115200 * 16) > > - static uint8_t com_get_register(uint32_t addr, uint8_t i) > + static uint8_t com_get_register(uintptr_t addr, uint8_t i) > { > - register uint8_t val; > - > + uint8_t val; > inport_byte( (addr + i), val ); > return val; > } > > - static void com_set_register(uint32_t addr, uint8_t i, uint8_t val) > + static void com_set_register(uintptr_t addr, uint8_t i, uint8_t val) > { > outport_byte( (addr + i), val ); > } > diff --git a/bsps/i386/pc386/console/printk_support.c > b/bsps/i386/pc386/console/printk_support.c > index d7bc329868..c9e003dab0 100644 > --- a/bsps/i386/pc386/console/printk_support.c > +++ b/bsps/i386/pc386/console/printk_support.c > @@ -29,6 +29,28 @@ > > rtems_device_minor_number BSPPrintkPort = 0; > > +static bool serialInit; > +static bool serialOK; > + > +static bool serialValid(console_tbl *port) > +{ > + if (port->pDeviceFns) { > + if (!serialInit) { > + serialOK = true; > + if (port->pDeviceFns->deviceProbe != NULL) { > + if (!port->pDeviceFns->deviceProbe( BSPPrintkPort )) > + serialOK = false; > + else if (port->pDeviceFns->deviceInitialize != NULL) > + port->pDeviceFns->deviceInitialize( BSPPrintkPort ); > + else > + serialOK = false; > + } > + serialInit = true; > + } > + } > + return serialOK; > +} > + > void BSP_outch(char ch); > int BSP_inch(void); > > @@ -42,10 +64,12 @@ void BSP_outch(char ch) > > if ( !isVga ) { > console_tbl *port = Console_Port_Tbl[BSPPrintkPort]; > - if (port->pDeviceFns && port->pDeviceFns->deviceWritePolled) { > - port->pDeviceFns->deviceWritePolled( BSPPrintkPort, ch ); > + if (serialValid(port)) { > + if (port->pDeviceFns->deviceWritePolled) { > + port->pDeviceFns->deviceWritePolled( BSPPrintkPort, ch ); > + } > + return; > } > - return; > } > > #if BSP_ENABLE_VGA > @@ -65,11 +89,13 @@ int BSP_inch(void) > > if ( !isVga ) { > console_tbl *port = Console_Port_Tbl[BSPPrintkPort]; > - if (port->pDeviceFns && port->pDeviceFns->deviceRead) { > - do { > - result = port->pDeviceFns->deviceRead( BSPPrintkPort ); > - } while (result == -1); > - return result; > + if (serialValid(port)) { > + if (port->pDeviceFns->deviceRead) { > + do { > + result = port->pDeviceFns->deviceRead( BSPPrintkPort ); > + } while (result == -1); > + return result; > + } > } > } > > -- > 2.24.1 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel