Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/drivers/accel/ivpu/ivpu_pm.h
51072 views
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
/*
3
* Copyright (C) 2020-2024 Intel Corporation
4
*/
5
6
#ifndef __IVPU_PM_H__
7
#define __IVPU_PM_H__
8
9
#include <linux/rwsem.h>
10
#include <linux/types.h>
11
12
struct ivpu_device;
13
14
struct ivpu_pm_info {
15
struct ivpu_device *vdev;
16
struct delayed_work job_timeout_work;
17
struct work_struct recovery_work;
18
struct rw_semaphore reset_lock;
19
atomic_t reset_counter;
20
atomic_t reset_pending;
21
u8 dct_active_percent;
22
};
23
24
void ivpu_pm_init(struct ivpu_device *vdev);
25
void ivpu_pm_enable(struct ivpu_device *vdev);
26
void ivpu_pm_disable(struct ivpu_device *vdev);
27
void ivpu_pm_disable_recovery(struct ivpu_device *vdev);
28
29
int ivpu_pm_suspend_cb(struct device *dev);
30
int ivpu_pm_resume_cb(struct device *dev);
31
int ivpu_pm_runtime_suspend_cb(struct device *dev);
32
int ivpu_pm_runtime_resume_cb(struct device *dev);
33
34
void ivpu_pm_reset_prepare_cb(struct pci_dev *pdev);
35
void ivpu_pm_reset_done_cb(struct pci_dev *pdev);
36
37
int __must_check ivpu_rpm_get(struct ivpu_device *vdev);
38
void ivpu_rpm_put(struct ivpu_device *vdev);
39
40
void ivpu_pm_trigger_recovery(struct ivpu_device *vdev, const char *reason);
41
void ivpu_start_job_timeout_detection(struct ivpu_device *vdev);
42
void ivpu_stop_job_timeout_detection(struct ivpu_device *vdev);
43
44
int ivpu_pm_dct_init(struct ivpu_device *vdev);
45
int ivpu_pm_dct_enable(struct ivpu_device *vdev, u8 active_percent);
46
int ivpu_pm_dct_disable(struct ivpu_device *vdev);
47
void ivpu_pm_irq_dct_work_fn(struct work_struct *work);
48
49
#endif /* __IVPU_PM_H__ */
50
51