1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2019 Intel Corporation
4  */
5 
6 #ifndef INTEL_RC6_TYPES_H
7 #define INTEL_RC6_TYPES_H
8 
9 #include <linux/spinlock.h>
10 #include <linux/types.h>
11 
12 #include "intel_engine_types.h"
13 
14 struct drm_i915_gem_object;
15 
16 /* RC6 residency types */
17 enum intel_rc6_res_type {
18 	INTEL_RC6_RES_RC6_LOCKED,
19 	INTEL_RC6_RES_RC6,
20 	INTEL_RC6_RES_RC6p,
21 	INTEL_RC6_RES_RC6pp,
22 	INTEL_RC6_RES_MAX,
23 	INTEL_RC6_RES_VLV_MEDIA = INTEL_RC6_RES_RC6p,
24 };
25 
26 struct intel_rc6 {
27 	i915_reg_t res_reg[INTEL_RC6_RES_MAX];
28 	u64 prev_hw_residency[INTEL_RC6_RES_MAX];
29 	u64 cur_residency[INTEL_RC6_RES_MAX];
30 
31 	u32 ctl_enable;
32 	u32 bios_rc_state;
33 
34 	struct drm_i915_gem_object *pctx;
35 
36 	bool supported : 1;
37 	bool enabled : 1;
38 	bool manual : 1;
39 	bool wakeref : 1;
40 	bool bios_state_captured : 1;
41 };
42 
43 #endif /* INTEL_RC6_TYPES_H */
44