Commit | Line | Data |
---|---|---|
852be13f JL |
1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* | |
3 | * Copyright (C) 2020-2023 Intel Corporation | |
4 | */ | |
5 | ||
6 | #ifndef __IVPU_PM_H__ | |
7 | #define __IVPU_PM_H__ | |
8 | ||
27d19268 | 9 | #include <linux/rwsem.h> |
852be13f JL |
10 | #include <linux/types.h> |
11 | ||
12 | struct ivpu_device; | |
13 | ||
14 | struct ivpu_pm_info { | |
15 | struct ivpu_device *vdev; | |
58cde80f | 16 | struct delayed_work job_timeout_work; |
852be13f | 17 | struct work_struct recovery_work; |
27d19268 | 18 | struct rw_semaphore reset_lock; |
8f7fb1e2 | 19 | atomic_t reset_counter; |
27d19268 | 20 | atomic_t reset_pending; |
852be13f JL |
21 | bool is_warmboot; |
22 | u32 suspend_reschedule_counter; | |
23 | }; | |
24 | ||
3f68b03a | 25 | void ivpu_pm_init(struct ivpu_device *vdev); |
852be13f JL |
26 | void ivpu_pm_enable(struct ivpu_device *vdev); |
27 | void ivpu_pm_disable(struct ivpu_device *vdev); | |
6013aa84 | 28 | void ivpu_pm_cancel_recovery(struct ivpu_device *vdev); |
852be13f JL |
29 | |
30 | int ivpu_pm_suspend_cb(struct device *dev); | |
31 | int ivpu_pm_resume_cb(struct device *dev); | |
32 | int ivpu_pm_runtime_suspend_cb(struct device *dev); | |
33 | int ivpu_pm_runtime_resume_cb(struct device *dev); | |
34 | ||
35 | void ivpu_pm_reset_prepare_cb(struct pci_dev *pdev); | |
36 | void ivpu_pm_reset_done_cb(struct pci_dev *pdev); | |
37 | ||
38 | int __must_check ivpu_rpm_get(struct ivpu_device *vdev); | |
c39dc151 | 39 | int __must_check ivpu_rpm_get_if_active(struct ivpu_device *vdev); |
852be13f JL |
40 | void ivpu_rpm_put(struct ivpu_device *vdev); |
41 | ||
27d19268 | 42 | void ivpu_pm_trigger_recovery(struct ivpu_device *vdev, const char *reason); |
58cde80f SG |
43 | void ivpu_start_job_timeout_detection(struct ivpu_device *vdev); |
44 | void ivpu_stop_job_timeout_detection(struct ivpu_device *vdev); | |
852be13f JL |
45 | |
46 | #endif /* __IVPU_PM_H__ */ |