diff options
-rw-r--r-- | drivers/ide/ide-probe.c | 4 | ||||
-rw-r--r-- | drivers/ide/legacy/dtc2278.c | 10 | ||||
-rw-r--r-- | drivers/ide/mips/au1xxx-ide.c | 3 | ||||
-rw-r--r-- | drivers/ide/pci/rz1000.c | 3 | ||||
-rw-r--r-- | include/linux/ide.h | 13 |
5 files changed, 16 insertions, 17 deletions
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 802a04ad6024..fee898c4a773 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
@@ -822,7 +822,7 @@ static void ide_port_tune_devices(ide_hwif_t *hwif) | |||
822 | for (unit = 0; unit < MAX_DRIVES; ++unit) { | 822 | for (unit = 0; unit < MAX_DRIVES; ++unit) { |
823 | ide_drive_t *drive = &hwif->drives[unit]; | 823 | ide_drive_t *drive = &hwif->drives[unit]; |
824 | 824 | ||
825 | if (hwif->no_io_32bit) | 825 | if (hwif->host_flags & IDE_HFLAG_NO_IO_32BIT) |
826 | drive->no_io_32bit = 1; | 826 | drive->no_io_32bit = 1; |
827 | else | 827 | else |
828 | drive->no_io_32bit = drive->id->dword_io ? 1 : 0; | 828 | drive->no_io_32bit = drive->id->dword_io ? 1 : 0; |
@@ -1300,6 +1300,8 @@ static void ide_port_init_devices(ide_hwif_t *hwif) | |||
1300 | drive->io_32bit = 1; | 1300 | drive->io_32bit = 1; |
1301 | if (hwif->host_flags & IDE_HFLAG_UNMASK_IRQS) | 1301 | if (hwif->host_flags & IDE_HFLAG_UNMASK_IRQS) |
1302 | drive->unmask = 1; | 1302 | drive->unmask = 1; |
1303 | if (hwif->host_flags & IDE_HFLAG_NO_UNMASK_IRQS) | ||
1304 | drive->no_unmask = 1; | ||
1303 | if ((hwif->host_flags & IDE_HFLAG_NO_AUTOTUNE) == 0) | 1305 | if ((hwif->host_flags & IDE_HFLAG_NO_AUTOTUNE) == 0) |
1304 | drive->autotune = 1; | 1306 | drive->autotune = 1; |
1305 | } | 1307 | } |
diff --git a/drivers/ide/legacy/dtc2278.c b/drivers/ide/legacy/dtc2278.c index 7cbf2f1f35f9..73396f70f2b7 100644 --- a/drivers/ide/legacy/dtc2278.c +++ b/drivers/ide/legacy/dtc2278.c | |||
@@ -89,7 +89,10 @@ static void dtc2278_set_pio_mode(ide_drive_t *drive, const u8 pio) | |||
89 | static const struct ide_port_info dtc2278_port_info __initdata = { | 89 | static const struct ide_port_info dtc2278_port_info __initdata = { |
90 | .chipset = ide_dtc2278, | 90 | .chipset = ide_dtc2278, |
91 | .host_flags = IDE_HFLAG_SERIALIZE | | 91 | .host_flags = IDE_HFLAG_SERIALIZE | |
92 | IDE_HFLAG_NO_UNMASK_IRQS | | ||
92 | IDE_HFLAG_IO_32BIT | | 93 | IDE_HFLAG_IO_32BIT | |
94 | /* disallow ->io_32bit changes */ | ||
95 | IDE_HFLAG_NO_IO_32BIT | | ||
93 | IDE_HFLAG_NO_DMA | | 96 | IDE_HFLAG_NO_DMA | |
94 | IDE_HFLAG_NO_AUTOTUNE, | 97 | IDE_HFLAG_NO_AUTOTUNE, |
95 | .pio_mask = ATA_PIO4, | 98 | .pio_mask = ATA_PIO4, |
@@ -125,14 +128,7 @@ static int __init dtc2278_probe(void) | |||
125 | #endif | 128 | #endif |
126 | local_irq_restore(flags); | 129 | local_irq_restore(flags); |
127 | 130 | ||
128 | hwif->no_io_32bit = 1; /* disallow ->io_32bit changes */ | ||
129 | hwif->set_pio_mode = &dtc2278_set_pio_mode; | 131 | hwif->set_pio_mode = &dtc2278_set_pio_mode; |
130 | hwif->drives[0].no_unmask = 1; | ||
131 | hwif->drives[1].no_unmask = 1; | ||
132 | |||
133 | mate->no_io_32bit = 1; | ||
134 | mate->drives[0].no_unmask = 1; | ||
135 | mate->drives[1].no_unmask = 1; | ||
136 | 132 | ||
137 | ide_device_add(idx, &dtc2278_port_info); | 133 | ide_device_add(idx, &dtc2278_port_info); |
138 | 134 | ||
diff --git a/drivers/ide/mips/au1xxx-ide.c b/drivers/ide/mips/au1xxx-ide.c index 484a9287bf84..0f4bf5d72835 100644 --- a/drivers/ide/mips/au1xxx-ide.c +++ b/drivers/ide/mips/au1xxx-ide.c | |||
@@ -551,6 +551,7 @@ static void auide_setup_ports(hw_regs_t *hw, _auide_hwif *ahwif) | |||
551 | static const struct ide_port_info au1xxx_port_info = { | 551 | static const struct ide_port_info au1xxx_port_info = { |
552 | .host_flags = IDE_HFLAG_POST_SET_MODE | | 552 | .host_flags = IDE_HFLAG_POST_SET_MODE | |
553 | IDE_HFLAG_NO_DMA | /* no SFF-style DMA */ | 553 | IDE_HFLAG_NO_DMA | /* no SFF-style DMA */ |
554 | IDE_HFLAG_NO_IO_32BIT | | ||
554 | IDE_HFLAG_UNMASK_IRQS, | 555 | IDE_HFLAG_UNMASK_IRQS, |
555 | .pio_mask = ATA_PIO4, | 556 | .pio_mask = ATA_PIO4, |
556 | #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA | 557 | #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA |
@@ -649,8 +650,6 @@ static int au_ide_probe(struct device *dev) | |||
649 | hwif->select_data = 0; /* no chipset-specific code */ | 650 | hwif->select_data = 0; /* no chipset-specific code */ |
650 | hwif->config_data = 0; /* no chipset-specific code */ | 651 | hwif->config_data = 0; /* no chipset-specific code */ |
651 | 652 | ||
652 | hwif->no_io_32bit = 1; | ||
653 | |||
654 | auide_hwif.hwif = hwif; | 653 | auide_hwif.hwif = hwif; |
655 | hwif->hwif_data = &auide_hwif; | 654 | hwif->hwif_data = &auide_hwif; |
656 | 655 | ||
diff --git a/drivers/ide/pci/rz1000.c b/drivers/ide/pci/rz1000.c index dd0d18ba0022..51676612f78f 100644 --- a/drivers/ide/pci/rz1000.c +++ b/drivers/ide/pci/rz1000.c | |||
@@ -33,8 +33,7 @@ static void __devinit init_hwif_rz1000 (ide_hwif_t *hwif) | |||
33 | } else { | 33 | } else { |
34 | if (hwif->mate) | 34 | if (hwif->mate) |
35 | hwif->mate->serialized = hwif->serialized = 1; | 35 | hwif->mate->serialized = hwif->serialized = 1; |
36 | hwif->drives[0].no_unmask = 1; | 36 | hwif->host_flags |= IDE_HFLAG_NO_UNMASK_IRQS; |
37 | hwif->drives[1].no_unmask = 1; | ||
38 | printk(KERN_INFO "%s: serialized, disabled unmasking " | 37 | printk(KERN_INFO "%s: serialized, disabled unmasking " |
39 | "(buggy RZ1000/RZ1001)\n", hwif->name); | 38 | "(buggy RZ1000/RZ1001)\n", hwif->name); |
40 | } | 39 | } |
diff --git a/include/linux/ide.h b/include/linux/ide.h index 04422e5e6dd8..7b24358a6f8a 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -607,7 +607,6 @@ typedef struct hwif_s { | |||
607 | unsigned reset : 1; /* reset after probe */ | 607 | unsigned reset : 1; /* reset after probe */ |
608 | unsigned auto_poll : 1; /* supports nop auto-poll */ | 608 | unsigned auto_poll : 1; /* supports nop auto-poll */ |
609 | unsigned sg_mapped : 1; /* sg_table and sg_nents are ready */ | 609 | unsigned sg_mapped : 1; /* sg_table and sg_nents are ready */ |
610 | unsigned no_io_32bit : 1; /* 1 = can not do 32-bit IO ops */ | ||
611 | unsigned mmio : 1; /* host uses MMIO */ | 610 | unsigned mmio : 1; /* host uses MMIO */ |
612 | 611 | ||
613 | struct device gendev; | 612 | struct device gendev; |
@@ -1065,7 +1064,7 @@ enum { | |||
1065 | IDE_HFLAG_NO_SET_MODE = (1 << 9), | 1064 | IDE_HFLAG_NO_SET_MODE = (1 << 9), |
1066 | /* trust BIOS for programming chipset/device for DMA */ | 1065 | /* trust BIOS for programming chipset/device for DMA */ |
1067 | IDE_HFLAG_TRUST_BIOS_FOR_DMA = (1 << 10), | 1066 | IDE_HFLAG_TRUST_BIOS_FOR_DMA = (1 << 10), |
1068 | /* host uses VDMA */ | 1067 | /* host uses VDMA (tied with IDE_HFLAG_CS5520 for now) */ |
1069 | IDE_HFLAG_VDMA = (1 << 11), | 1068 | IDE_HFLAG_VDMA = (1 << 11), |
1070 | /* ATAPI DMA is unsupported */ | 1069 | /* ATAPI DMA is unsupported */ |
1071 | IDE_HFLAG_NO_ATAPI_DMA = (1 << 12), | 1070 | IDE_HFLAG_NO_ATAPI_DMA = (1 << 12), |
@@ -1075,8 +1074,10 @@ enum { | |||
1075 | IDE_HFLAG_NO_DMA = (1 << 14), | 1074 | IDE_HFLAG_NO_DMA = (1 << 14), |
1076 | /* check if host is PCI IDE device before allowing DMA */ | 1075 | /* check if host is PCI IDE device before allowing DMA */ |
1077 | IDE_HFLAG_NO_AUTODMA = (1 << 15), | 1076 | IDE_HFLAG_NO_AUTODMA = (1 << 15), |
1077 | /* don't autotune PIO */ | ||
1078 | IDE_HFLAG_NO_AUTOTUNE = (1 << 16), | ||
1078 | /* host is CS5510/CS5520 */ | 1079 | /* host is CS5510/CS5520 */ |
1079 | IDE_HFLAG_CS5520 = (1 << 16), | 1080 | IDE_HFLAG_CS5520 = IDE_HFLAG_VDMA, |
1080 | /* no LBA48 */ | 1081 | /* no LBA48 */ |
1081 | IDE_HFLAG_NO_LBA48 = (1 << 17), | 1082 | IDE_HFLAG_NO_LBA48 = (1 << 17), |
1082 | /* no LBA48 DMA */ | 1083 | /* no LBA48 DMA */ |
@@ -1102,8 +1103,10 @@ enum { | |||
1102 | IDE_HFLAG_CLEAR_SIMPLEX = (1 << 28), | 1103 | IDE_HFLAG_CLEAR_SIMPLEX = (1 << 28), |
1103 | /* DSC overlap is unsupported */ | 1104 | /* DSC overlap is unsupported */ |
1104 | IDE_HFLAG_NO_DSC = (1 << 29), | 1105 | IDE_HFLAG_NO_DSC = (1 << 29), |
1105 | /* don't autotune PIO */ | 1106 | /* never use 32-bit I/O ops */ |
1106 | IDE_HFLAG_NO_AUTOTUNE = (1 << 30), | 1107 | IDE_HFLAG_NO_IO_32BIT = (1 << 30), |
1108 | /* never unmask IRQs */ | ||
1109 | IDE_HFLAG_NO_UNMASK_IRQS = (1 << 31), | ||
1107 | }; | 1110 | }; |
1108 | 1111 | ||
1109 | #ifdef CONFIG_BLK_DEV_OFFBOARD | 1112 | #ifdef CONFIG_BLK_DEV_OFFBOARD |