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