forked from Imagelibrary/rtems
2011-02-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libchip/serial/ns16550.c: Revert previous commit and extend existing mechanic.
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
2011-02-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
|
* libchip/serial/ns16550.c: Revert previous commit and extend existing
|
||||||
|
mechanic.
|
||||||
|
|
||||||
2011-02-15 Jennifer Averett
|
2011-02-15 Jennifer Averett
|
||||||
|
|
||||||
* libchip/serial/ns16550.c, libchip/serial/ns16550_p.h: Support i386
|
* libchip/serial/ns16550.c, libchip/serial/ns16550_p.h: Support i386
|
||||||
|
|||||||
@@ -39,18 +39,16 @@
|
|||||||
|
|
||||||
#include "ns16550_p.h"
|
#include "ns16550_p.h"
|
||||||
|
|
||||||
#ifdef BSP_FEATURE_IRQ_EXTENSION
|
#if defined(BSP_FEATURE_IRQ_EXTENSION)
|
||||||
#include <bsp/irq.h>
|
#include <bsp/irq.h>
|
||||||
#elif defined BSP_FEATURE_IRQ_LEGACY
|
#elif defined(BSP_FEATURE_IRQ_LEGACY)
|
||||||
#include <bsp/irq.h>
|
#include <bsp/irq.h>
|
||||||
#elif defined __PPC__
|
#elif defined(__PPC__) || defined(__i386__)
|
||||||
#include <bsp/irq.h>
|
#include <bsp/irq.h>
|
||||||
#define BSP_FEATURE_IRQ_LEGACY
|
#define BSP_FEATURE_IRQ_LEGACY
|
||||||
#ifdef BSP_SHARED_HANDLER_SUPPORT
|
#ifdef BSP_SHARED_HANDLER_SUPPORT
|
||||||
#define BSP_FEATURE_IRQ_LEGACY_SHARED_HANDLER_SUPPORT
|
#define BSP_FEATURE_IRQ_LEGACY_SHARED_HANDLER_SUPPORT
|
||||||
#endif
|
#endif
|
||||||
#elif defined(__i386__)
|
|
||||||
#include <bsp/irq.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -474,6 +472,7 @@ NS16550_STATIC int ns16550_set_attributes(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(BSP_FEATURE_IRQ_EXTENSION) || defined(BSP_FEATURE_IRQ_LEGACY)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Process interrupt.
|
* @brief Process interrupt.
|
||||||
@@ -522,7 +521,6 @@ NS16550_STATIC void ns16550_process( int minor)
|
|||||||
}
|
}
|
||||||
} while ((get( port, NS16550_INTERRUPT_ID) & SP_IID_0) == 0);
|
} while ((get( port, NS16550_INTERRUPT_ID) & SP_IID_0) == 0);
|
||||||
}
|
}
|
||||||
#if defined(BSP_FEATURE_IRQ_EXTENSION) || defined(BSP_FEATURE_IRQ_LEGACY)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -580,12 +578,14 @@ NS16550_STATIC void ns16550_enable_interrupts(
|
|||||||
(*setReg)(pNS16550, NS16550_INTERRUPT_ENABLE, mask);
|
(*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;
|
int minor = (int) arg;
|
||||||
|
|
||||||
ns16550_process( minor);
|
ns16550_process( minor);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ns16550_initialize_interrupts
|
* ns16550_initialize_interrupts
|
||||||
@@ -595,8 +595,8 @@ NS16550_STATIC void ns16550_enable_interrupts(
|
|||||||
NS16550_STATIC void ns16550_initialize_interrupts( int minor)
|
NS16550_STATIC void ns16550_initialize_interrupts( int minor)
|
||||||
{
|
{
|
||||||
#if defined(BSP_FEATURE_IRQ_EXTENSION) || defined(BSP_FEATURE_IRQ_LEGACY)
|
#if defined(BSP_FEATURE_IRQ_EXTENSION) || defined(BSP_FEATURE_IRQ_LEGACY)
|
||||||
#endif
|
|
||||||
console_tbl *c = &Console_Port_Tbl [minor];
|
console_tbl *c = &Console_Port_Tbl [minor];
|
||||||
|
#endif
|
||||||
console_data *d = &Console_Port_Data [minor];
|
console_data *d = &Console_Port_Data [minor];
|
||||||
|
|
||||||
d->bActive = false;
|
d->bActive = false;
|
||||||
@@ -648,23 +648,6 @@ NS16550_STATIC void ns16550_initialize_interrupts( int minor)
|
|||||||
rtems_fatal_error_occurred( 0xdeadbeef);
|
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
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user