summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/shared/console
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2004-11-10 23:51:17 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2004-11-10 23:51:17 +0000
commite79a194755c89fc9330ce74d6af450fa7c18c802 (patch)
tree8b4ba416f0d5996b89bb1a342e8b40b84d86b42e /c/src/lib/libbsp/powerpc/shared/console
parent2004-11-10 Richard Campbell <richard.campbell@oarcorp.com> (diff)
downloadrtems-e79a194755c89fc9330ce74d6af450fa7c18c802.tar.bz2
2004-11-10 Richard Campbell <richard.campbell@oarcorp.com>
* Makefile.am, bootloader/misc.c, bootloader/pci.c, bootloader/pci.h, console/console.c, console/inch.c, console/reboot.c, console/uart.c, console/uart.h, irq/irq.c, irq/irq.h, irq/irq_init.c, motorola/motorola.c, motorola/motorola.h, openpic/openpic.c, openpic/openpic.h, pci/detect_raven_bridge.c, pci/pci.c, start/start.S, startup/bspstart.c, vectors/vectors_init.c, vme/vmeconfig.c: Add MVME2100 BSP and MPC8240 support. There was also a significant amount of spelling and whitespace cleanup. * tod/todcfg.c: New file.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/shared/console')
-rw-r--r--c/src/lib/libbsp/powerpc/shared/console/console.c35
-rw-r--r--c/src/lib/libbsp/powerpc/shared/console/inch.c2
-rw-r--r--c/src/lib/libbsp/powerpc/shared/console/reboot.c2
-rw-r--r--c/src/lib/libbsp/powerpc/shared/console/uart.c33
-rw-r--r--c/src/lib/libbsp/powerpc/shared/console/uart.h3
5 files changed, 59 insertions, 16 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/console/console.c b/c/src/lib/libbsp/powerpc/shared/console/console.c
index 510cd6ede5..9a86ebf97b 100644
--- a/c/src/lib/libbsp/powerpc/shared/console/console.c
+++ b/c/src/lib/libbsp/powerpc/shared/console/console.c
@@ -132,8 +132,8 @@ console_initialize(rtems_device_major_number major,
printk("Error registering %s!\n",nm);
rtems_fatal_error_occurred (status);
}
-
}
+
return RTEMS_SUCCESSFUL;
} /* console_initialize */
@@ -172,22 +172,35 @@ console_open(rtems_device_major_number major,
{
rtems_status_code status;
static rtems_termios_callbacks cb =
- {
- console_first_open, /* firstOpen */
- console_last_close, /* lastClose */
- NULL, /* pollRead */
- BSP_uart_termios_write_com, /* write */
- conSetAttr, /* setAttributes */
- NULL, /* stopRemoteTx */
- NULL, /* startRemoteTx */
- 1 /* outputUsesInterrupts */
+#if defined(USE_POLLED_IO)
+ {
+ NULL, /* firstOpen */
+ NULL, /* lastClose */
+ NULL, /* pollRead */
+ BSP_uart_termios_write_polled, /* write */
+ conSetAttr, /* setAttributes */
+ NULL, /* stopRemoteTx */
+ NULL, /* startRemoteTx */
+ 0 /* outputUsesInterrupts */
};
+#else
+ {
+ console_first_open, /* firstOpen */
+ console_last_close, /* lastClose */
+ NULL, /* pollRead */
+ BSP_uart_termios_write_com, /* write */
+ conSetAttr, /* setAttributes */
+ NULL, /* stopRemoteTx */
+ NULL, /* startRemoteTx */
+ 1 /* outputUsesInterrupts */
+ };
+#endif
status = rtems_termios_open (major, minor, arg, &cb);
if(status != RTEMS_SUCCESSFUL)
{
- printk("Error openning console device\n");
+ printk("Error opening console device\n");
return status;
}
diff --git a/c/src/lib/libbsp/powerpc/shared/console/inch.c b/c/src/lib/libbsp/powerpc/shared/console/inch.c
index 42c3cc7df7..eede297349 100644
--- a/c/src/lib/libbsp/powerpc/shared/console/inch.c
+++ b/c/src/lib/libbsp/powerpc/shared/console/inch.c
@@ -20,6 +20,7 @@
*/
#include <bsp.h>
+#ifdef BSP_KBD_IOBASE
#include <bsp/irq.h>
#include "console.inl"
@@ -296,3 +297,4 @@ _IBMPC_inch_sleep(void)
return c;
} /* _IBMPC_inch */
+#endif
diff --git a/c/src/lib/libbsp/powerpc/shared/console/reboot.c b/c/src/lib/libbsp/powerpc/shared/console/reboot.c
index b6a760b532..2ea5422bd5 100644
--- a/c/src/lib/libbsp/powerpc/shared/console/reboot.c
+++ b/c/src/lib/libbsp/powerpc/shared/console/reboot.c
@@ -16,5 +16,7 @@ void rtemsReboot(void)
printk("Printing a stack trace for your convenience :-)\n");
CPU_print_stack();
/* shutdown and reboot */
+#if defined(BSP_KBD_IOBASE)
kbd_outb(0x4, 0xFE); /* use keyboard controler to do the job... */
+#endif
} /* rtemsReboot */
diff --git a/c/src/lib/libbsp/powerpc/shared/console/uart.c b/c/src/lib/libbsp/powerpc/shared/console/uart.c
index 2532bef720..dc09a73608 100644
--- a/c/src/lib/libbsp/powerpc/shared/console/uart.c
+++ b/c/src/lib/libbsp/powerpc/shared/console/uart.c
@@ -200,8 +200,8 @@ BSP_uart_set_baud(int uart, int baud)
/*
* This function may be called whenever TERMIOS parameters
- * are changed, so we have to make sire that baud change is
- * indeed required
+ * are changed, so we have to make sure that baud change is
+ * indeed required.
*/
if(baud == uart_data[uart].baud)
@@ -458,8 +458,14 @@ uart_noop(const rtems_irq_connect_data *unused)
static int
uart_isr_is_on(const rtems_irq_connect_data *irq)
{
-int uart = (irq->name == BSP_ISA_UART_COM1_IRQ) ?
+ int uart;
+
+#if defined(mvme2100)
+ uart = BSP_UART_COM1;
+#else
+ uart = (irq->name == BSP_ISA_UART_COM1_IRQ) ?
BSP_UART_COM1 : BSP_UART_COM2;
+#endif
return uread(uart,IER);
}
@@ -467,8 +473,12 @@ static int
doit(int uart, rtems_irq_hdl handler, int (*p)(const rtems_irq_connect_data*))
{
rtems_irq_connect_data d={0};
+#if defined(mvme2100)
+ d.name = BSP_UART_COM1_IRQ;
+#else
d.name = (uart == BSP_UART_COM1) ?
BSP_ISA_UART_COM1_IRQ : BSP_ISA_UART_COM2_IRQ;
+#endif
d.off = d.on = uart_noop;
d.isOn = uart_isr_is_on;
d.hdl = handler;
@@ -523,6 +533,21 @@ BSP_uart_termios_set(int uart, void *ttyp)
}
int
+BSP_uart_termios_write_polled(int minor, const char *buf, int len)
+{
+ int uart=minor; /* could differ, theoretically */
+ int nwrite;
+ const char *b = buf;
+
+ assert(buf != NULL);
+
+ for (nwrite=0 ; nwrite < len ; nwrite++) {
+ BSP_uart_polled_write(uart, *b++);
+ }
+ return nwrite;
+}
+
+int
BSP_uart_termios_write_com(int minor, const char *buf, int len)
{
int uart=minor; /* could differ, theoretically */
@@ -533,7 +558,7 @@ BSP_uart_termios_write_com(int minor, const char *buf, int len)
return 0;
}
- /* If there TX buffer is busy - something is royally screwed up */
+ /* If the TX buffer is busy - something is royally screwed up */
/* assert((uread(BSP_UART_COM1, LSR) & THRE) != 0); */
if(termios_stopped_com[uart])
diff --git a/c/src/lib/libbsp/powerpc/shared/console/uart.h b/c/src/lib/libbsp/powerpc/shared/console/uart.h
index 8396603d47..0ac66e69b3 100644
--- a/c/src/lib/libbsp/powerpc/shared/console/uart.h
+++ b/c/src/lib/libbsp/powerpc/shared/console/uart.h
@@ -16,7 +16,7 @@
#include <rtems/libio.h>
void BSP_uart_init(int uart, int baud, int hwFlow);
-void BSP_uart_set_baud(int aurt, int baud);
+void BSP_uart_set_baud(int uart, int baud);
void BSP_uart_intr_ctrl(int uart, int cmd);
void BSP_uart_throttle(int uart);
void BSP_uart_unthrottle(int uart);
@@ -31,6 +31,7 @@ void BSP_uart_dbgisr_com1(void);
void BSP_uart_dbgisr_com2(void);
int BSP_uart_install_isr(int uart, rtems_irq_hdl handler);
int BSP_uart_remove_isr(int uart, rtems_irq_hdl handler);
+int BSP_uart_termios_write_polled(int minor, const char *buf, int len);
int BSP_uart_get_break_cb(int uart, rtems_libio_ioctl_args_t *arg);
int BSP_uart_set_break_cb(int uart, rtems_libio_ioctl_args_t *arg);