2008-05-22 Joel Sherrill <joel.sherrill@oarcorp.com>

* shared/console/console.c: Remove explicit switch and call
	termios_baud_to_number().
This commit is contained in:
Joel Sherrill
2008-05-22 20:34:27 +00:00
parent 07edbef54e
commit 923dd7aa21
2 changed files with 107 additions and 161 deletions

View File

@@ -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

View File

@@ -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_driver console_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
void *arg
)
{
rtems_status_code status;
@@ -134,19 +135,15 @@ console_initialize(rtems_device_major_number major,
* Register the device
*/
status = rtems_io_register_name ((nm=ttyS[minor].name), major, minor);
if ( RTEMS_SUCCESSFUL==status && BSPConsolePort == 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);
status = rtems_io_register_name ( (nm="/dev/console"), major, minor);
}
if (status != RTEMS_SUCCESSFUL)
{
if (status != RTEMS_SUCCESSFUL) {
printk("Error registering %s!\n",nm);
rtems_fatal_error_occurred (status);
}
@@ -165,8 +162,7 @@ static int console_first_open(int major, int minor, void *arg)
/* 9600-8-N-1 */
BSP_uart_init(minor, 9600, 0);
status = BSP_uart_install_isr(minor, ttyS[minor].isr);
if (!status)
{
if (!status) {
printk("Error installing serial console interrupt handler for '%s'!\n",
ttyS[minor].name);
rtems_fatal_error_occurred(status);
@@ -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_driver console_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
void *arg
)
{
rtems_status_code status;
static rtems_termios_callbacks cb =
@@ -220,8 +217,7 @@ console_open(rtems_device_major_number major,
status = rtems_termios_open (major, minor, arg, &cb);
if(status != RTEMS_SUCCESSFUL)
{
if (status != RTEMS_SUCCESSFUL) {
printk("Error opening console device\n");
return status;
}
@@ -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,
console_close(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
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_driver console_read(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *arg)
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_driver console_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void * arg)
void *arg
)
{
return rtems_termios_write (arg);
} /* console_write */
/*
* Handle ioctl request.
*/
rtems_device_driver
console_control(rtems_device_major_number major,
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;
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;
baud = termios_baud_to_number(t->c_cflag & CBAUD);
if ( baud > 115200 )
rtems_fatal_error_occurred (RTEMS_INTERNAL_ERROR);
return 0;
}
BSP_uart_set_baud(minor, baud);