diff options
Diffstat (limited to 'drivers/ide/ide-io.c')
| -rw-r--r-- | drivers/ide/ide-io.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index 8670112f1d39..8e568143d90d 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
| @@ -172,15 +172,6 @@ static ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request * | |||
| 172 | 172 | ||
| 173 | memset(args, 0, sizeof(*args)); | 173 | memset(args, 0, sizeof(*args)); |
| 174 | 174 | ||
| 175 | if (drive->media != ide_disk) { | ||
| 176 | /* | ||
| 177 | * skip idedisk_pm_restore_pio and idedisk_pm_idle for ATAPI | ||
| 178 | * devices | ||
| 179 | */ | ||
| 180 | if (pm->pm_step == idedisk_pm_restore_pio) | ||
| 181 | pm->pm_step = ide_pm_restore_dma; | ||
| 182 | } | ||
| 183 | |||
| 184 | switch (pm->pm_step) { | 175 | switch (pm->pm_step) { |
| 185 | case ide_pm_flush_cache: /* Suspend step 1 (flush cache) */ | 176 | case ide_pm_flush_cache: /* Suspend step 1 (flush cache) */ |
| 186 | if (drive->media != ide_disk) | 177 | if (drive->media != ide_disk) |
| @@ -207,7 +198,13 @@ static ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request * | |||
| 207 | case idedisk_pm_restore_pio: /* Resume step 1 (restore PIO) */ | 198 | case idedisk_pm_restore_pio: /* Resume step 1 (restore PIO) */ |
| 208 | if (drive->hwif->tuneproc != NULL) | 199 | if (drive->hwif->tuneproc != NULL) |
| 209 | drive->hwif->tuneproc(drive, 255); | 200 | drive->hwif->tuneproc(drive, 255); |
| 210 | ide_complete_power_step(drive, rq, 0, 0); | 201 | /* |
| 202 | * skip idedisk_pm_idle for ATAPI devices | ||
| 203 | */ | ||
| 204 | if (drive->media != ide_disk) | ||
| 205 | pm->pm_step = ide_pm_restore_dma; | ||
| 206 | else | ||
| 207 | ide_complete_power_step(drive, rq, 0, 0); | ||
| 211 | return ide_stopped; | 208 | return ide_stopped; |
| 212 | 209 | ||
| 213 | case idedisk_pm_idle: /* Resume step 2 (idle) */ | 210 | case idedisk_pm_idle: /* Resume step 2 (idle) */ |
