|
Lines 140-145
Link Here
|
| 140 |
idedisk_pm_standby, |
140 |
idedisk_pm_standby, |
| 141 |
|
141 |
|
| 142 |
idedisk_pm_idle = ide_pm_state_start_resume, |
142 |
idedisk_pm_idle = ide_pm_state_start_resume, |
|
|
143 |
idedisk_pm_restore_hpa, |
| 143 |
ide_pm_restore_dma, |
144 |
ide_pm_restore_dma, |
| 144 |
}; |
145 |
}; |
| 145 |
|
146 |
|
|
Lines 159-164
Link Here
|
| 159 |
rq->pm->pm_step = ide_pm_state_completed; |
160 |
rq->pm->pm_step = ide_pm_state_completed; |
| 160 |
break; |
161 |
break; |
| 161 |
case idedisk_pm_idle: /* Resume step 1 (idle) complete */ |
162 |
case idedisk_pm_idle: /* Resume step 1 (idle) complete */ |
|
|
163 |
rq->pm->pm_step = idedisk_pm_restore_hpa; |
| 164 |
break; |
| 165 |
case idedisk_pm_restore_hpa: /* Resume step 2 (hpa) complete */ |
| 162 |
rq->pm->pm_step = ide_pm_restore_dma; |
166 |
rq->pm->pm_step = ide_pm_restore_dma; |
| 163 |
break; |
167 |
break; |
| 164 |
} |
168 |
} |
|
Lines 171-177
Link Here
|
| 171 |
memset(args, 0, sizeof(*args)); |
175 |
memset(args, 0, sizeof(*args)); |
| 172 |
|
176 |
|
| 173 |
if (drive->media != ide_disk) { |
177 |
if (drive->media != ide_disk) { |
| 174 |
/* skip idedisk_pm_idle for ATAPI devices */ |
178 |
/* skip idedisk_pm_idle and restore_hpa for ATAPI devices */ |
| 175 |
if (rq->pm->pm_step == idedisk_pm_idle) |
179 |
if (rq->pm->pm_step == idedisk_pm_idle) |
| 176 |
rq->pm->pm_step = ide_pm_restore_dma; |
180 |
rq->pm->pm_step = ide_pm_restore_dma; |
| 177 |
} |
181 |
} |
|
Lines 205-210
Link Here
|
| 205 |
args->handler = task_no_data_intr; |
209 |
args->handler = task_no_data_intr; |
| 206 |
return do_rw_taskfile(drive, args); |
210 |
return do_rw_taskfile(drive, args); |
| 207 |
|
211 |
|
|
|
212 |
case idedisk_pm_restore_hpa: { |
| 213 |
struct device *dev = &drive->gendev; |
| 214 |
ide_driver_t *drv = container_of(dev->driver, ide_driver_t, gen_driver); |
| 215 |
printk("%s: hpa resume step %p\n", drive->name, drv->resume); |
| 216 |
|
| 217 |
if (drv->resume) |
| 218 |
drv->resume(drive); |
| 219 |
|
| 220 |
return ide_stopped; |
| 221 |
} |
| 222 |
|
| 208 |
case ide_pm_restore_dma: /* Resume step 2 (restore DMA) */ |
223 |
case ide_pm_restore_dma: /* Resume step 2 (restore DMA) */ |
| 209 |
/* |
224 |
/* |
| 210 |
* Right now, all we do is call hwif->ide_dma_check(drive), |
225 |
* Right now, all we do is call hwif->ide_dma_check(drive), |