diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-04-19 06:28:01 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-04-20 13:08:32 +0200 |
commit | d7d66d7d4523b904c8ccc6aea3709dc0d5aa5bdc (patch) | |
tree | caa54b4229e86a68c84ab5961af34e087dce5302 /bsps/sparc64 | |
parent | 58adad484e04859da6977c4d67324b4db90b0e26 (diff) |
bsps: Move console drivers to bsps
This patch is a part of the BSP source reorganization.
Update #3285.
Diffstat (limited to 'bsps/sparc64')
-rw-r--r-- | bsps/sparc64/shared/console/conscfg.c | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/bsps/sparc64/shared/console/conscfg.c b/bsps/sparc64/shared/console/conscfg.c new file mode 100644 index 0000000000..560bdc05bf --- /dev/null +++ b/bsps/sparc64/shared/console/conscfg.c @@ -0,0 +1,115 @@ +/* + * COPYRIGHT (c) 2010 Eugen Leontie. + * + * 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 <libchip/serial.h> + +#include <rtems/bspIo.h> + +#include <boot/ofw.h> + +static int sun4v_console_device_first_open(int major, int minor, void *arg) +{ + return 0; +} + +static ssize_t sun4v_console_poll_write(int minor, const char *buf, size_t n) +{ + ofw_write(buf, n); + return 0; +} + +static void sun4v_console_deviceInitialize (int minor) +{ + +} + +static int sun4v_console_poll_read(int minor){ + int a; + ofw_read(&a,1); + if ( a != 0 ) { + return a>>24; + } + return -1; +} + +static bool sun4v_console_deviceProbe (int minor){ + return true; +} + +/* + * Polled mode functions + */ +const console_fns pooled_functions={ + sun4v_console_deviceProbe, /* deviceProbe */ + sun4v_console_device_first_open, /* deviceFirstOpen */ + NULL, /* deviceLastClose */ + sun4v_console_poll_read, /* deviceRead */ + sun4v_console_poll_write, /* deviceWrite */ + sun4v_console_deviceInitialize, /* deviceInitialize */ + NULL, /* deviceWritePolled */ + NULL, /* deviceSetAttributes */ + NULL /* deviceOutputUsesInterrupts */ +}; + +const console_flow sun4v_console_console_flow = { + NULL, /* deviceStopRemoteTx */ + NULL /* deviceStartRemoteTx */ +}; + +console_tbl Console_Configuration_Ports[] = { + { + "/dev/ttyS0", /* sDeviceName */ + SERIAL_CUSTOM, /* deviceType */ + &pooled_functions, /* pDeviceFns */ + NULL, /* deviceProbe, assume it is there */ + &sun4v_console_console_flow, /* pDeviceFlow */ + 0, /* ulMargin */ + 0, /* ulHysteresis */ + (void *) NULL, /* pDeviceParams */ + 0, /* ulCtrlPort1 */ + 0, /* ulCtrlPort2 */ + 1, /* ulDataPort */ + NULL, /* getRegister */ + NULL, /* setRegister */ + NULL, /* unused */ /* getData */ + NULL, /* unused */ /* setData */ + 0, /* ulClock */ + 0 /* ulIntVector -- base for port */ + }, +}; + +/* + * Declare some information used by the console driver + */ + +#define NUM_CONSOLE_PORTS 1 + +unsigned long Console_Configuration_Count = NUM_CONSOLE_PORTS; + +/* putchar/getchar for printk */ + +static void bsp_out_char (char c) +{ + ofw_write(&c, 1); +} + +BSP_output_char_function_type BSP_output_char = bsp_out_char; + +static int bsp_in_char( void ){ + int tmp; + ofw_read( &tmp, 1 ); /* blocks */ + if( tmp != 0 ) { + return tmp>>24; + } + return -1; +} + +BSP_polling_getchar_function_type BSP_poll_char = bsp_in_char; + |