bsps: Move console drivers to bsps

This patch is a part of the BSP source reorganization.

Update #3285.
This commit is contained in:
Sebastian Huber
2018-04-19 06:28:01 +02:00
parent 58adad484e
commit d7d66d7d45
236 changed files with 204 additions and 204 deletions

View File

@@ -0,0 +1,44 @@
/*
* Copyright (c) 2013 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <info@embedded-brains.de>
*
* 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 <libchip/serial.h>
#include <rtems/bspIo.h>
static void output_char(char c)
{
int minor = (int) Console_Port_Minor;
const console_tbl *ct = Console_Port_Tbl != NULL ?
Console_Port_Tbl[minor] : &Console_Configuration_Ports[minor];
const console_fns *cf = ct->pDeviceFns;
(*cf->deviceWritePolled)(minor, c);
}
static void output_char_init(char c)
{
if (Console_Port_Tbl == NULL) {
int minor = (int) Console_Port_Minor;
const console_fns *cf = Console_Configuration_Ports[minor].pDeviceFns;
(*cf->deviceInitialize)(minor);
}
BSP_output_char = output_char;
output_char(c);
}
BSP_output_char_function_type BSP_output_char = output_char_init;
BSP_polling_getchar_function_type BSP_poll_char = NULL;

View File

@@ -0,0 +1,143 @@
/*
* This file contains the hardware independent portion of a polled
* console device driver. If a BSP chooses to use this, then it
* only has to provide a few board dependent routines.
*/
/*
* COPYRIGHT (c) 1989-1997.
* 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 <bsp/console-polled.h>
#include <bsp/fatal.h>
#include <rtems/console.h>
/*
* Prototypes
*/
ssize_t console_write_support(int, const char *, size_t);
/*
* Console Termios Support Entry Points
*
*/
ssize_t console_write_support (
int minor,
const char *bufarg,
size_t len
)
{
int nwrite = 0;
const char *buf = bufarg;
while (nwrite < len) {
console_outbyte_polled( minor, *buf++ );
nwrite++;
}
return nwrite;
}
/*
* Console Device Driver Entry Points
*
*/
rtems_device_driver console_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
)
{
rtems_status_code status;
/*
* Ensure Termios is initialized
*/
rtems_termios_initialize();
/*
* Make sure the hardware is initialized.
*/
console_initialize_hardware();
/*
* Register Device Names
*/
status = rtems_io_register_name( "/dev/console", major, 0 );
if (status != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred(BSP_FATAL_CONSOLE_REGISTER_DEV_2);
return RTEMS_SUCCESSFUL;
}
rtems_device_driver console_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
static const rtems_termios_callbacks pollCallbacks = {
NULL, /* firstOpen */
NULL, /* lastClose */
console_inbyte_nonblocking, /* pollRead */
console_write_support, /* write */
NULL, /* setAttributes */
NULL, /* stopRemoteTx */
NULL, /* startRemoteTx */
0 /* outputUsesInterrupts */
};
assert( minor == 0 );
if ( minor != 0 )
return RTEMS_INVALID_NUMBER;
rtems_termios_open( major, minor, arg, &pollCallbacks );
return RTEMS_SUCCESSFUL;
}
rtems_device_driver console_close(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
return rtems_termios_close( arg );
}
rtems_device_driver console_read(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
return rtems_termios_read( arg );
}
rtems_device_driver console_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
return rtems_termios_write( arg );
}
rtems_device_driver console_control(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg
)
{
return rtems_termios_ioctl( arg );
}

View File

@@ -0,0 +1,65 @@
/*
* Copyright (c) 2014, 2016 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <rtems@embedded-brains.de>
*
* 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/console-termios.h>
#include <bsp/fatal.h>
#include <rtems/console.h>
#include <unistd.h>
bool console_device_probe_default(rtems_termios_device_context *context)
{
(void) context;
return true;
}
rtems_device_driver console_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
)
{
bool console_device_done = false;
rtems_termios_initialize();
for ( minor = 0; minor < console_device_count; ++minor ) {
const console_device *ctx = &console_device_table[ minor ];
rtems_status_code sc;
if ( ( *ctx->probe )( ctx->context ) ) {
sc = rtems_termios_device_install(
ctx->device_file,
ctx->handler,
ctx->flow,
ctx->context
);
if ( sc != RTEMS_SUCCESSFUL ) {
bsp_fatal( BSP_FATAL_CONSOLE_INSTALL_0 );
}
if ( !console_device_done ) {
console_device_done = true;
if ( link( ctx->device_file, CONSOLE_DEVICE_NAME ) != 0 ) {
bsp_fatal( BSP_FATAL_CONSOLE_INSTALL_1 );
}
}
}
}
return RTEMS_SUCCESSFUL;
}

View File

@@ -0,0 +1,81 @@
/*
* Copyright (c) 2014, 2016 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <rtems@embedded-brains.de>
*
* 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 <rtems/console.h>
#include <rtems/termiostypes.h>
rtems_device_driver console_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
)
{
(void) major;
(void) minor;
(void) arg;
return RTEMS_INTERNAL_ERROR;
}
rtems_device_driver console_close(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
)
{
(void) major;
(void) minor;
(void) arg;
return RTEMS_INTERNAL_ERROR;
}
rtems_device_driver console_read(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
)
{
(void) major;
(void) minor;
(void) arg;
return RTEMS_INTERNAL_ERROR;
}
rtems_device_driver console_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
)
{
(void) major;
(void) minor;
(void) arg;
return RTEMS_INTERNAL_ERROR;
}
rtems_device_driver console_control(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg
)
{
(void) major;
(void) minor;
(void) arg;
return RTEMS_INTERNAL_ERROR;
}

View File

@@ -0,0 +1,26 @@
/*
* Copyright (c) 2013 embedded brains GmbH. All rights reserved.
*
* embedded brains GmbH
* Dornierstr. 4
* 82178 Puchheim
* Germany
* <info@embedded-brains.de>
*
* 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 <rtems/serial_mouse.h>
bool bsp_get_serial_mouse_device(
const char **name,
const char **type
)
{
*name = SERIAL_MOUSE_DEVICE_PS2;
*type = "ps2";
return true;
}

View File

@@ -0,0 +1,31 @@
/**
* @file
* @brief Stub printk() support
*
* This file contains a stub for the required printk() support.
* It is NOT functional!!!
*/
/*
* COPYRIGHT (c) 1989-2014.
* 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.
*/
/*
* To support printk
*/
#include <rtems.h>
#include <rtems/bspIo.h>
static void BSP_output_char_f(char c)
{
/* the character just needs to disappear */
}
BSP_output_char_function_type BSP_output_char = BSP_output_char_f;
BSP_polling_getchar_function_type BSP_poll_char = NULL;