From 923dd7aa2134da43b21c44d77b148e3828c593fb Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 22 May 2008 20:34:27 +0000 Subject: 2008-05-22 Joel Sherrill * shared/console/console.c: Remove explicit switch and call termios_baud_to_number(). --- c/src/lib/libbsp/powerpc/ChangeLog | 5 + c/src/lib/libbsp/powerpc/shared/console/console.c | 265 +++++++++------------- 2 files changed, 108 insertions(+), 162 deletions(-) (limited to 'c/src') 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 + + * shared/console/console.c: Remove explicit switch and call + termios_baud_to_number(). + 2008-05-15 Joel Sherrill * 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 #include #include -#include /* printk */ +#include /* 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); -- cgit v1.2.3