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 /c/src/lib/libbsp/shared | |
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 'c/src/lib/libbsp/shared')
-rw-r--r-- | c/src/lib/libbsp/shared/console.c | 374 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/console_control.c | 45 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/console_private.h | 89 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/console_read.c | 44 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/console_select.c | 97 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/console_write.c | 44 |
6 files changed, 0 insertions, 693 deletions
diff --git a/c/src/lib/libbsp/shared/console.c b/c/src/lib/libbsp/shared/console.c deleted file mode 100644 index 6d287c8726..0000000000 --- a/c/src/lib/libbsp/shared/console.c +++ /dev/null @@ -1,374 +0,0 @@ -/** - * @file - * - * @ingroup Console - * - * @brief Extension of the generic libchip console driver shell - */ - -/* - * COPYRIGHT (c) 1989-2011, 2016. - * 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 <rtems/console.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> -#include <termios.h> - -#include <rtems/termiostypes.h> -#include <libchip/serial.h> -#include "console_private.h" - -unsigned long Console_Port_Count = 0; -console_tbl **Console_Port_Tbl = NULL; -console_data *Console_Port_Data = NULL; -rtems_device_minor_number Console_Port_Minor = 0; -static bool console_initialized = false; - -/* - * console_find_console_entry - * - * This method is used to search the console entries for a - * specific device entry. - */ -console_tbl* console_find_console_entry( - const char *match, - size_t length, - rtems_device_minor_number *match_minor -) -{ - rtems_device_minor_number minor; - - /* - * The the match name is NULL get the minor number entry. - */ - if (match == NULL) { - if (*match_minor < Console_Port_Count) - return Console_Port_Tbl[*match_minor]; - return NULL; - } - - for (minor=0; minor < Console_Port_Count ; minor++) { - console_tbl *cptr = Console_Port_Tbl[minor]; - - /* - * Console table entries include /dev/ prefix, device names passed - * in on command line do not. - */ - if ( !strncmp( cptr->sDeviceName, match, length ) ) { - *match_minor = minor; - return cptr; - } - } - - return NULL; -} - -/* - * console_initialize_data - * - * This method is used to initialize the table of pointers to the - * serial port configuration structure entries. - */ -void console_initialize_data(void) -{ - int i; - - if ( Console_Port_Tbl ) - return; - - /* - * Allocate memory for the table of device pointers. - */ - Console_Port_Count = Console_Configuration_Count; - Console_Port_Tbl = malloc( Console_Port_Count * sizeof( console_tbl * ) ); - if (Console_Port_Tbl == NULL) - bsp_fatal( BSP_FATAL_CONSOLE_NO_MEMORY_0 ); - - /* - * Allocate memory for the table of device specific data pointers. - */ - Console_Port_Data = calloc( Console_Port_Count, sizeof( console_data ) ); - if ( Console_Port_Data == NULL ) { - bsp_fatal( BSP_FATAL_CONSOLE_NO_MEMORY_3 ); - } - - /* - * Fill in the Console Table - */ - for (i=0 ; i < Console_Port_Count ; i++) { - Console_Port_Tbl[i] = &Console_Configuration_Ports[i]; - } -} - -/* - * console_register_devices - * - * This method is used to add dynamically discovered devices to the - * set of serial ports supported. - */ -void console_register_devices( - console_tbl *new_ports, - size_t number_of_ports -) -{ - int old_number_of_ports; - int i; - - /* - * Initialize the console data elements - */ - console_initialize_data(); - - /* - * console_initialize() has been invoked so it is now too late to - * register devices. - */ - if ( console_initialized ) { - bsp_fatal( BSP_FATAL_CONSOLE_MULTI_INIT ); - } - - /* - * Allocate memory for the console port extension - */ - old_number_of_ports = Console_Port_Count; - Console_Port_Count += number_of_ports; - Console_Port_Tbl = realloc( - Console_Port_Tbl, - Console_Port_Count * sizeof(console_tbl *) - ); - if ( Console_Port_Tbl == NULL ) { - bsp_fatal( BSP_FATAL_CONSOLE_NO_MEMORY_1 ); - } - - /* - * Since we can only add devices before console_initialize(), - * the data area will contain no information and must be zero - * before it is used. So extend the area and zero it out. - */ - Console_Port_Data = realloc( - Console_Port_Data, - Console_Port_Count * sizeof(console_data) - ); - if ( Console_Port_Data == NULL ) { - bsp_fatal( BSP_FATAL_CONSOLE_NO_MEMORY_2 ); - } - memset(Console_Port_Data, '\0', Console_Port_Count * sizeof(console_data)); - - /* - * Now add the new devices at the end. - */ - for (i=0 ; i < number_of_ports ; i++) { - Console_Port_Tbl[old_number_of_ports + i] = &new_ports[i]; - } -} - -/* - * console_open - * - * open a port as a termios console. - */ -rtems_device_driver console_open( - rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg -) -{ - rtems_status_code status; - rtems_libio_open_close_args_t *args = arg; - rtems_libio_ioctl_args_t IoctlArgs; - struct termios Termios; - rtems_termios_callbacks Callbacks; - console_tbl *cptr; - struct rtems_termios_tty *current_tty; - - /* - * Verify the port number is valid. - */ - if ( minor > Console_Port_Count ) { - return RTEMS_INVALID_NUMBER; - } - - /* - * Open the port as a termios console driver. - */ - - cptr = Console_Port_Tbl[minor]; - Callbacks.firstOpen = cptr->pDeviceFns->deviceFirstOpen; - Callbacks.lastClose = cptr->pDeviceFns->deviceLastClose; - Callbacks.pollRead = cptr->pDeviceFns->deviceRead; - Callbacks.write = cptr->pDeviceFns->deviceWrite; - Callbacks.setAttributes = cptr->pDeviceFns->deviceSetAttributes; - if (cptr->pDeviceFlow != NULL) { - Callbacks.stopRemoteTx = cptr->pDeviceFlow->deviceStopRemoteTx; - Callbacks.startRemoteTx = cptr->pDeviceFlow->deviceStartRemoteTx; - } else { - Callbacks.stopRemoteTx = NULL; - Callbacks.startRemoteTx = NULL; - } - Callbacks.outputUsesInterrupts = cptr->pDeviceFns->deviceOutputUsesInterrupts; - - /* XXX what about - * Console_Port_Tbl[minor].ulMargin, - * Console_Port_Tbl[minor].ulHysteresis); - */ - - status = rtems_termios_open( major, minor, arg, &Callbacks ); - Console_Port_Data[minor].termios_data = args->iop->data1; - - /* Get tty pointur from the Console_Port_Data */ - current_tty = Console_Port_Data[minor].termios_data; - - if ( (current_tty->refcount == 1) ) { - - /* - * If this BSP has a preferred default rate, then use that. - */ - #if defined(BSP_DEFAULT_BAUD_RATE) - rtems_termios_set_initial_baud( current_tty, BSP_DEFAULT_BAUD_RATE ); - #endif - - /* - * If it's the first open, modified, if need, the port parameters - */ - if ( minor != Console_Port_Minor ) { - /* - * If this is not the console we do not want ECHO and so forth - */ - IoctlArgs.iop = args->iop; - IoctlArgs.command = TIOCGETA; - IoctlArgs.buffer = &Termios; - rtems_termios_ioctl( &IoctlArgs ); - - Termios.c_lflag = ICANON; - IoctlArgs.command = TIOCSETA; - rtems_termios_ioctl( &IoctlArgs ); - } - } - - if (rtems_libio_iop_is_readable(args->iop) && - cptr->pDeviceFlow && - cptr->pDeviceFlow->deviceStartRemoteTx) { - cptr->pDeviceFlow->deviceStartRemoteTx(minor); - } - - return status; -} - -/* - * console_close - * - * This routine closes a port that has been opened as console. - */ -rtems_device_driver console_close( - rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg -) -{ - rtems_libio_open_close_args_t *args = arg; - struct rtems_termios_tty *current_tty; - console_tbl *cptr; - - cptr = Console_Port_Tbl[minor]; - - /* Get tty pointer from the Console_Port_Data */ - current_tty = Console_Port_Data[minor].termios_data; - - /* Get the tty refcount to determine if we need to do deviceStopRemoteTx. - * Stop only if it's the last one opened. - */ - if ( (current_tty->refcount == 1) ) { - if (rtems_libio_iop_is_readable(args->iop) && - cptr->pDeviceFlow && - cptr->pDeviceFlow->deviceStopRemoteTx) { - cptr->pDeviceFlow->deviceStopRemoteTx(minor); - } - } - - return rtems_termios_close (arg); -} - -/* - * console_initialize - * - * Routine called to initialize the console device driver. - */ -rtems_device_driver console_initialize( - rtems_device_major_number major, - rtems_device_minor_number minor_arg, - void *arg -) -{ - rtems_status_code status; - rtems_device_minor_number minor; - console_tbl *port; - - /* - * If we have no devices which were registered earlier then we - * must still initialize pointers for Console_Port_Tbl and - * Console_Port_Data. - */ - console_initialize_data(); - - /* - * console_initialize has been invoked so it is now too late to - * register devices. - */ - console_initialized = true; - - /* - * Initialize the termio interface, our table of pointers to device - * information structures, and determine if the user has explicitly - * specified which device is to be used for the console. - */ - rtems_termios_initialize(); - bsp_console_select(); - - /* - * Iterate over all of the console devices we know about - * and initialize them. - */ - for (minor=0 ; minor < Console_Port_Count ; minor++) { - /* - * First perform the configuration dependent probe, then the - * device dependent probe - */ - port = Console_Port_Tbl[minor]; - - if ( (!port->deviceProbe || port->deviceProbe(minor)) && - port->pDeviceFns->deviceProbe(minor)) { - - if (port->sDeviceName != NULL) { - status = rtems_io_register_name( port->sDeviceName, major, minor ); - if (status != RTEMS_SUCCESSFUL) { - bsp_fatal( BSP_FATAL_CONSOLE_REGISTER_DEV_0 ); - } - } - - if (minor == Console_Port_Minor) { - status = rtems_io_register_name( CONSOLE_DEVICE_NAME, major, minor ); - if (status != RTEMS_SUCCESSFUL) { - bsp_fatal( BSP_FATAL_CONSOLE_REGISTER_DEV_1 ); - } - } - - /* - * Initialize the hardware device. - */ - port->pDeviceFns->deviceInitialize(minor); - - } - } - - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/lib/libbsp/shared/console_control.c b/c/src/lib/libbsp/shared/console_control.c deleted file mode 100644 index 9bf029151d..0000000000 --- a/c/src/lib/libbsp/shared/console_control.c +++ /dev/null @@ -1,45 +0,0 @@ -/** - * @file - * - * @ingroup Console - * - * @brief Generic libchip console io_ctl extension - */ - - -/* - * This file is an extension of the generic console driver - * shell used by all console drivers using libchip. - * - * COPYRIGHT (c) 1989-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 <rtems/libio.h> -#include <stdlib.h> -#include <assert.h> -#include <termios.h> - -#include <rtems/termiostypes.h> -#include <rtems/console.h> -#include <libchip/serial.h> -#include "console_private.h" - -/* - * console_control - * - * this routine uses the termios driver to process io - */ -rtems_device_driver console_control( - rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg -) -{ - return rtems_termios_ioctl (arg); -} diff --git a/c/src/lib/libbsp/shared/console_private.h b/c/src/lib/libbsp/shared/console_private.h deleted file mode 100644 index 3855e83100..0000000000 --- a/c/src/lib/libbsp/shared/console_private.h +++ /dev/null @@ -1,89 +0,0 @@ -/** - * @file - * - * @ingroup Console - * - * @brief Extension of the generic libchip console driver shell - */ - -/* - * COPYRIGHT (c) 1989-2011, 2016. - * 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. - */ - -#ifndef _PC386_CONSOLE_PRIVATE_h -#define _PC386_CONSOLE_PRIVATE_h - -#include <rtems.h> - -#include <libchip/serial.h> - -#ifdef __cplusplus -extern "C" { -#endif - -extern rtems_device_minor_number BSPPrintkPort; - -/** - * @brief - * - * This function is the ioctl() support for a VGA buffer driver. - * - * @return This method returns 0 on success. - */ -int vt_ioctl( - unsigned int cmd, - unsigned long arg -); - -/** - * @brief console_find_console_entry - * - * This method is used to search the console entries for a - * specific device entry and return it. If match is NULL the - * minor number provided is matched. - */ -console_tbl* console_find_console_entry( - const char *match, - size_t length, - rtems_device_minor_number *match_minor -); - -/** - * @brief console_initialize_data - * - * This must be called before dynamic registration of devices can occur. - * It is normally called as a side-effect of @a console_initialize() but - * if a probe and dynamic registration occurs before that, then this method - * should be explicitly invoked. - */ -void console_initialize_data(void); - -/** - * @brief console_register_devices - * - * This function expands the console table to include previous - * ports and the array of new ports specified. - * - * @param[in] new_ports specifies an array of new ports to register - * @param[in] number_of_ports specifies the number of elements - * in the new_ports array - * - */ -void console_register_devices( - console_tbl *new_ports, - size_t number_of_ports -); - -#ifdef __cplusplus -} -#endif - -/**@}*/ - -#endif -/* end of include file */ diff --git a/c/src/lib/libbsp/shared/console_read.c b/c/src/lib/libbsp/shared/console_read.c deleted file mode 100644 index 407d5e61db..0000000000 --- a/c/src/lib/libbsp/shared/console_read.c +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @file - * - * @ingroup Console - * - * @brief Generic libchip console read extension - */ - -/* - * This file is an extension of the generic console driver - * shell used by all console drivers using libchip. - * - * COPYRIGHT (c) 1989-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 <rtems/libio.h> -#include <stdlib.h> -#include <assert.h> -#include <termios.h> - -#include <rtems/termiostypes.h> -#include <rtems/console.h> -#include <libchip/serial.h> -#include "console_private.h" - -/* - * console_read - * - * This routine uses the termios driver to read a character. - */ -rtems_device_driver console_read( - rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg -) -{ - return rtems_termios_read (arg); -} diff --git a/c/src/lib/libbsp/shared/console_select.c b/c/src/lib/libbsp/shared/console_select.c deleted file mode 100644 index f2f2e8b694..0000000000 --- a/c/src/lib/libbsp/shared/console_select.c +++ /dev/null @@ -1,97 +0,0 @@ -/** - * @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 "console_private.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(); - } -} diff --git a/c/src/lib/libbsp/shared/console_write.c b/c/src/lib/libbsp/shared/console_write.c deleted file mode 100644 index cc69b83b5a..0000000000 --- a/c/src/lib/libbsp/shared/console_write.c +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @file - * - * @ingroup Console - * - * @brief Generic libchip console write extension - */ - -/* - * This file is an extension of the generic console driver - * shell used by all console drivers using libchip. - * - * COPYRIGHT (c) 1989-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 <rtems/libio.h> -#include <stdlib.h> -#include <assert.h> -#include <termios.h> - -#include <rtems/termiostypes.h> -#include <rtems/console.h> -#include <libchip/serial.h> -#include "console_private.h" - -/* - * console_write - * - * this routine uses the termios driver to write a character. - */ -rtems_device_driver console_write( - rtems_device_major_number major, - rtems_device_minor_number minor, - void * arg -) -{ - return rtems_termios_write (arg); -} |