ide: remove hwif->straight8 flag
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Sat, 26 Apr 2008 15:36:39 +0000 (17:36 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Sat, 26 Apr 2008 15:36:39 +0000 (17:36 +0200)
All host drivers now either set hwif->mmio or reserve continuous
I/O resources so remove no longer needed hwif->straight8 flag
and never reached code for 'hwif->straight8 == 0' case.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide.c
include/linux/ide.h

index b7a040ef12faf641b99c8f30e9455915dd197d33..f04b53cb023f96ef6db0f728d93c906ed5f6cb12 100644 (file)
@@ -251,29 +251,21 @@ static struct resource* hwif_request_region(ide_hwif_t *hwif,
 int ide_hwif_request_regions(ide_hwif_t *hwif)
 {
        unsigned long addr;
-       unsigned int i;
 
        if (hwif->mmio)
                return 0;
+
        addr = hwif->io_ports[IDE_CONTROL_OFFSET];
+
        if (addr && !hwif_request_region(hwif, addr, 1))
                goto control_region_busy;
-       hwif->straight8 = 0;
+
        addr = hwif->io_ports[IDE_DATA_OFFSET];
-       if ((addr | 7) == hwif->io_ports[IDE_STATUS_OFFSET]) {
-               if (!hwif_request_region(hwif, addr, 8))
-                       goto data_region_busy;
-               hwif->straight8 = 1;
-               return 0;
-       }
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               addr = hwif->io_ports[i];
-               if (!hwif_request_region(hwif, addr, 1)) {
-                       while (--i)
-                               release_region(addr, 1);
-                       goto data_region_busy;
-               }
-       }
+       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:
@@ -299,19 +291,13 @@ control_region_busy:
 
 void ide_hwif_release_regions(ide_hwif_t *hwif)
 {
-       u32 i = 0;
-
        if (hwif->mmio)
                return;
+
        if (hwif->io_ports[IDE_CONTROL_OFFSET])
                release_region(hwif->io_ports[IDE_CONTROL_OFFSET], 1);
-       if (hwif->straight8) {
-               release_region(hwif->io_ports[IDE_DATA_OFFSET], 8);
-               return;
-       }
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++)
-               if (hwif->io_ports[i])
-                       release_region(hwif->io_ports[i], 1);
+
+       release_region(hwif->io_ports[IDE_DATA_OFFSET], 8);
 }
 
 void ide_remove_port_from_hwgroup(ide_hwif_t *hwif)
index cd8deba68cb28c93d63789acbddcfe016122a609..f20410dd4482b90db602a786776a2575255f6ec8 100644 (file)
@@ -521,7 +521,6 @@ typedef struct hwif_s {
        unsigned        reset      : 1; /* reset after probe */
        unsigned        sg_mapped  : 1; /* sg_table and sg_nents are ready */
        unsigned        mmio       : 1; /* host uses MMIO */
-       unsigned        straight8  : 1; /* Alan's straight 8 check */
 
        struct device           gendev;
        struct device           *portdev;