summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/shared/openpic
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2002-05-14 17:10:17 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2002-05-14 17:10:17 +0000
commit69ed59f083a083fd96d08b5f6d54f2c80f267f03 (patch)
tree3d8fcd08bcface88cea636117b47dd1520b2874c /c/src/lib/libbsp/powerpc/shared/openpic
parent2001-05-14 Till Straumann <strauman@slac.stanford.edu> (diff)
downloadrtems-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.c18
-rw-r--r--c/src/lib/libbsp/powerpc/shared/openpic/openpic.h4
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);