1 | /* SPDX-License-Identifier: MIT */ |
2 | /* |
3 | * Copyright © 2021 Intel Corporation |
4 | */ |
5 | |
6 | #ifndef _INTEL_GUC_SLPC_TYPES_H_ |
7 | #define _INTEL_GUC_SLPC_TYPES_H_ |
8 | |
9 | #include <linux/atomic.h> |
10 | #include <linux/workqueue.h> |
11 | #include <linux/mutex.h> |
12 | #include <linux/types.h> |
13 | |
14 | #define SLPC_RESET_TIMEOUT_MS 5 |
15 | |
16 | struct intel_guc_slpc { |
17 | struct i915_vma *vma; |
18 | struct slpc_shared_data *vaddr; |
19 | bool supported; |
20 | bool selected; |
21 | |
22 | /* Indicates this is a server part */ |
23 | bool min_is_rpmax; |
24 | |
25 | /* platform frequency limits */ |
26 | u32 min_freq; |
27 | u32 rp0_freq; |
28 | u32 rp1_freq; |
29 | u32 boost_freq; |
30 | |
31 | /* frequency softlimits */ |
32 | u32 min_freq_softlimit; |
33 | u32 max_freq_softlimit; |
34 | bool ignore_eff_freq; |
35 | |
36 | /* cached media ratio mode */ |
37 | u32 media_ratio_mode; |
38 | |
39 | /* Protects set/reset of boost freq |
40 | * and value of num_waiters |
41 | */ |
42 | struct mutex lock; |
43 | |
44 | struct work_struct boost_work; |
45 | atomic_t num_waiters; |
46 | u32 num_boosts; |
47 | }; |
48 | |
49 | #endif |
50 | |