|
@@ -227,56 +227,6 @@ static int ide_system_bus_speed(void)
|
|
|
return pci_dev_present(pci_default) ? 33 : 50;
|
|
|
}
|
|
|
|
|
|
-static struct resource* hwif_request_region(ide_hwif_t *hwif,
|
|
|
- unsigned long addr, int num)
|
|
|
-{
|
|
|
- struct resource *res = request_region(addr, num, hwif->name);
|
|
|
-
|
|
|
- if (!res)
|
|
|
- printk(KERN_ERR "%s: I/O resource 0x%lX-0x%lX not free.\n",
|
|
|
- hwif->name, addr, addr+num-1);
|
|
|
- return res;
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * ide_hwif_request_regions - request resources for IDE
|
|
|
- * @hwif: interface to use
|
|
|
- *
|
|
|
- * Requests all the needed resources for an interface.
|
|
|
- * Right now core IDE code does this work which is deeply wrong.
|
|
|
- * MMIO leaves it to the controller driver,
|
|
|
- * PIO will migrate this way over time.
|
|
|
- */
|
|
|
-
|
|
|
-int ide_hwif_request_regions(ide_hwif_t *hwif)
|
|
|
-{
|
|
|
- unsigned long addr;
|
|
|
-
|
|
|
- if (hwif->mmio)
|
|
|
- return 0;
|
|
|
-
|
|
|
- addr = hwif->io_ports[IDE_CONTROL_OFFSET];
|
|
|
-
|
|
|
- if (addr && !hwif_request_region(hwif, addr, 1))
|
|
|
- goto control_region_busy;
|
|
|
-
|
|
|
- addr = hwif->io_ports[IDE_DATA_OFFSET];
|
|
|
- BUG_ON((addr | 7) != hwif->io_ports[IDE_STATUS_OFFSET]);
|
|
|
-
|
|
|
- if (!hwif_request_region(hwif, addr, 8))
|
|
|
- goto data_region_busy;
|
|
|
-
|
|
|
- return 0;
|
|
|
-
|
|
|
-data_region_busy:
|
|
|
- addr = hwif->io_ports[IDE_CONTROL_OFFSET];
|
|
|
- if (addr)
|
|
|
- release_region(addr, 1);
|
|
|
-control_region_busy:
|
|
|
- /* If any errors are return, we drop the hwif interface. */
|
|
|
- return -EBUSY;
|
|
|
-}
|
|
|
-
|
|
|
void ide_remove_port_from_hwgroup(ide_hwif_t *hwif)
|
|
|
{
|
|
|
ide_hwgroup_t *hwgroup = hwif->hwgroup;
|