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