summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/mpc85xx/ocpbus.c
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2009-04-24 03:51:11 +0000
committermarcel <marcel@FreeBSD.org>2009-04-24 03:51:11 +0000
commit01cb4e796181b9bddc94f56f7f14ff7ae22bab43 (patch)
tree9795036c9babbff1f6cd144f052914292ee25638 /sys/powerpc/mpc85xx/ocpbus.c
parent8f8a26f7169a0d41bba47392179175c834519ca9 (diff)
downloadFreeBSD-src-01cb4e796181b9bddc94f56f7f14ff7ae22bab43.zip
FreeBSD-src-01cb4e796181b9bddc94f56f7f14ff7ae22bab43.tar.gz
Add suppport for ISA and ISA interrupts to make the ATA
controller in the VIA southbridge functional in the CDS (Configurable Development System) for MPC85XX. The embedded USB controllers look operational but the interrupt steering is still wrong.
Diffstat (limited to 'sys/powerpc/mpc85xx/ocpbus.c')
-rw-r--r--sys/powerpc/mpc85xx/ocpbus.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/sys/powerpc/mpc85xx/ocpbus.c b/sys/powerpc/mpc85xx/ocpbus.c
index ddc2e74..216ca41 100644
--- a/sys/powerpc/mpc85xx/ocpbus.c
+++ b/sys/powerpc/mpc85xx/ocpbus.c
@@ -159,15 +159,15 @@ ocpbus_write_law(int trgt, int type, u_long *startp, u_long *countp)
case SYS_RES_IOPORT:
switch (trgt) {
case OCP85XX_TGTIF_PCI0:
- addr = 0xff000000;
+ addr = 0xfee00000;
size = 0x00010000;
break;
case OCP85XX_TGTIF_PCI1:
- addr = 0xff010000;
+ addr = 0xfee10000;
size = 0x00010000;
break;
case OCP85XX_TGTIF_PCI2:
- addr = 0xff020000;
+ addr = 0xfee20000;
size = 0x00010000;
break;
default:
@@ -266,7 +266,7 @@ ocpbus_attach(device_t dev)
ccsr_read4(OCP85XX_PORDEVSR),
ccsr_read4(OCP85XX_PORDEVSR2));
- for (i = 0; i < 4; i++)
+ for (i = PIC_IRQ_START; i < PIC_IRQ_START + 4; i++)
powerpc_config_intr(i, INTR_TRIGGER_LEVEL, INTR_POLARITY_LOW);
return (bus_generic_attach(dev));
@@ -424,15 +424,8 @@ ocpbus_alloc_resource(device_t dev, device_t child, int type, int *rid,
return (NULL);
}
- /*
- * ISA interrupts (IRQ 0-15) are remapped by the
- * PCI driver. Make sure this happened.
- */
- if (start < PIC_IRQ_START)
- return (NULL);
-
- rv = rman_reserve_resource(&sc->sc_irq, start - PIC_IRQ_START,
- start - PIC_IRQ_START + count - 1, count, flags, child);
+ rv = rman_reserve_resource(&sc->sc_irq, start,
+ start + count - 1, count, flags, child);
if (rv == NULL)
return (NULL);
break;
@@ -598,7 +591,5 @@ ocpbus_config_intr(device_t dev, int irq, enum intr_trigger trig,
enum intr_polarity pol)
{
- if (irq < PIC_IRQ_START)
- return (EINVAL);
- return (powerpc_config_intr(irq - PIC_IRQ_START, trig, pol));
+ return (powerpc_config_intr(irq, trig, pol));
}
OpenPOWER on IntegriCloud