/* SPDX-License-Identifier: MIT */
/*
* Copyright © 2019 Intel Corporation
*/
#ifndef INTEL_RC6_TYPES_H
#define INTEL_RC6_TYPES_H
#include <linux/spinlock.h>
#include <linux/types.h>
#include "intel_engine_types.h"
struct drm_i915_gem_object;
/* RC6 residency types */
enum intel_rc6_res_type {
INTEL_RC6_RES_RC6_LOCKED,
INTEL_RC6_RES_RC6,
INTEL_RC6_RES_RC6p,
INTEL_RC6_RES_RC6pp,
INTEL_RC6_RES_MAX,
INTEL_RC6_RES_VLV_MEDIA = INTEL_RC6_RES_RC6p,
};
struct intel_rc6 {
i915_reg_t res_reg[INTEL_RC6_RES_MAX];
u64 prev_hw_residency[INTEL_RC6_RES_MAX];
u64 cur_residency[INTEL_RC6_RES_MAX];
u32 ctl_enable;
u32 bios_rc_state;
struct drm_i915_gem_object *pctx;
bool supported : 1;
bool enabled : 1;
bool manual : 1;
bool wakeref : 1;
bool bios_state_captured : 1;
};
#endif /* INTEL_RC6_TYPES_H */