diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-05-09 18:01:11 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-05-09 18:01:11 -0400 |
commit | 317a46a200e6514a1acf50ed30291160185a5c73 (patch) | |
tree | 36e75ca7c0a1f4662f91145077433695123a774e /drivers/ide/ide-io.c | |
parent | 6d208b39c45edee5def6c201fcd51561c5a39828 (diff) |
ide: fix PIO setup on resume for ATAPI devices
PIO should be restored also for ATAPI devices during resume, fix it.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
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) */ |