diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-04-05 17:07:20 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-04-12 07:09:10 +0200 |
commit | b43ea9fed2ce52997933704a522fc28ebcd27968 (patch) | |
tree | 9e8b521394df11aecba4c44feb801b1cca412adf /bsps/shared/dev/serial/legacy-console-select.c | |
parent | bsps: Remove unused console_select_simple.c (diff) | |
download | rtems-b43ea9fed2ce52997933704a522fc28ebcd27968.tar.bz2 |
bsps: Move legacy console driver to bsps
This patch is a part of the BSP source reorganization.
Update #3285.
Diffstat (limited to 'bsps/shared/dev/serial/legacy-console-select.c')
-rw-r--r-- | bsps/shared/dev/serial/legacy-console-select.c | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/bsps/shared/dev/serial/legacy-console-select.c b/bsps/shared/dev/serial/legacy-console-select.c new file mode 100644 index 0000000000..8d545e7737 --- /dev/null +++ b/bsps/shared/dev/serial/legacy-console-select.c @@ -0,0 +1,97 @@ +/** + * @file + * + * @ingroup Console + * + * @brief Generic libchip console select + */ + +/* + * This file contains a routine to select the + * console based upon a number of criteria. + * + * COPYRIGHT (c) 2011. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#include <bsp.h> +#include <bsp/fatal.h> +#include <rtems/libio.h> +#include <stdlib.h> +#include <assert.h> +#include <termios.h> + +#include <rtems/termiostypes.h> +#include <libchip/serial.h> +#include "legacy-console.h" + +/* + * Method to return true if the device associated with the + * minor number probs available. + */ +static bool bsp_Is_Available( rtems_device_minor_number minor ) +{ + console_tbl *cptr = Console_Port_Tbl[minor]; + + /* + * First perform the configuration dependent probe, then the + * device dependent probe + */ + if ((!cptr->deviceProbe || cptr->deviceProbe(minor)) && + cptr->pDeviceFns->deviceProbe(minor)) { + return true; + } + return false; +} + +/* + * Method to return the first available device. + */ +static rtems_device_minor_number bsp_First_Available_Device( void ) +{ + rtems_device_minor_number minor; + + for (minor=0; minor < Console_Port_Count ; minor++) { + console_tbl *cptr = Console_Port_Tbl[minor]; + + /* + * First perform the configuration dependent probe, then the + * device dependent probe + */ + + if ((!cptr->deviceProbe || cptr->deviceProbe(minor)) && + cptr->pDeviceFns->deviceProbe(minor)) { + return minor; + } + } + + /* + * Error No devices were found. We will want to bail here. + */ + bsp_fatal(BSP_FATAL_CONSOLE_NO_DEV); +} + +void bsp_console_select(void) +{ + + /* + * Reset Console_Port_Minor and + * BSPPrintkPort here if desired. + * + * This default version allows the bsp to set these + * values at creation and will not touch them again + * unless the selected port number is not available. + */ + + /* + * If the device that was selected isn't available then + * let the user know and select the first available device. + */ + if ( !bsp_Is_Available( Console_Port_Minor ) ) { + Console_Port_Minor = bsp_First_Available_Device(); + } +} |