From 29badca6c11a3743e14c23b361ce886d3236979b Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 17 Jan 2011 10:31:18 +0000 Subject: 2011-01-17 Sebastian Huber * libchip/serial/ns16550.c: Install interrupt handler after TTY pointer is valid. --- c/src/libchip/serial/ns16550.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'c/src/libchip/serial/ns16550.c') diff --git a/c/src/libchip/serial/ns16550.c b/c/src/libchip/serial/ns16550.c index 11e33f8915..e6552a908a 100644 --- a/c/src/libchip/serial/ns16550.c +++ b/c/src/libchip/serial/ns16550.c @@ -68,10 +68,10 @@ console_flow ns16550_flow_DTRCTS = { console_fns ns16550_fns = { libchip_serial_default_probe, /* deviceProbe */ ns16550_open, /* deviceFirstOpen */ - NULL, /* deviceLastClose */ + ns16550_close, /* deviceLastClose */ NULL, /* deviceRead */ ns16550_write_support_int, /* deviceWrite */ - ns16550_initialize_interrupts, /* deviceInitialize */ + ns16550_init, /* deviceInitialize */ ns16550_write_polled, /* deviceWritePolled */ ns16550_set_attributes, /* deviceSetAttributes */ true /* deviceOutputUsesInterrupts */ @@ -186,6 +186,7 @@ NS16550_STATIC int ns16550_open( rtems_termios_set_initial_baud( tty, (intptr_t) c->pDeviceParams); if (c->pDeviceFns->deviceOutputUsesInterrupts) { + ns16550_initialize_interrupts( minor); ns16550_enable_interrupts( minor, NS16550_ENABLE_ALL_INTR_EXCEPT_TX); } @@ -598,8 +599,6 @@ NS16550_STATIC void ns16550_initialize_interrupts( int minor) #endif console_data *d = &Console_Port_Data [minor]; - ns16550_init( minor); - d->bActive = false; #ifdef BSP_FEATURE_IRQ_EXTENSION -- cgit v1.2.3