diff options
Diffstat (limited to 'c/src/lib/libbsp/sparc/shared/uart/cons.c')
-rw-r--r-- | c/src/lib/libbsp/sparc/shared/uart/cons.c | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/c/src/lib/libbsp/sparc/shared/uart/cons.c b/c/src/lib/libbsp/sparc/shared/uart/cons.c deleted file mode 100644 index 37f448cbf1..0000000000 --- a/c/src/lib/libbsp/sparc/shared/uart/cons.c +++ /dev/null @@ -1,136 +0,0 @@ -/* This file contains the TTY driver for the serial ports. The driver - * is layered so that different UART hardware can be used. It is implemented - * using the Driver Manager. - * - * This driver uses the termios pseudo driver. - * - * COPYRIGHT (c) 2010. - * Cobham Gaisler AB. - * - * 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 <stdlib.h> -#include <bsp/cons.h> -#include <rtems/console.h> - -#ifdef RTEMS_DRVMGR_STARTUP - -/* Note that it is not possible to use the interrupt mode of the driver - * together with the "old" APBUART and -u to GRMON. However the new - * APBUART core (from 1.0.17-b2710) has the GRMON debug bit and can - * handle interrupts. - */ - -static int console_initialized = 0; - -#define FLAG_SYSCON 0x01 -struct console_priv { - int flags; /* 0x1=SystemConsole */ - int minor; - struct console_dev *dev; -}; - -#define CONSOLE_MAX BSP_NUMBER_OF_TERMIOS_PORTS -struct console_priv cons[CONSOLE_MAX] = {{0,0},}; - -/* Install Console in TERMIOS layer */ -static void console_dev_init(struct console_priv *con) -{ - char name[16], *fsname; - rtems_status_code status; - int minor; - - minor = con->minor; - if (!con->dev->fsname) { - strcpy(name, "/dev/console_a"); - /* Special console name and MINOR for SYSTEM CONSOLE */ - if (minor == 0) - name[12] = '\0'; /* /dev/console */ - name[13] += minor; /* when minor=0, this has no effect... */ - fsname = name; - } else { - fsname = con->dev->fsname; - } - status = rtems_termios_device_install( - fsname, - con->dev->handler, - NULL, - &con->dev->base - ); - if (status != RTEMS_SUCCESSFUL) { - rtems_fatal_error_occurred(status); - } -} - -/* Called by device driver to register itself to the cons interface. */ -void console_dev_register(struct console_dev *dev) -{ - int i, minor = 0; - struct console_priv *con = NULL; - - if ((dev->flags & CONSOLE_FLAG_SYSCON) && !cons[0].dev) { - con = &cons[0]; - con->flags = FLAG_SYSCON; - } else { - for (i=1; i<CONSOLE_MAX; i++) { - if (!cons[i].dev) { - con = &cons[i]; - con->flags = 0; - minor = i; - break; - } - } - } - if (con == NULL) { - /* Not enough console structures */ - return; - } - dev->flags &= ~CONSOLE_FLAG_SYSCON_GRANT; - if (con->flags & FLAG_SYSCON) { - dev->flags |= CONSOLE_FLAG_SYSCON_GRANT; - } - - /* Assign Console */ - con->dev = dev; - con->minor = minor; - - if (console_initialized) { - /* Console layer is already initialized, that means that we can - * register termios interface directly. - */ - console_dev_init(con); - } -} - -#if 0 -void console_dev_unregister(struct console_dev *dev) -{ - -} -#endif - -rtems_device_driver console_initialize( - rtems_device_major_number major, - rtems_device_minor_number minor, - void *arg) -{ - int i; - - rtems_termios_initialize(); - - /* Register all Console a file system device node */ - for (i=0; i<CONSOLE_MAX; i++) { - if (cons[i].dev) - console_dev_init(&cons[i]); - } - - console_initialized = 1; - - return RTEMS_SUCCESSFUL; -} - -#endif |