ATA convert GSI to irq on ia64
authorZhang, Yanmin <yanmin_zhang@linux.intel.com>
Fri, 9 Feb 2007 03:29:51 +0000 (11:29 +0800)
committerJeff Garzik <jeff@garzik.org>
Thu, 15 Feb 2007 23:04:53 +0000 (18:04 -0500)
If an ATA drive uses legacy mode, ata driver will choose 14 and 15
as the fixed irq number. On ia64 platform, such numbers are GSI and
should be converted to irq vector.

Below patch against kernel 2.6.20 fixes it.

Signed-off-by: Zhang Yanmin <yanmin.zhang@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
arch/ia64/Kconfig
include/asm-ia64/libata-portmap.h [new file with mode: 0644]

index db185f34e34117ddca100abf49df37d1af5bfed4..d51f0f11f7f95169f424cd99768928635be92dd3 100644 (file)
@@ -22,6 +22,7 @@ config IA64
 
 config 64BIT
        bool
+       select ATA_NONSTANDARD if ATA
        default y
 
 config ZONE_DMA
diff --git a/include/asm-ia64/libata-portmap.h b/include/asm-ia64/libata-portmap.h
new file mode 100644 (file)
index 0000000..0e00c9a
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef __ASM_IA64_LIBATA_PORTMAP_H
+#define __ASM_IA64_LIBATA_PORTMAP_H
+
+#define ATA_PRIMARY_CMD                0x1F0
+#define ATA_PRIMARY_CTL                0x3F6
+#define ATA_PRIMARY_IRQ(dev)   isa_irq_to_vector(14)
+
+#define ATA_SECONDARY_CMD      0x170
+#define ATA_SECONDARY_CTL      0x376
+#define ATA_SECONDARY_IRQ(dev) isa_irq_to_vector(15)
+
+#endif