bsps: Move legacy console driver to bsps

This patch is a part of the BSP source reorganization.

Update #3285.
This commit is contained in:
Sebastian Huber
2018-04-05 17:07:20 +02:00
parent f0bcae383e
commit b43ea9fed2
33 changed files with 96 additions and 166 deletions

View File

@@ -65,12 +65,10 @@ librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/irq/irq-default-handler.c
librtemsbsp_a_SOURCES += irq.c
# Console
librtemsbsp_a_SOURCES += ../../shared/console.c \
../../shared/console_select.c \
console/console-config.c \
../../shared/console_read.c \
../../shared/console_write.c \
../../shared/console_control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/console-config.c
# I2C
librtemsbsp_a_SOURCES += i2c/bbb-i2c.c

View File

@@ -39,9 +39,10 @@ librtemsbsp_a_SOURCES += startup/pmc.c
librtemsbsp_a_SOURCES += clock/clock.c
librtemsbsp_a_SOURCES += timer/timer.c
# console
librtemsbsp_a_SOURCES += ../../shared/console.c console/uarts.c \
../../shared/console_select.c ../../shared/console_control.c \
../../shared/console_read.c ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/uarts.c
librtemsbsp_a_SOURCES += console/dbgu.c
librtemsbsp_a_SOURCES += console/usart.c
# IRQ

View File

@@ -30,9 +30,10 @@ librtemsbsp_a_SOURCES += ../../shared/cpucounterdiff.c
librtemsbsp_a_SOURCES += clock/clockdrv.c
librtemsbsp_a_SOURCES += ../../shared/clockdrv_shell.h
# console
librtemsbsp_a_SOURCES += console/uart.c ../../shared/console.c \
../../shared/console_select.c ../../shared/console_control.c \
../../shared/console_read.c ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/uart.c
# timer
librtemsbsp_a_SOURCES += timer/timer.c

View File

@@ -29,9 +29,10 @@ librtemsbsp_a_SOURCES += clock/clock.c
librtemsbsp_a_SOURCES += timer/timer.c
#console
librtemsbsp_a_SOURCES += console/uarts.c ../../shared/console.c \
../../shared/console_select.c ../../shared/console_control.c \
../../shared/console_read.c ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/uarts.c
librtemsbsp_a_SOURCES += console/ffuart.c
# IRQ
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/irq/irq-default-handler.c

View File

@@ -56,11 +56,9 @@ librtemsbsp_a_SOURCES += ../shared/armv7m/irq/armv7m-irq.c
librtemsbsp_a_SOURCES += ../shared/armv7m/irq/armv7m-irq-dispatch.c
# Console
librtemsbsp_a_SOURCES += ../../shared/console.c
librtemsbsp_a_SOURCES += ../../shared/console_control.c
librtemsbsp_a_SOURCES += ../../shared/console_read.c
librtemsbsp_a_SOURCES += ../../shared/console_select.c
librtemsbsp_a_SOURCES += ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/console-config.c
librtemsbsp_a_SOURCES += console/uart.c

View File

@@ -69,10 +69,8 @@ librtemsbsp_a_SOURCES += ../shared/arm-cp15-set-exception-handler.c
librtemsbsp_a_SOURCES += irq/irq.c
# Console
librtemsbsp_a_SOURCES += ../../shared/console.c
librtemsbsp_a_SOURCES += ../../shared/console_control.c
librtemsbsp_a_SOURCES += ../../shared/console_read.c
librtemsbsp_a_SOURCES += ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += console/console-config.c
librtemsbsp_a_SOURCES += console/console_select.c
librtemsbsp_a_SOURCES += console/usart.c

View File

@@ -26,7 +26,7 @@
#include <rtems/termiostypes.h>
#include <libchip/serial.h>
#include "../../../shared/console_private.h"
#include "../../../../../../../bsps/shared/dev/serial/legacy-console.h"
#include <bsp/rpi-fb.h>
rtems_device_minor_number BSPPrintkPort = 0;

View File

@@ -31,14 +31,13 @@ librtemsbsp_a_SOURCES += ../../shared/cpucounterdiff.c
librtemsbsp_a_SOURCES += timer/timer.c
librtemsbsp_a_SOURCES += clock/clockdrv.c
# console
librtemsbsp_a_SOURCES += ../../shared/console.c \
../../shared/console_select.c ../../shared/console_control.c \
../../shared/console_read.c ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/uart.c
# IRQ
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/irq/irq-default-handler.c
librtemsbsp_a_SOURCES += irq/irq.c
# debugio
librtemsbsp_a_SOURCES += console/uart.c
# Cache
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/cache/nocache.c

