diff options
Diffstat (limited to 'drivers/ide/ide-io.c')
-rw-r--r-- | drivers/ide/ide-io.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index e37b09c81e3a..5b213dcaa5e6 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
@@ -939,8 +939,7 @@ static void ide_check_pm_state(ide_drive_t *drive, struct request *rq) | |||
939 | if (rc) | 939 | if (rc) |
940 | printk(KERN_WARNING "%s: bus not ready on wakeup\n", drive->name); | 940 | printk(KERN_WARNING "%s: bus not ready on wakeup\n", drive->name); |
941 | SELECT_DRIVE(drive); | 941 | SELECT_DRIVE(drive); |
942 | if (IDE_CONTROL_REG) | 942 | ide_set_irq(drive, 1); |
943 | HWIF(drive)->OUTB(drive->ctl, IDE_CONTROL_REG); | ||
944 | rc = ide_wait_not_busy(HWIF(drive), 100000); | 943 | rc = ide_wait_not_busy(HWIF(drive), 100000); |
945 | if (rc) | 944 | if (rc) |
946 | printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name); | 945 | printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name); |
@@ -1213,15 +1212,13 @@ static void ide_do_request (ide_hwgroup_t *hwgroup, int masked_irq) | |||
1213 | } | 1212 | } |
1214 | again: | 1213 | again: |
1215 | hwif = HWIF(drive); | 1214 | hwif = HWIF(drive); |
1216 | if (hwgroup->hwif->sharing_irq && | 1215 | if (hwgroup->hwif->sharing_irq && hwif != hwgroup->hwif) { |
1217 | hwif != hwgroup->hwif && | ||
1218 | hwif->io_ports[IDE_CONTROL_OFFSET]) { | ||
1219 | /* | 1216 | /* |
1220 | * set nIEN for previous hwif, drives in the | 1217 | * set nIEN for previous hwif, drives in the |
1221 | * quirk_list may not like intr setups/cleanups | 1218 | * quirk_list may not like intr setups/cleanups |
1222 | */ | 1219 | */ |
1223 | if (drive->quirk_list != 1) | 1220 | if (drive->quirk_list != 1) |
1224 | hwif->OUTB(drive->ctl | 2, IDE_CONTROL_REG); | 1221 | ide_set_irq(drive, 0); |
1225 | } | 1222 | } |
1226 | hwgroup->hwif = hwif; | 1223 | hwgroup->hwif = hwif; |
1227 | hwgroup->drive = drive; | 1224 | hwgroup->drive = drive; |