From 8e59a7eaf50512e9f2b063cc52a83980efbdb6c4 Mon Sep 17 00:00:00 2001 From: Bartlomiej Zolnierkiewicz Date: Sat, 26 Apr 2008 17:36:39 +0200 Subject: [PATCH] --- yaml --- r: 93567 b: refs/heads/master c: 05230e23cf02d939865a902f6ec4c1b2c82faf33 h: refs/heads/master i: 93565: 1bcb424b3ea0a565f5801c1ab83ada809e6678a7 93563: 1e8f66361617e11de301887b106c0986cc4b1403 93559: 919da341df5bb7817ba677987b3072a710f2dfc9 93551: bec0b7523aef6d0f6b83892fe1ca5bf8c6f0a59c 93535: cd2225317468c178af470047f641be3ef0ac0731 93503: b10fe7aecd837a04140bbf2c528c19a283b7d43b 93439: 794c84f44dcfdd5c8f765b842ca2c3f5d2af08c2 v: v3 --- [refs] | 2 +- trunk/drivers/ide/ide.c | 36 +++++++++++------------------------- trunk/include/linux/ide.h | 1 - 3 files changed, 12 insertions(+), 27 deletions(-) diff --git a/[refs] b/[refs] index 803db520a70d..98bf7609391c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 951784b667d78dad52ffea0a958fdbe14da97972 +refs/heads/master: 05230e23cf02d939865a902f6ec4c1b2c82faf33 diff --git a/trunk/drivers/ide/ide.c b/trunk/drivers/ide/ide.c index b7a040ef12fa..f04b53cb023f 100644 --- a/trunk/drivers/ide/ide.c +++ b/trunk/drivers/ide/ide.c @@ -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 @@ int ide_hwif_request_regions(ide_hwif_t *hwif) 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) diff --git a/trunk/include/linux/ide.h b/trunk/include/linux/ide.h index cd8deba68cb2..f20410dd4482 100644 --- a/trunk/include/linux/ide.h +++ b/trunk/include/linux/ide.h @@ -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;