View File

@@ -34,12 +34,10 @@ librtemsbsp_a_SOURCES += timer/timer.c
librtemsbsp_a_SOURCES += clock/clockdrv.c
librtemsbsp_a_SOURCES += clock/support.c
# console
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/uart.c
librtemsbsp_a_SOURCES += ../../shared/console.c
librtemsbsp_a_SOURCES += ../../shared/console_select.c
librtemsbsp_a_SOURCES += ../../shared/console_read.c
librtemsbsp_a_SOURCES += ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../shared/console_control.c
# IRQ
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/irq/irq-default-handler.c
librtemsbsp_a_SOURCES += irq/irq.c

View File

@@ -56,11 +56,9 @@ librtemsbsp_a_SOURCES += ../shared/armv7m/irq/armv7m-irq.c
librtemsbsp_a_SOURCES += ../shared/armv7m/irq/armv7m-irq-dispatch.c
# Console
librtemsbsp_a_SOURCES += ../../shared/console.c
librtemsbsp_a_SOURCES += ../../shared/console_control.c
librtemsbsp_a_SOURCES += ../../shared/console_read.c
librtemsbsp_a_SOURCES += ../../shared/console_select.c
librtemsbsp_a_SOURCES += ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/console-config.c
librtemsbsp_a_SOURCES += console/usart.c

View File

@@ -81,10 +81,8 @@ librtemsbsp_a_SOURCES += console/serial_mouse_config.c
librtemsbsp_a_SOURCES += ../../i386/shared/comm/uart.c
librtemsbsp_a_SOURCES += ../../i386/shared/comm/tty_drv.c
librtemsbsp_a_SOURCES += ../../i386/shared/realmode_int/realmode_int.c
librtemsbsp_a_SOURCES += ../../shared/console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += console/console_select.c
librtemsbsp_a_SOURCES += ../../shared/console_read.c
librtemsbsp_a_SOURCES += ../../shared/console_write.c
librtemsbsp_a_SOURCES += console/console_control.c
librtemsbsp_a_SOURCES += console/conscfg.c
librtemsbsp_a_SOURCES += console/printk_support.c

View File

@@ -23,7 +23,7 @@
#include <rtems/vgacons.h>
#endif
#include <bsp/irq.h>
#include "../../../shared/console_private.h"
#include "../../../../../../../bsps/shared/dev/serial/legacy-console.h"
#if BSP_ENABLE_VGA
#define VGA_CONSOLE_FUNCTIONS &vgacons_fns

View File

@@ -30,7 +30,7 @@
#if BSP_ENABLE_VGA
#include <rtems/keyboard.h>
#endif
#include "../../../shared/console_private.h"
#include "../../../../../../../bsps/shared/dev/serial/legacy-console.h"
/*
* console_control

View File

@@ -29,7 +29,7 @@
#include <rtems/termiostypes.h>
#include <bsp/bspimpl.h>
#include "../../../shared/console_private.h"
#include "../../../../../../../bsps/shared/dev/serial/legacy-console.h"
#ifdef RTEMS_RUNTIME_CONSOLE_SELECT
#include <crt.h>
#endif

View File

@@ -27,7 +27,7 @@
#include <rtems/bspIo.h>
#include <rtems/pci.h>
#include <bsp/exar17d15x.h>
#include "../../../shared/console_private.h"
#include "../../../../../../../bsps/shared/dev/serial/legacy-console.h"
#define MAX_BOARDS 4

View File

@@ -30,7 +30,7 @@
#include <libchip/ns16550.h>
#include <bsp/bspimpl.h>
#include "../../../shared/console_private.h"
#include "../../../../../../../bsps/shared/dev/serial/legacy-console.h"
/*
* Used in the stub to print output.

View File

@@ -25,7 +25,7 @@
#include <bsp.h>
#include <libchip/serial.h>
#include <libchip/ns16550.h>
#include "../../../shared/console_private.h"
#include "../../../../../../../bsps/shared/dev/serial/legacy-console.h"
rtems_device_minor_number BSPPrintkPort = 0;

View File

@@ -26,7 +26,7 @@
#include <rtems/bspIo.h>
#include <bsp/rtd316.h>
#include <rtems/score/i386.h>
#include "../../../shared/console_private.h"
#include "../../../../../../../bsps/shared/dev/serial/legacy-console.h"
#define RTD_CLOCK_RATE (460800 * 32)

View File

@@ -15,7 +15,7 @@
#include <fcntl.h>
#include <libchip/serial.h>
#include "../../../shared/console_private.h"
#include "../../../../../../../bsps/shared/dev/serial/legacy-console.h"
/* select which serial port the mouse is connected to */
#if defined(SERIAL_MOUSE_COM2)

