summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-05-22 20:34:27 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-05-22 20:34:27 +0000
commit923dd7aa2134da43b21c44d77b148e3828c593fb (patch)
treee0d304d09557773e28c642450f92bdc655feb29f /c
parent2008-05-22 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-923dd7aa2134da43b21c44d77b148e3828c593fb.tar.bz2
2008-05-22 Joel Sherrill <joel.sherrill@oarcorp.com>
* shared/console/console.c: Remove explicit switch and call termios_baud_to_number().
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/ChangeLog5
-rw-r--r--c/src/lib/libbsp/powerpc/shared/console/console.c265
2 files changed, 108 insertions, 162 deletions
diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog
index fee6a7c79c..f11ddb035b 100644
--- a/c/src/lib/libbsp/powerpc/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/ChangeLog
@@ -1,3 +1,8 @@
+2008-05-22 Joel Sherrill <joel.sherrill@oarcorp.com>
+
+ * shared/console/console.c: Remove explicit switch and call
+ termios_baud_to_number().
+
2008-05-15 Joel Sherrill <joel.sherrill@OARcorp.com>
* shared/startup/pretaskinghook.c: Add capability for bootcard.c BSP
diff --git a/c/src/lib/libbsp/powerpc/shared/console/console.c b/c/src/lib/libbsp/powerpc/shared/console/console.c
index a2c17441e2..e8f3d1349d 100644
--- a/c/src/lib/libbsp/powerpc/shared/console/console.c
+++ b/c/src/lib/libbsp/powerpc/shared/console/console.c
@@ -35,14 +35,14 @@ extern int close(int fd);
#include <rtems/termiostypes.h>
#include <termios.h>
#include <bsp/uart.h>
-#include <rtems/bspIo.h> /* printk */
+#include <rtems/bspIo.h> /* printk */
/* Definitions for BSPConsolePort */
/*
* Possible value for console input/output :
- * BSP_CONSOLE_PORT_CONSOLE
- * BSP_UART_COM1
- * BSP_UART_COM2
+ * BSP_CONSOLE_PORT_CONSOLE
+ * BSP_UART_COM1
+ * BSP_UART_COM2
*/
int BSPConsolePort = BSP_CONSOLE_PORT;
@@ -54,15 +54,15 @@ int BSPBaseBaud = BSP_UART_BAUD_BASE;
* small changes)...
*/
#ifndef TERMIOS_OUTPUT_MODE
-#if 1
-#define TERMIOS_OUTPUT_MODE TERMIOS_IRQ_DRIVEN
-#else
-#define TERMIOS_OUTPUT_MODE TERMIOS_TASK_DRIVEN
-#endif
+ #if 1
+ #define TERMIOS_OUTPUT_MODE TERMIOS_IRQ_DRIVEN
+ #else
+ #define TERMIOS_OUTPUT_MODE TERMIOS_TASK_DRIVEN
+ #endif
#endif
#if ! defined(USE_POLLED_IO) && (TERMIOS_OUTPUT_MODE == TERMIOS_POLLED)
-#define USE_POLLED_IO
+ #define USE_POLLED_IO
#endif
/*-------------------------------------------------------------------------+
@@ -72,25 +72,25 @@ int BSPBaseBaud = BSP_UART_BAUD_BASE;
static int conSetAttr(int minor, const struct termios *);
typedef struct TtySTblRec_ {
- char *name;
- rtems_irq_hdl isr;
+ char *name;
+ rtems_irq_hdl isr;
} TtySTblRec, *TtySTbl;
static TtySTblRec ttyS[]={
- { "/dev/ttyS0",
+ { "/dev/ttyS0",
#ifdef BSP_UART_IOBASE_COM1
- BSP_uart_termios_isr_com1
+ BSP_uart_termios_isr_com1
#else
- 0
+ 0
#endif
- },
- { "/dev/ttyS1",
+ },
+ { "/dev/ttyS1",
#ifdef BSP_UART_IOBASE_COM2
- BSP_uart_termios_isr_com2
+ BSP_uart_termios_isr_com2
#else
- 0
+ 0
#endif
- },
+ },
};
/*-------------------------------------------------------------------------+
@@ -98,10 +98,11 @@ static TtySTblRec ttyS[]={
+--------------------------------------------------------------------------+
| Initilizes the I/O console (keyboard + VGA display) driver.
+--------------------------------------------------------------------------*/
-rtems_device_driver
-console_initialize(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg)
+rtems_device_driver console_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
{
rtems_status_code status;
@@ -113,7 +114,7 @@ console_initialize(rtems_device_major_number major,
/*
* Set up TERMIOS
*/
- rtems_termios_initialize ();
+ rtems_termios_initialize();
/*
* Do device-specific initialization
@@ -124,32 +125,28 @@ console_initialize(rtems_device_major_number major,
*/
for (minor=0; minor < sizeof(ttyS)/sizeof(ttyS[0]); minor++) {
- char *nm;
- /*
- * Skip ports (possibly not supported by BSP...) we have no ISR for
- */
- if ( ! ttyS[minor].isr )
- continue;
- /*
- * Register the device
- */
- status = rtems_io_register_name ((nm=ttyS[minor].name), major, minor);
- if ( RTEMS_SUCCESSFUL==status && BSPConsolePort == minor)
- {
- printk("Registering /dev/console as minor %d (==%s)\n",
- minor,
- ttyS[minor].name);
- /* also register an alias */
- status = rtems_io_register_name (
- (nm="/dev/console"),
- major,
- minor);
- }
- if (status != RTEMS_SUCCESSFUL)
- {
- printk("Error registering %s!\n",nm);
- rtems_fatal_error_occurred (status);
- }
+ char *nm;
+ /*
+ * Skip ports (possibly not supported by BSP...) we have no ISR for
+ */
+ if ( ! ttyS[minor].isr )
+ continue;
+ /*
+ * Register the device
+ */
+ status = rtems_io_register_name ((nm=ttyS[minor].name), major, minor);
+ if ( RTEMS_SUCCESSFUL==status && BSPConsolePort == minor) {
+ printk("Registering /dev/console as minor %d (==%s)\n",
+ minor,
+ ttyS[minor].name);
+ /* also register an alias */
+ status = rtems_io_register_name ( (nm="/dev/console"), major, minor);
+ }
+
+ if (status != RTEMS_SUCCESSFUL) {
+ printk("Error registering %s!\n",nm);
+ rtems_fatal_error_occurred (status);
+ }
}
return RTEMS_SUCCESSFUL;
@@ -159,19 +156,18 @@ static int console_first_open(int major, int minor, void *arg)
{
rtems_status_code status;
- /* must not open a minor device we have no ISR for */
- assert( minor>=0 && minor < sizeof(ttyS)/sizeof(ttyS[0]) && ttyS[minor].isr );
-
- /* 9600-8-N-1 */
- BSP_uart_init(minor, 9600, 0);
- status = BSP_uart_install_isr(minor, ttyS[minor].isr);
- if (!status)
- {
- printk("Error installing serial console interrupt handler for '%s'!\n",
- ttyS[minor].name);
- rtems_fatal_error_occurred(status);
- }
- return 0;
+ /* must not open a minor device we have no ISR for */
+ assert( minor>=0 && minor < sizeof(ttyS)/sizeof(ttyS[0]) && ttyS[minor].isr );
+
+ /* 9600-8-N-1 */
+ BSP_uart_init(minor, 9600, 0);
+ status = BSP_uart_install_isr(minor, ttyS[minor].isr);
+ if (!status) {
+ printk("Error installing serial console interrupt handler for '%s'!\n",
+ ttyS[minor].name);
+ rtems_fatal_error_occurred(status);
+ }
+ return 0;
}
static int console_last_close(int major, int minor, void *arg)
@@ -183,10 +179,11 @@ static int console_last_close(int major, int minor, void *arg)
/*-------------------------------------------------------------------------+
| Console device driver OPEN entry point
+--------------------------------------------------------------------------*/
-rtems_device_driver
-console_open(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg)
+rtems_device_driver console_open(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
{
rtems_status_code status;
static rtems_termios_callbacks cb =
@@ -220,17 +217,16 @@ console_open(rtems_device_major_number major,
status = rtems_termios_open (major, minor, arg, &cb);
- if(status != RTEMS_SUCCESSFUL)
- {
- printk("Error opening console device\n");
- return status;
- }
+ if (status != RTEMS_SUCCESSFUL) {
+ printk("Error opening console device\n");
+ return status;
+ }
/*
* Pass data area info down to driver
*/
BSP_uart_termios_set(minor,
- ((rtems_libio_open_close_args_t *)arg)->iop->data1);
+ ((rtems_libio_open_close_args_t *)arg)->iop->data1);
/* Enable interrupts on channel */
BSP_uart_intr_ctrl(minor, BSP_UART_INTR_CTRL_TERMIOS);
@@ -241,9 +237,11 @@ console_open(rtems_device_major_number major,
| Console device driver CLOSE entry point
+--------------------------------------------------------------------------*/
rtems_device_driver
-console_close(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg)
+console_close(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
{
rtems_device_driver res = RTEMS_SUCCESSFUL;
@@ -257,12 +255,12 @@ console_close(rtems_device_major_number major,
+--------------------------------------------------------------------------+
| Read characters from the I/O console. We only have stdin.
+--------------------------------------------------------------------------*/
-rtems_device_driver
-console_read(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg)
+rtems_device_driver console_read(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
{
-
return rtems_termios_read (arg);
} /* console_read */
@@ -271,104 +269,47 @@ console_read(rtems_device_major_number major,
+--------------------------------------------------------------------------+
| Write characters to the I/O console. Stderr and stdout are the same.
+--------------------------------------------------------------------------*/
-rtems_device_driver
-console_write(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void * arg)
+rtems_device_driver console_write(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
{
-
return rtems_termios_write (arg);
-
} /* console_write */
/*
* Handle ioctl request.
*/
-rtems_device_driver
-console_control(rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *arg
+rtems_device_driver console_control(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+)
)
{
/* does the BSP support break callbacks ? */
#if defined(BIOCSETBREAKCB) && defined(BIOCGETBREAKCB)
-rtems_libio_ioctl_args_t *ioa=arg;
- switch (ioa->command) {
- case BIOCSETBREAKCB:
- return BSP_uart_set_break_cb(minor, ioa);
- case BIOCGETBREAKCB:
- return BSP_uart_get_break_cb(minor, ioa);
-
- default:
- break;
- }
+ rtems_libio_ioctl_args_t *ioa=arg;
+ switch (ioa->command) {
+ case BIOCSETBREAKCB: return BSP_uart_set_break_cb(minor, ioa);
+ case BIOCGETBREAKCB: return BSP_uart_get_break_cb(minor, ioa);
+ default: break;
+ }
#endif
return rtems_termios_ioctl (arg);
}
-static int
-conSetAttr(int minor, const struct termios *t)
+static int conSetAttr(
+ int minor,
+ const struct termios *t
+)
{
int baud;
- switch (t->c_cflag & CBAUD)
- {
- case B50:
- baud = 50;
- break;
- case B75:
- baud = 75;
- break;
- case B110:
- baud = 110;
- break;
- case B134:
- baud = 134;
- break;
- case B150:
- baud = 150;
- break;
- case B200:
- baud = 200;
- break;
- case B300:
- baud = 300;
- break;
- case B600:
- baud = 600;
- break;
- case B1200:
- baud = 1200;
- break;
- case B1800:
- baud = 1800;
- break;
- case B2400:
- baud = 2400;
- break;
- case B4800:
- baud = 4800;
- break;
- case B9600:
- baud = 9600;
- break;
- case B19200:
- baud = 19200;
- break;
- case B38400:
- baud = 38400;
- break;
- case B57600:
- baud = 57600;
- break;
- case B115200:
- baud = 115200;
- break;
- default:
- baud = 0;
- rtems_fatal_error_occurred (RTEMS_INTERNAL_ERROR);
- return 0;
- }
+ baud = termios_baud_to_number(t->c_cflag & CBAUD);
+ if ( baud > 115200 )
+ rtems_fatal_error_occurred (RTEMS_INTERNAL_ERROR);
BSP_uart_set_baud(minor, baud);