Lines Matching full:pm
100 struct ivpu_pm_info *pm = container_of(work, struct ivpu_pm_info, recovery_work); in ivpu_pm_recovery_work() local
101 struct ivpu_device *vdev = pm->vdev; in ivpu_pm_recovery_work()
120 struct ivpu_pm_info *pm = vdev->pm; in ivpu_pm_schedule_recovery() local
133 if (atomic_cmpxchg(&pm->in_reset, 0, 1) == 0) { in ivpu_pm_schedule_recovery()
135 queue_work(system_long_wq, &pm->recovery_work); in ivpu_pm_schedule_recovery()
145 ivpu_dbg(vdev, PM, "Suspend..\n"); in ivpu_pm_suspend_cb()
162 ivpu_dbg(vdev, PM, "Suspend done.\n"); in ivpu_pm_suspend_cb()
173 ivpu_dbg(vdev, PM, "Resume..\n"); in ivpu_pm_resume_cb()
182 ivpu_dbg(vdev, PM, "Resume done.\n"); in ivpu_pm_resume_cb()
193 ivpu_dbg(vdev, PM, "Runtime suspend..\n"); in ivpu_pm_runtime_suspend_cb()
195 if (!ivpu_hw_is_idle(vdev) && vdev->pm->suspend_reschedule_counter) { in ivpu_pm_runtime_suspend_cb()
196 ivpu_dbg(vdev, PM, "Failed to enter idle, rescheduling suspend, retries left %d\n", in ivpu_pm_runtime_suspend_cb()
197 vdev->pm->suspend_reschedule_counter); in ivpu_pm_runtime_suspend_cb()
199 vdev->pm->suspend_reschedule_counter--; in ivpu_pm_runtime_suspend_cb()
207 if (!vdev->pm->suspend_reschedule_counter) { in ivpu_pm_runtime_suspend_cb()
214 vdev->pm->suspend_reschedule_counter = PM_RESCHEDULE_LIMIT; in ivpu_pm_runtime_suspend_cb()
216 ivpu_dbg(vdev, PM, "Runtime suspend done.\n"); in ivpu_pm_runtime_suspend_cb()
227 ivpu_dbg(vdev, PM, "Runtime resume..\n"); in ivpu_pm_runtime_resume_cb()
233 ivpu_dbg(vdev, PM, "Runtime resume done.\n"); in ivpu_pm_runtime_resume_cb()
244 vdev->pm->suspend_reschedule_counter = PM_RESCHEDULE_LIMIT; in ivpu_rpm_get()
261 ivpu_dbg(vdev, PM, "Pre-reset..\n"); in ivpu_pm_reset_prepare_cb()
262 atomic_inc(&vdev->pm->reset_counter); in ivpu_pm_reset_prepare_cb()
263 atomic_set(&vdev->pm->in_reset, 1); in ivpu_pm_reset_prepare_cb()
268 ivpu_dbg(vdev, PM, "Pre-reset done.\n"); in ivpu_pm_reset_prepare_cb()
276 ivpu_dbg(vdev, PM, "Post-reset..\n"); in ivpu_pm_reset_done_cb()
280 atomic_set(&vdev->pm->in_reset, 0); in ivpu_pm_reset_done_cb()
281 ivpu_dbg(vdev, PM, "Post-reset done.\n"); in ivpu_pm_reset_done_cb()
289 struct ivpu_pm_info *pm = vdev->pm; in ivpu_pm_init() local
291 pm->vdev = vdev; in ivpu_pm_init()
292 pm->suspend_reschedule_counter = PM_RESCHEDULE_LIMIT; in ivpu_pm_init()
294 atomic_set(&pm->in_reset, 0); in ivpu_pm_init()
295 INIT_WORK(&pm->recovery_work, ivpu_pm_recovery_work); in ivpu_pm_init()
311 cancel_work_sync(&vdev->pm->recovery_work); in ivpu_pm_cancel_recovery()