diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2011-02-16 08:25:00 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2011-02-16 08:25:00 +0000 |
commit | 2e3f4398587e53386440ff90f5f411fc9bd526df (patch) | |
tree | 715d300890a89e7c53293f7e96d9bd7556cfdfde /c/src/libchip/serial/ns16550.c | |
parent | 2011-02-16 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff) | |
download | rtems-2e3f4398587e53386440ff90f5f411fc9bd526df.tar.bz2 |
2011-02-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libchip/serial/ns16550.c: Revert previous commit and extend existing
mechanic.
Diffstat (limited to '')
-rw-r--r-- | c/src/libchip/serial/ns16550.c | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/c/src/libchip/serial/ns16550.c b/c/src/libchip/serial/ns16550.c index 53803f9082..2293e3bdd8 100644 --- a/c/src/libchip/serial/ns16550.c +++ b/c/src/libchip/serial/ns16550.c @@ -39,18 +39,16 @@ #include "ns16550_p.h" -#ifdef BSP_FEATURE_IRQ_EXTENSION +#if defined(BSP_FEATURE_IRQ_EXTENSION) #include <bsp/irq.h> -#elif defined BSP_FEATURE_IRQ_LEGACY +#elif defined(BSP_FEATURE_IRQ_LEGACY) #include <bsp/irq.h> -#elif defined __PPC__ +#elif defined(__PPC__) || defined(__i386__) #include <bsp/irq.h> #define BSP_FEATURE_IRQ_LEGACY #ifdef BSP_SHARED_HANDLER_SUPPORT #define BSP_FEATURE_IRQ_LEGACY_SHARED_HANDLER_SUPPORT #endif -#elif defined(__i386__) - #include <bsp/irq.h> #endif /* @@ -474,6 +472,7 @@ NS16550_STATIC int ns16550_set_attributes( return 0; } +#if defined(BSP_FEATURE_IRQ_EXTENSION) || defined(BSP_FEATURE_IRQ_LEGACY) /** * @brief Process interrupt. @@ -522,7 +521,6 @@ NS16550_STATIC void ns16550_process( int minor) } } while ((get( port, NS16550_INTERRUPT_ID) & SP_IID_0) == 0); } -#if defined(BSP_FEATURE_IRQ_EXTENSION) || defined(BSP_FEATURE_IRQ_LEGACY) #endif /** @@ -580,12 +578,14 @@ NS16550_STATIC void ns16550_enable_interrupts( (*setReg)(pNS16550, NS16550_INTERRUPT_ENABLE, mask); } - NS16550_STATIC rtems_isr ns16550_isr(void *arg) - { +#if defined(BSP_FEATURE_IRQ_EXTENSION) || defined(BSP_FEATURE_IRQ_LEGACY) + NS16550_STATIC rtems_isr ns16550_isr(void *arg) + { int minor = (int) arg; ns16550_process( minor); - } + } +#endif /* * ns16550_initialize_interrupts @@ -595,8 +595,8 @@ NS16550_STATIC void ns16550_enable_interrupts( NS16550_STATIC void ns16550_initialize_interrupts( int minor) { #if defined(BSP_FEATURE_IRQ_EXTENSION) || defined(BSP_FEATURE_IRQ_LEGACY) -#endif console_tbl *c = &Console_Port_Tbl [minor]; +#endif console_data *d = &Console_Port_Data [minor]; d->bActive = false; @@ -648,23 +648,6 @@ NS16550_STATIC void ns16550_initialize_interrupts( int minor) rtems_fatal_error_occurred( 0xdeadbeef); } } - #elif defined(__i386__) - { - int rv = 0; - rtems_irq_connect_data cd = { - c->ulIntVector, - ns16550_isr, - (void *) minor, - NULL, - NULL, - NULL - }; - rv = BSP_install_rtems_irq_handler( &cd); - if (rv == 0) { - printk( "%s: Error: Install interrupt handler\n", __func__); - rtems_fatal_error_occurred( 0xdeadbeef); - } - } #endif } |