Patch from Eric Norum <eric@cls.usask.ca> to ensure the console

initialization is only done once.
This commit is contained in:
Joel Sherrill
1999-10-04 13:47:31 +00:00
parent 67d0f4e1eb
commit cb6208444b

View File

@@ -138,8 +138,8 @@ smc1InterruptHandler (rtems_vector_number v)
m360.cisr = 1UL << 4; /* Clear SMC1 interrupt-in-service bit */ m360.cisr = 1UL << 4; /* Clear SMC1 interrupt-in-service bit */
} }
static void static int
smc1Initialize (void) smc1Initialize (int major, int minor, void *arg)
{ {
/* /*
* Allocate buffer descriptors * Allocate buffer descriptors
@@ -224,6 +224,8 @@ smc1Initialize (void)
m360.smc1.smcm = 3; /* Enable SMC1 TX and RX interrupts */ m360.smc1.smcm = 3; /* Enable SMC1 TX and RX interrupts */
m360.cimr |= 1UL << 4; /* Enable SMC1 interrupts */ m360.cimr |= 1UL << 4; /* Enable SMC1 interrupts */
} }
return 0;
} }
static int static int
@@ -301,11 +303,6 @@ rtems_device_driver console_initialize(
*/ */
rtems_termios_initialize (); rtems_termios_initialize ();
/*
* Do device-specific initialization
*/
smc1Initialize ();
/* /*
* Register the device * Register the device
*/ */
@@ -326,7 +323,7 @@ rtems_device_driver console_open(
{ {
rtems_status_code sc; rtems_status_code sc;
static const rtems_termios_callbacks intrCallbacks = { static const rtems_termios_callbacks intrCallbacks = {
NULL, /* firstOpen */ smc1Initialize, /* firstOpen */
NULL, /* lastClose */ NULL, /* lastClose */
NULL, /* pollRead */ NULL, /* pollRead */
smc1InterruptWrite, /* write */ smc1InterruptWrite, /* write */
@@ -336,7 +333,7 @@ rtems_device_driver console_open(
1 /* outputUsesInterrupts */ 1 /* outputUsesInterrupts */
}; };
static const rtems_termios_callbacks pollCallbacks = { static const rtems_termios_callbacks pollCallbacks = {
NULL, /* firstOpen */ smc1Initialize, /* firstOpen */
NULL, /* lastClose */ NULL, /* lastClose */
smc1PollRead, /* pollRead */ smc1PollRead, /* pollRead */
smc1PollWrite, /* write */ smc1PollWrite, /* write */
@@ -346,6 +343,9 @@ rtems_device_driver console_open(
0 /* outputUsesInterrupts */ 0 /* outputUsesInterrupts */
}; };
/*
* Do generic termios initialization
*/
if (m360_smc1_interrupt) { if (m360_smc1_interrupt) {
rtems_libio_open_close_args_t *args = arg; rtems_libio_open_close_args_t *args = arg;