summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/shared
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-05 17:07:20 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-12 07:09:10 +0200
commitb43ea9fed2ce52997933704a522fc28ebcd27968 (patch)
tree9e8b521394df11aecba4c44feb801b1cca412adf /c/src/lib/libbsp/shared
parentbsps: Remove unused console_select_simple.c (diff)
downloadrtems-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.c374
-rw-r--r--c/src/lib/libbsp/shared/console_control.c45
-rw-r--r--c/src/lib/libbsp/shared/console_private.h89
-rw-r--r--c/src/lib/libbsp/shared/console_read.c44
-rw-r--r--c/src/lib/libbsp/shared/console_select.c97
-rw-r--r--c/src/lib/libbsp/shared/console_write.c44
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);
-}