diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2002-05-14 17:10:17 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2002-05-14 17:10:17 +0000 |
commit | 69ed59f083a083fd96d08b5f6d54f2c80f267f03 (patch) | |
tree | 3d8fcd08bcface88cea636117b47dd1520b2874c /c/src/lib/libbsp/powerpc/shared/openpic | |
parent | 2001-05-14 Till Straumann <strauman@slac.stanford.edu> (diff) | |
download | rtems-69ed59f083a083fd96d08b5f6d54f2c80f267f03.tar.bz2 |
2001-05-14 Till Straumann <strauman@slac.stanford.edu>
* bootloader/misc.c, console/Makefile.am, console/console.c,
console/consoleIo.h, console/inch.c, console/polled_io.c,
console/uart.c, console/uart.h, include/bsp.h, irq/Makefile.am,
irq/irq.c, irq/irq.h, irq/irq_init.c, openpic/openpic.c,
openpic/openpic.h, pci/Makefile.am, pci/pci.c, pci/pci.h,
residual/Makefile.am, start/start.S, startup/bspstart.c,
vectors/vectors.S, vectors/vectors.h, vectors/vectors_init.c:
Per PR216, "libbsp/powerpc/shared" BSP has been modified considerably
with the goal to make it more flexible and reusable by other
BSPs. The main strategies were:
- eliminate hardcoded base addresses; devices use offsets
and a BSP defined base address.
- separate functionality into different files (e.g. reboot from
inch.c to reboot.c) which can be overridden by a 'derived' BSP.
- separate initialization code into separate files (e.g. PCI
bridge detection/initialization was separated from the more
generic PCI access routines), also to make it easier for
'derived' BSPs to substitute their own initialization code.
There are also a couple of enhancements and fixes:
- IRQ handling code now has a hook for attaching a VME bridge.
- OpenPIC is now explicitely initialized (polarities, senses).
Eliminated the implicit assumption on the presence of an ISA PIC.
- UART and console driver now supports more than 1 port. The current
maximum of 2 can easily be extended by enlarging a table (it
would even be easier if the ISR API was not broken by design).
- fixed polled_io.c so it correctly supports console on COM2
- fixed TLB invalidation code (start.S).
- exception handler prints a stack backtrace.
- added BSP_pciFindDevice() to scan the pci bus for a particular
vendor/device/instance.
Diffstat (limited to 'c/src/lib/libbsp/powerpc/shared/openpic')
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/openpic/openpic.c | 18 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/openpic/openpic.h | 4 |
2 files changed, 13 insertions, 9 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/openpic/openpic.c b/c/src/lib/libbsp/powerpc/shared/openpic/openpic.c index b27790a757..918ddfad10 100644 --- a/c/src/lib/libbsp/powerpc/shared/openpic/openpic.c +++ b/c/src/lib/libbsp/powerpc/shared/openpic/openpic.c @@ -26,15 +26,16 @@ #include <libcpu/io.h> #include <libcpu/byteorder.h> #include <bsp.h> +#include <rtems/bspIo.h> +#ifndef NULL #define NULL 0 +#endif #define REGISTER_DEBUG #undef REGISTER_DEBUG volatile struct OpenPIC *OpenPIC = NULL; -unsigned int OpenPIC_NumInitSenses = 0; -unsigned char *OpenPIC_InitSenses = NULL; static unsigned int NumProcessors; static unsigned int NumSources; @@ -157,9 +158,13 @@ static void openpic_safe_writefield(volatile unsigned int *addr, unsigned int ma * Add some kludge to use the Motorola Raven OpenPIC which does not * report vendor and device id, and gets the wrong number of interrupts. * (Motorola did a great job on that one!) + * + * T. Straumann, 12/20/2001: polarities and senses are now passed as + * parameters, eliminated global vars. + * IRQ0 is no longer treated specially. */ -void openpic_init(int main_pic) +void openpic_init(int main_pic, unsigned char *polarities, unsigned char *senses) { unsigned int t, i; unsigned int vendorid, devid, stepping, timerfreq; @@ -250,10 +255,11 @@ void openpic_init(int main_pic) openpic_initirq(0, 8, OPENPIC_VEC_SOURCE, 1, 1); /* Processor 0 */ openpic_mapirq(0, 1<<0); - for (i = 1; i < NumSources; i++) { + for (i = 0; i < NumSources; i++) { /* Enabled, Priority 8 */ - openpic_initirq(i, 8, OPENPIC_VEC_SOURCE+i, 0, - i < OpenPIC_NumInitSenses ? OpenPIC_InitSenses[i] : 1); + openpic_initirq(i, 8, OPENPIC_VEC_SOURCE+i, + polarities ? polarities[i] : 0, + senses ? senses[i] : 1); /* Processor 0 */ openpic_mapirq(i, 1<<0); } diff --git a/c/src/lib/libbsp/powerpc/shared/openpic/openpic.h b/c/src/lib/libbsp/powerpc/shared/openpic/openpic.h index 97faec1e9d..152636df82 100644 --- a/c/src/lib/libbsp/powerpc/shared/openpic/openpic.h +++ b/c/src/lib/libbsp/powerpc/shared/openpic/openpic.h @@ -191,8 +191,6 @@ struct OpenPIC { }; extern volatile struct OpenPIC *OpenPIC; -extern unsigned int OpenPIC_NumInitSenses; -extern unsigned char *OpenPIC_InitSenses; /* @@ -309,7 +307,7 @@ extern unsigned char *OpenPIC_InitSenses; */ /* Global Operations */ -extern void openpic_init(int); +extern void openpic_init(int,unsigned char *, unsigned char *); extern void openpic_reset(void); extern void openpic_enable_8259_pass_through(void); extern void openpic_disable_8259_pass_through(void); |