Lines Matching +full:pm +full:- +full:bus
1 // SPDX-License-Identifier: GPL-2.0
10 ide_hwif_t *hwif = drive->hwif; in generic_ide_suspend()
17 if ((drive->dn & 1) == 0 || pair == NULL) in generic_ide_suspend()
22 rq = blk_get_request(drive->queue, REQ_OP_DRV_IN, 0); in generic_ide_suspend()
23 ide_req(rq)->type = ATA_PRIV_PM_SUSPEND; in generic_ide_suspend()
24 ide_req(rq)->special = &rqpm; in generic_ide_suspend()
30 blk_execute_rq(drive->queue, NULL, rq, 0); in generic_ide_suspend()
31 ret = scsi_req(rq)->result ? -EIO : 0; in generic_ide_suspend()
36 if ((drive->dn & 1) || pair == NULL) in generic_ide_suspend()
45 struct request_queue *q = rq->q; in ide_pm_execute_rq()
48 rq->rq_flags |= RQF_QUIET; in ide_pm_execute_rq()
49 scsi_req(rq)->result = -ENXIO; in ide_pm_execute_rq()
51 return -ENXIO; in ide_pm_execute_rq()
55 return scsi_req(rq)->result ? -EIO : 0; in ide_pm_execute_rq()
62 ide_hwif_t *hwif = drive->hwif; in generic_ide_resume()
67 blk_mq_start_stopped_hw_queues(drive->queue, true); in generic_ide_resume()
71 if ((drive->dn & 1) == 0 || pair == NULL) { in generic_ide_resume()
80 rq = blk_get_request(drive->queue, REQ_OP_DRV_IN, BLK_MQ_REQ_PM); in generic_ide_resume()
81 ide_req(rq)->type = ATA_PRIV_PM_RESUME; in generic_ide_resume()
82 ide_req(rq)->special = &rqpm; in generic_ide_resume()
89 if (err == 0 && dev->driver) { in generic_ide_resume()
90 struct ide_driver *drv = to_ide_driver(dev->driver); in generic_ide_resume()
92 if (drv->resume) in generic_ide_resume()
93 drv->resume(drive); in generic_ide_resume()
101 struct ide_pm_state *pm = ide_req(rq)->special; in ide_complete_power_step() local
105 drive->name, pm->pm_step); in ide_complete_power_step()
107 if (drive->media != ide_disk) in ide_complete_power_step()
110 switch (pm->pm_step) { in ide_complete_power_step()
112 if (pm->pm_state == PM_EVENT_FREEZE) in ide_complete_power_step()
113 pm->pm_step = IDE_PM_COMPLETED; in ide_complete_power_step()
115 pm->pm_step = IDE_PM_STANDBY; in ide_complete_power_step()
118 pm->pm_step = IDE_PM_COMPLETED; in ide_complete_power_step()
121 pm->pm_step = IDE_PM_IDLE; in ide_complete_power_step()
124 pm->pm_step = IDE_PM_RESTORE_DMA; in ide_complete_power_step()
131 struct ide_pm_state *pm = ide_req(rq)->special; in ide_start_power_step() local
134 switch (pm->pm_step) { in ide_start_power_step()
136 if (drive->media != ide_disk) in ide_start_power_step()
139 if (ata_id_flush_enabled(drive->id) == 0 || in ide_start_power_step()
140 (drive->dev_flags & IDE_DFLAG_WCACHE) == 0) { in ide_start_power_step()
144 if (ata_id_flush_ext_enabled(drive->id)) in ide_start_power_step()
157 if (drive->media != ide_disk) in ide_start_power_step()
158 pm->pm_step = IDE_PM_RESTORE_DMA; in ide_start_power_step()
171 if (drive->hwif->dma_ops == NULL) in ide_start_power_step()
180 pm->pm_step = IDE_PM_COMPLETED; in ide_start_power_step()
193 * ide_complete_pm_rq - end the current Power Management request
197 * This function cleans up the current PM request and stops the queue
202 struct request_queue *q = drive->queue; in ide_complete_pm_rq()
203 struct ide_pm_state *pm = ide_req(rq)->special; in ide_complete_pm_rq() local
206 if (pm->pm_step != IDE_PM_COMPLETED) in ide_complete_pm_rq()
210 printk("%s: completing PM request, %s\n", drive->name, in ide_complete_pm_rq()
211 (ide_req(rq)->type == ATA_PRIV_PM_SUSPEND) ? "suspend" : "resume"); in ide_complete_pm_rq()
213 if (ide_req(rq)->type == ATA_PRIV_PM_SUSPEND) in ide_complete_pm_rq()
216 drive->dev_flags &= ~IDE_DFLAG_BLOCKED; in ide_complete_pm_rq()
218 drive->hwif->rq = NULL; in ide_complete_pm_rq()
225 struct ide_pm_state *pm = ide_req(rq)->special; in ide_check_pm_state() local
228 ide_req(rq)->type == ATA_PRIV_PM_SUSPEND && in ide_check_pm_state()
229 pm->pm_step == IDE_PM_START_SUSPEND) in ide_check_pm_state()
231 drive->dev_flags |= IDE_DFLAG_BLOCKED; in ide_check_pm_state()
233 ide_req(rq)->type == ATA_PRIV_PM_RESUME && in ide_check_pm_state()
234 pm->pm_step == IDE_PM_START_RESUME) { in ide_check_pm_state()
240 * the bus may be broken enough to walk on our toes at this in ide_check_pm_state()
243 ide_hwif_t *hwif = drive->hwif; in ide_check_pm_state()
244 const struct ide_tp_ops *tp_ops = hwif->tp_ops; in ide_check_pm_state()
245 struct request_queue *q = drive->queue; in ide_check_pm_state()
248 printk("%s: Wakeup request inited, waiting for !BSY...\n", drive->name); in ide_check_pm_state()
252 printk(KERN_WARNING "%s: bus not ready on wakeup\n", drive->name); in ide_check_pm_state()
253 tp_ops->dev_select(drive); in ide_check_pm_state()
254 tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS); in ide_check_pm_state()
257 printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name); in ide_check_pm_state()