summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/powermac
diff options
context:
space:
mode:
authorgrehan <grehan@FreeBSD.org>2004-02-29 06:01:16 +0000
committergrehan <grehan@FreeBSD.org>2004-02-29 06:01:16 +0000
commit22b3d270f167af3362bd3f54d17a35387d21611f (patch)
treecdefbed608bcdc2218217e4b92fa23f489dc016f /sys/powerpc/powermac
parentc9e6a3f5931cb6333251654069e58cf6ac807ab6 (diff)
downloadFreeBSD-src-22b3d270f167af3362bd3f54d17a35387d21611f.zip
FreeBSD-src-22b3d270f167af3362bd3f54d17a35387d21611f.tar.gz
Bring to working PIO state.
- use correct rid when allocating PCI mem resource - ATA taskfile registers are indeed spaced 0x10 apart just like the Macio ATA cell. Adjust offsets in ATA channel struct. Tested by: Suleiman Souhlal <ssouhlal@vt.edu>
Diffstat (limited to 'sys/powerpc/powermac')
-rw-r--r--sys/powerpc/powermac/ata_kauai.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/sys/powerpc/powermac/ata_kauai.c b/sys/powerpc/powermac/ata_kauai.c
index 3a6dfe4..655ac6c 100644
--- a/sys/powerpc/powermac/ata_kauai.c
+++ b/sys/powerpc/powermac/ata_kauai.c
@@ -54,7 +54,16 @@ __FBSDID("$FreeBSD$");
#include <dev/pci/pcireg.h>
#define ATA_KAUAI_REGOFFSET 0x2000
-#define ATA_KAUAI_ALTOFFSET (ATA_KAUAI_REGOFFSET + 0x16)
+
+/*
+ * Offset to alt-control register from base
+ */
+#define ATA_KAUAI_ALTOFFSET (ATA_KAUAI_REGOFFSET + 0x160)
+
+/*
+ * Define the gap between registers
+ */
+#define ATA_KAUAI_REGGAP 16
/*
* Define the kauai pci bus attachment.
@@ -161,7 +170,7 @@ ata_kauai_probe(device_t dev)
ch = device_get_softc(dev);
- rid = 0;
+ rid = PCIR_BARS;
mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, 0, ~1, 1,
RF_ACTIVE);
if (mem == NULL) {
@@ -174,7 +183,7 @@ ata_kauai_probe(device_t dev)
*/
for (i = ATA_DATA; i <= ATA_STATUS; i++) {
ch->r_io[i].res = mem;
- ch->r_io[i].offset = i + ATA_KAUAI_REGOFFSET;
+ ch->r_io[i].offset = i*ATA_KAUAI_REGGAP + ATA_KAUAI_REGOFFSET;
}
ch->r_io[ATA_ALTSTAT].res = mem;
ch->r_io[ATA_ALTSTAT].offset = ATA_KAUAI_ALTOFFSET;
OpenPOWER on IntegriCloud