View File

@@ -236,7 +236,7 @@ DRIVER_MODULE(uart, pci, uart_pci_driver, uart_devclass, NULL, NULL);
#include <libchip/ns16550.h>
#include <rtems/bspIo.h>
#include <rtems/pci.h>
#include "../../../shared/console_private.h"
#include "../../../../../../../bsps/shared/dev/serial/legacy-console.h"
#define MAX_BOARDS 4

View File

@@ -12,7 +12,7 @@
#include <bsp/irq-generic.h>
#include <libchip/serial.h>
#include "../../../shared/console_private.h"
#include "../../../../../../../bsps/shared/dev/serial/legacy-console.h"
int putDebugChar(int ch); /* write a single character */
int getDebugChar(void); /* read and return a single char */

View File

@@ -41,13 +41,11 @@ librtemsbsp_a_SOURCES += ../shared/clock/mips_timer.S
librtemsbsp_a_SOURCES += ../../shared/clockdrv_shell.h
# console
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/conscfg.c
librtemsbsp_a_SOURCES += console/printk_support.c
librtemsbsp_a_SOURCES += ../../shared/console.c
librtemsbsp_a_SOURCES += ../../shared/console_select.c
librtemsbsp_a_SOURCES += ../../shared/console_read.c
librtemsbsp_a_SOURCES += ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../shared/console_control.c
# timer
librtemsbsp_a_SOURCES += ../../shared/timerstub.c

View File

@@ -51,11 +51,9 @@ librtemsbsp_a_SOURCES += ../../shared/sbrk.c
librtemsbsp_a_SOURCES += ../../shared/src/stackalloc.c
# Console
librtemsbsp_a_SOURCES += ../../shared/console.c
librtemsbsp_a_SOURCES += ../../shared/console_control.c
librtemsbsp_a_SOURCES += ../../shared/console_read.c
librtemsbsp_a_SOURCES += ../../shared/console_select.c
librtemsbsp_a_SOURCES += ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/console-config.c
librtemsbsp_a_SOURCES += console/uart.c

View File

@@ -38,9 +38,10 @@ librtemsbsp_a_SOURCES += ../../shared/bspclean.c ../../shared/bspgetworkarea.c \
librtemsbsp_a_SOURCES += ../shared/src/bsp-start-zero.S
# bspconsole
librtemsbsp_a_SOURCES += console/consolelite.c ../../shared/console.c \
../../shared/console_select.c ../../shared/console_control.c \
../../shared/console_read.c ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/consolelite.c
# irq
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/irq/irq-default-handler.c

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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 */

View File

@@ -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);
}

View File

@@ -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();
}
}

View File

@@ -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);
}

View File

@@ -42,9 +42,10 @@ librtemsbsp_a_SOURCES += ../../sparc/shared/irq_asm.S
# gnatsupp
librtemsbsp_a_SOURCES += gnatsupp/gnatsupp.c ../../sparc/shared/gnatcommon.c
# console
librtemsbsp_a_SOURCES += console/erc32_console.c ../../shared/console.c \
../../shared/console_select.c ../../shared/console_control.c \
../../shared/console_read.c ../../shared/console_write.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
librtemsbsp_a_SOURCES += console/erc32_console.c
# debugio
librtemsbsp_a_SOURCES += console/debugputs.c
# clock

View File

@@ -37,9 +37,10 @@ startup_SOURCES = startup/bspclean.c startup/m5op_sparc.S \
#clock_SOURCES = ../../shared/clock_driver_simidle.c
clock_SOURCES = ../shared/clock/ckinit.c
console_SOURCES = ../../shared/console.c ../shared/console/conscfg.c \
../../shared/console_select.c ../../shared/console_control.c \
../../shared/console_read.c ../../shared/console_write.c
console_SOURCES = ../shared/console/conscfg.c
console_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
console_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
console_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
timer_SOURCES = ../../shared/timerstub.c

View File

@@ -50,9 +50,10 @@ mmu_SOURCES = \
#clock_SOURCES = ../../shared/clock_driver_simidle.c
clock_SOURCES = ../shared/clock/ckinit.c
console_SOURCES = ../../shared/console.c ../shared/console/conscfg.c \
../../shared/console_select.c ../../shared/console_control.c \
../../shared/console_read.c ../../shared/console_write.c
console_SOURCES = ../shared/console/conscfg.c
console_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console.c
console_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-control.c
console_SOURCES += ../../../../../../bsps/shared/dev/serial/legacy-console-select.c
timer_SOURCES = ../../shared/timerstub.c