|
@@ -683,6 +683,31 @@ void ide_init_port_hw(ide_hwif_t *hwif, hw_regs_t *hw)
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(ide_init_port_hw);
|
|
EXPORT_SYMBOL_GPL(ide_init_port_hw);
|
|
|
|
|
|
|
|
+ide_hwif_t *ide_deprecated_find_port(unsigned long base)
|
|
|
|
+{
|
|
|
|
+ ide_hwif_t *hwif;
|
|
|
|
+ int i;
|
|
|
|
+
|
|
|
|
+ for (i = 0; i < MAX_HWIFS; i++) {
|
|
|
|
+ hwif = &ide_hwifs[i];
|
|
|
|
+ if (hwif->io_ports[IDE_DATA_OFFSET] == base)
|
|
|
|
+ goto found;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (i = 0; i < MAX_HWIFS; i++) {
|
|
|
|
+ hwif = &ide_hwifs[i];
|
|
|
|
+ if (hwif->hold)
|
|
|
|
+ continue;
|
|
|
|
+ if (!hwif->present && hwif->mate == NULL)
|
|
|
|
+ goto found;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ hwif = NULL;
|
|
|
|
+found:
|
|
|
|
+ return hwif;
|
|
|
|
+}
|
|
|
|
+EXPORT_SYMBOL_GPL(ide_deprecated_find_port);
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* ide_register_hw - register IDE interface
|
|
* ide_register_hw - register IDE interface
|
|
* @hw: hardware registers
|
|
* @hw: hardware registers
|
|
@@ -702,18 +727,10 @@ int ide_register_hw(hw_regs_t *hw, void (*quirkproc)(ide_drive_t *),
|
|
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
|
|
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
|
|
|
|
|
|
do {
|
|
do {
|
|
- for (index = 0; index < MAX_HWIFS; ++index) {
|
|
|
|
- hwif = &ide_hwifs[index];
|
|
|
|
- if (hwif->io_ports[IDE_DATA_OFFSET] == hw->io_ports[IDE_DATA_OFFSET])
|
|
|
|
- goto found;
|
|
|
|
- }
|
|
|
|
- for (index = 0; index < MAX_HWIFS; ++index) {
|
|
|
|
- hwif = &ide_hwifs[index];
|
|
|
|
- if (hwif->hold)
|
|
|
|
- continue;
|
|
|
|
- if (!hwif->present && hwif->mate == NULL)
|
|
|
|
- goto found;
|
|
|
|
- }
|
|
|
|
|
|
+ hwif = ide_deprecated_find_port(hw->io_ports[IDE_DATA_OFFSET]);
|
|
|
|
+ index = hwif->index;
|
|
|
|
+ if (hwif)
|
|
|
|
+ goto found;
|
|
for (index = 0; index < MAX_HWIFS; index++)
|
|
for (index = 0; index < MAX_HWIFS; index++)
|
|
ide_unregister(index, 1, 1);
|
|
ide_unregister(index, 1, 1);
|
|
} while (retry--);
|
|
} while (retry--);
|