diff options
author | Mikael Pettersson <mikpe@it.uu.se> | 2007-03-03 14:57:44 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-03-06 04:04:30 -0500 |
commit | 8b966dddc29899008fb178a533263afa8d1ad849 (patch) | |
tree | 7218755b2b5dd34606b9a1b0d27e1e3bbfa57134 | |
parent | 8af12cdb7c4aa9ed278ed71a8b5b130f2d8c8920 (diff) |
pata_legacy: fix io/irq mismatch
pata_legacy fails to detect the disk on my old ISA/VLB 486:
it starts to probe io=0x1f0 ctr=0x3f6 irq=15, complains
loudly about IDENTIFYs timing out, and finally fails.
(Sorry I couldn't capture the kernel's boot messages.)
It turns out that the driver's mapping from io to irq in
legacy_irq[] is wrong: index 0 for io=0x1f0 has irq=15 but
should have irq=14, and index 1 for io=0x170 has irq=14 but
should have irq=15. This is confirmed by a comparison with
include/asm-i386/ide.h:ide_default_irq().
This patch swaps the first two elements in legacy_irq[],
which makes pata_legacy work on my 486.
Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r-- | drivers/ata/pata_legacy.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c index fc5b73d78e00..86fbcd6a742b 100644 --- a/drivers/ata/pata_legacy.c +++ b/drivers/ata/pata_legacy.c | |||
@@ -69,7 +69,7 @@ | |||
69 | #define NR_HOST 6 | 69 | #define NR_HOST 6 |
70 | 70 | ||
71 | static int legacy_port[NR_HOST] = { 0x1f0, 0x170, 0x1e8, 0x168, 0x1e0, 0x160 }; | 71 | static int legacy_port[NR_HOST] = { 0x1f0, 0x170, 0x1e8, 0x168, 0x1e0, 0x160 }; |
72 | static int legacy_irq[NR_HOST] = { 15, 14, 11, 10, 8, 12 }; | 72 | static int legacy_irq[NR_HOST] = { 14, 15, 11, 10, 8, 12 }; |
73 | 73 | ||
74 | struct legacy_data { | 74 | struct legacy_data { |
75 | unsigned long timing; | 75 | unsigned long timing; |