forked from Imagelibrary/rtems
bsps: Move console drivers to bsps
This patch is a part of the BSP source reorganization. Update #3285.
This commit is contained in:
44
bsps/shared/dev/serial/console-output-char.c
Normal file
44
bsps/shared/dev/serial/console-output-char.c
Normal 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;
|
||||
143
bsps/shared/dev/serial/console-polled.c
Normal file
143
bsps/shared/dev/serial/console-polled.c
Normal 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 );
|
||||
}
|
||||
65
bsps/shared/dev/serial/console-termios-init.c
Normal file
65
bsps/shared/dev/serial/console-termios-init.c
Normal 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;
|
||||
}
|
||||
81
bsps/shared/dev/serial/console-termios.c
Normal file
81
bsps/shared/dev/serial/console-termios.c
Normal 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;
|
||||
}
|
||||
26
bsps/shared/dev/serial/getserialmouseps2.c
Normal file
26
bsps/shared/dev/serial/getserialmouseps2.c
Normal 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;
|
||||
}
|
||||
31
bsps/shared/dev/serial/printk-dummy.c
Normal file
31
bsps/shared/dev/serial/printk-dummy.c
Normal 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;
|
||||
Reference in New Issue
Block a user