summaryrefslogtreecommitdiffstats
path: root/c/src/lib
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2001-08-16 21:49:11 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2001-08-16 21:49:11 +0000
commit465ab0908dbedcf1fb74354b6846d238f507dcef (patch)
treef5ffd4a27149d01ccaf3f211928e175dc5126bb0 /c/src/lib
parent2001-08-26 Brett Swimley <brett.swimley@aedinc.net> (diff)
downloadrtems-465ab0908dbedcf1fb74354b6846d238f507dcef.tar.bz2
2001-08-01 Radzislaw Galler <rgaller@et.put.poznan.pl>
* include/bsp.h: Disabled redefinition of CONSOLE_DRIVER_TABLE_ENTRY. Some "FIXME:" comments added. * console/config.c: New file. Definitions of externs referenced from libbsp/shared/console.c. * console/Makefile.am: Changed VPATH to point to libbsp/shared. Added config.c to C_FILES and EXTRA_DIST.
Diffstat (limited to 'c/src/lib')
-rw-r--r--c/src/lib/libbsp/sh/gensh2/console/config.c137
1 files changed, 137 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/sh/gensh2/console/config.c b/c/src/lib/libbsp/sh/gensh2/console/config.c
new file mode 100644
index 0000000000..f0de80c607
--- /dev/null
+++ b/c/src/lib/libbsp/sh/gensh2/console/config.c
@@ -0,0 +1,137 @@
+/*
+ * This file contains the TTY driver table. The implementation is
+ * based on libchip/serial drivers, but it uses internal SHx SCI so
+ * the implementation of the driver is placed in
+ * lib/libcpu/sh/sh7045/sci instead of libchip/serial.
+ *
+ * COPYRIGHT (c) 1989-2001.
+ * 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.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ *
+ */
+
+#include <bsp.h>
+#include <libchip/serial.h>
+#include <libchip/sersupp.h>
+#include <sh/sci_termios.h>
+#include <rtems/score/sh_io.h>
+#include <rtems/score/ispsh7045.h>
+#include <rtems/score/iosh7045.h>
+#include <rtems/termiostypes.h>
+
+
+/*
+ * Function set for interrupt enabled termios console
+ */
+console_fns sh_sci_fns =
+{
+ libchip_serial_default_probe, /* deviceProbe */
+ sh_sci_first_open, /* deviceFirstOpen */
+ NULL, /* deviceLastClose */
+ NULL, /* deviceRead */
+ sh_sci_write_support_int, /* deviceWrite */
+ sh_sci_initialize_interrupts, /* deviceInitialize */
+ sh_sci_write_polled, /* deviceWritePolled */
+ sh_sci_set_attributes, /* deviceSetAttributes */
+ TERMIOS_IRQ_DRIVEN /* deviceOutputUsesInterrupts */
+};
+
+/*
+ * Function set for polled termios console
+ */
+console_fns sh_sci_fns_polled =
+{
+ libchip_serial_default_probe, /* deviceProbe */
+ sh_sci_first_open, /* deviceFirstOpen */
+ sh_sci_last_close, /* deviceLastClose */
+ sh_sci_inbyte_nonblocking_polled, /* deviceRead */
+ sh_sci_write_support_polled, /* deviceWrite */
+ sh_sci_init, /* deviceInitialize */
+ sh_sci_write_polled, /* deviceWritePolled */
+ sh_sci_set_attributes, /* deviceSetAttributes */
+ TERMIOS_POLLED /* deviceOutputUsesInterrupts */
+};
+
+#if 1 /* (CONSOLE_USE_INTERRUPTS) */
+#define SCI_FUNCTIONS &sh_sci_fns
+#else
+#define SCI_FUNCTIONS &sh_sci_fns_polled
+#endif
+
+static const struct termios term1 = {
+ 0,
+ 0,
+ B9600 | CS8,
+ 0,
+ 0,
+ { 0 }
+};
+
+
+static const struct termios term2 = {
+ 0,
+ 0,
+ B115200 | CS8,
+ 0,
+ 0,
+ { 0 }
+};
+
+
+console_tbl Console_Port_Tbl[] = {
+ {
+ "/dev/sci0", /* sDeviceName */
+ SERIAL_CUSTOM, /* deviceType */
+ SCI_FUNCTIONS, /* pDeviceFns */
+ NULL, /* deviceProbe */
+ NULL, /* pDeviceFlow */
+ 16, /* ulMargin */
+ 8, /* ulHysteresis */
+ (void *)&term1, /* baud rate */ /* pDeviceParams */
+ SCI_SMR0, /* ulCtrlPort1 */
+ 3, /* ulCtrlPort2 as IRQ priority level*/
+ TXI0_ISP_V, /* ulDataPort as TX end vector number*/
+ NULL, /* unused */ /* getRegister */
+ NULL, /* unused */ /* setRegister */
+ NULL, /* unused */ /* getData */
+ NULL, /* unused */ /* setData */
+ 0, /* ulClock */
+ RXI0_ISP_V, /* ulIntVector as RX end vector number*/
+ },
+ {
+ "/dev/sci1", /* sDeviceName */
+ SERIAL_CUSTOM, /* deviceType */
+ SCI_FUNCTIONS, /* pDeviceFns */
+ NULL, /* deviceProbe */
+ NULL, /* pDeviceFlow */
+ 16, /* ulMargin */
+ 8, /* ulHysteresis */
+ (void *)&term2, /* baud rate */ /* pDeviceParams */
+ SCI_SMR1, /* ulCtrlPort1 */
+ 3, /* ulCtrlPort2 as IRQ priority level*/
+ TXI1_ISP_V, /* ulDataPort as TX end vector number*/
+ NULL, /* unused */ /* getRegister */
+ NULL, /* unused */ /* setRegister */
+ NULL, /* unused */ /* getData */
+ NULL, /* unused */ /* setData */
+ 0, /* ulClock */
+ RXI1_ISP_V, /* ulIntVector as RX end vector number*/
+ }
+};
+
+/*
+ * Declare some information used by the console driver
+ */
+
+#define NUM_CONSOLE_PORTS (sizeof(Console_Port_Tbl)/sizeof(console_tbl))
+
+unsigned long Console_Port_Count = NUM_CONSOLE_PORTS;
+
+console_data Console_Port_Data[NUM_CONSOLE_PORTS];
+
+rtems_device_minor_number Console_Port_Minor;