diff options
author | David Woodhouse <dwmw2@infradead.org> | 2007-01-01 14:31:15 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-01-26 17:27:40 -0500 |
commit | 8cdf92a98fa0f91068615443f2a8597b7f2c34ca (patch) | |
tree | c33ae8216599533068dbcf2ef46c19a1f5b942a9 /include | |
parent | dfd7a3db3898e299bdc25f0c77081a8632b3a73c (diff) |
Fix Maple PATA IRQ assignment.
On the Maple board, the AMD8111 IDE is in legacy mode... except that it
appears on IRQ 20 instead of IRQ 15. For drivers/ide this was handled by
the architecture's "pci_get_legacy_ide_irq()" function, but in libata we
just hard-code the numbers 14 and 15.
This patch provides asm-powerpc/libata-portmap.h which maps the IRQ as
appropriate, having added a pci_dev argument to the
ATA_{PRIM,SECOND}ARY_IRQ macros.
There's probably a better way to do this -- especially if we observe
that the _only_ case in which this seemingly-generic
"pci_get_legacy_ide_irq()" function returns anything other than 14 and
15 for primary and secondary respectively is the case of the AMD8111 on
the Maple board -- couldn't we handle that with a special case in the
pata_amd driver, or perhaps with a PCI quirk for Maple to switch it into
native mode during early boot and assign resources properly?
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-generic/libata-portmap.h | 4 | ||||
-rw-r--r-- | include/asm-powerpc/libata-portmap.h | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/include/asm-generic/libata-portmap.h b/include/asm-generic/libata-portmap.h index 9202fd02d5be..62fb3618293d 100644 --- a/include/asm-generic/libata-portmap.h +++ b/include/asm-generic/libata-portmap.h | |||
@@ -3,10 +3,10 @@ | |||
3 | 3 | ||
4 | #define ATA_PRIMARY_CMD 0x1F0 | 4 | #define ATA_PRIMARY_CMD 0x1F0 |
5 | #define ATA_PRIMARY_CTL 0x3F6 | 5 | #define ATA_PRIMARY_CTL 0x3F6 |
6 | #define ATA_PRIMARY_IRQ 14 | 6 | #define ATA_PRIMARY_IRQ(dev) 14 |
7 | 7 | ||
8 | #define ATA_SECONDARY_CMD 0x170 | 8 | #define ATA_SECONDARY_CMD 0x170 |
9 | #define ATA_SECONDARY_CTL 0x376 | 9 | #define ATA_SECONDARY_CTL 0x376 |
10 | #define ATA_SECONDARY_IRQ 15 | 10 | #define ATA_SECONDARY_IRQ(dev) 15 |
11 | 11 | ||
12 | #endif | 12 | #endif |
diff --git a/include/asm-powerpc/libata-portmap.h b/include/asm-powerpc/libata-portmap.h new file mode 100644 index 000000000000..4d8518049f4d --- /dev/null +++ b/include/asm-powerpc/libata-portmap.h | |||
@@ -0,0 +1,12 @@ | |||
1 | #ifndef __ASM_POWERPC_LIBATA_PORTMAP_H | ||
2 | #define __ASM_POWERPC_LIBATA_PORTMAP_H | ||
3 | |||
4 | #define ATA_PRIMARY_CMD 0x1F0 | ||
5 | #define ATA_PRIMARY_CTL 0x3F6 | ||
6 | #define ATA_PRIMARY_IRQ(dev) pci_get_legacy_ide_irq(dev, 0) | ||
7 | |||
8 | #define ATA_SECONDARY_CMD 0x170 | ||
9 | #define ATA_SECONDARY_CTL 0x376 | ||
10 | #define ATA_SECONDARY_IRQ(dev) pci_get_legacy_ide_irq(dev, 1) | ||
11 | |||
12 | #endif | ||