summaryrefslogtreecommitdiffstats
path: root/bsps/shared
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-19 06:28:01 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-20 13:08:32 +0200
commitd7d66d7d4523b904c8ccc6aea3709dc0d5aa5bdc (patch)
treecaa54b4229e86a68c84ab5961af34e087dce5302 /bsps/shared
parentbsps/powerpc: Move shared btimer support (diff)
downloadrtems-d7d66d7d4523b904c8ccc6aea3709dc0d5aa5bdc.tar.bz2
bsps: Move console drivers to bsps
This patch is a part of the BSP source reorganization. Update #3285.
Diffstat (limited to 'bsps/shared')
-rw-r--r--bsps/shared/dev/serial/console-output-char.c44
-rw-r--r--bsps/shared/dev/serial/console-polled.c143
-rw-r--r--bsps/shared/dev/serial/console-termios-init.c65
-rw-r--r--bsps/shared/dev/serial/console-termios.c81
-rw-r--r--bsps/shared/dev/serial/getserialmouseps2.c26
-rw-r--r--bsps/shared/dev/serial/printk-dummy.c31
6 files changed, 390 insertions, 0 deletions
diff --git a/bsps/shared/dev/serial/console-output-char.c b/bsps/shared/dev/serial/console-output-char.c
new file mode 100644
index 0000000000..fec204663a
--- /dev/null
+++ b/bsps/shared/dev/serial/console-output-char.c
@@ -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;
diff --git a/bsps/shared/dev/serial/console-polled.c b/bsps/shared/dev/serial/console-polled.c
new file mode 100644
index 0000000000..26c9817bdb
--- /dev/null
+++ b/bsps/shared/dev/serial/console-polled.c
@@ -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 );
+}
diff --git a/bsps/shared/dev/serial/console-termios-init.c b/bsps/shared/dev/serial/console-termios-init.c
new file mode 100644
index 0000000000..a01a75abf2
--- /dev/null
+++ b/bsps/shared/dev/serial/console-termios-init.c
@@ -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;
+}
diff --git a/bsps/shared/dev/serial/console-termios.c b/bsps/shared/dev/serial/console-termios.c
new file mode 100644
index 0000000000..1e755d91c9
--- /dev/null
+++ b/bsps/shared/dev/serial/console-termios.c
@@ -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;
+}
diff --git a/bsps/shared/dev/serial/getserialmouseps2.c b/bsps/shared/dev/serial/getserialmouseps2.c
new file mode 100644
index 0000000000..dc30deecbf
--- /dev/null
+++ b/bsps/shared/dev/serial/getserialmouseps2.c
@@ -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;
+}
diff --git a/bsps/shared/dev/serial/printk-dummy.c b/bsps/shared/dev/serial/printk-dummy.c
new file mode 100644
index 0000000000..8273edb83a
--- /dev/null
+++ b/bsps/shared/dev/serial/printk-dummy.c
@@ -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;