1e7858254SMatt Roper /* SPDX-License-Identifier: MIT */
2e7858254SMatt Roper /*
3e7858254SMatt Roper  * Copyright © 2022 Intel Corporation
4e7858254SMatt Roper  */
5e7858254SMatt Roper 
6e7858254SMatt Roper #ifndef __INTEL_GT_MCR__
7e7858254SMatt Roper #define __INTEL_GT_MCR__
8e7858254SMatt Roper 
9e7858254SMatt Roper #include "intel_gt_types.h"
10e7858254SMatt Roper 
11e7858254SMatt Roper void intel_gt_mcr_init(struct intel_gt *gt);
12e7858254SMatt Roper 
13*3fe6c7f5SMatt Roper u32 intel_gt_mcr_read(struct intel_gt *gt,
14e7858254SMatt Roper 		      i915_reg_t reg,
15*3fe6c7f5SMatt Roper 		      int group, int instance);
16*3fe6c7f5SMatt Roper u32 intel_gt_mcr_read_any_fw(struct intel_gt *gt, i915_reg_t reg);
17*3fe6c7f5SMatt Roper u32 intel_gt_mcr_read_any(struct intel_gt *gt, i915_reg_t reg);
18*3fe6c7f5SMatt Roper 
19*3fe6c7f5SMatt Roper void intel_gt_mcr_unicast_write(struct intel_gt *gt,
20e7858254SMatt Roper 				i915_reg_t reg, u32 value,
21*3fe6c7f5SMatt Roper 				int group, int instance);
22*3fe6c7f5SMatt Roper void intel_gt_mcr_multicast_write(struct intel_gt *gt,
23*3fe6c7f5SMatt Roper 				  i915_reg_t reg, u32 value);
24*3fe6c7f5SMatt Roper void intel_gt_mcr_multicast_write_fw(struct intel_gt *gt,
25*3fe6c7f5SMatt Roper 				     i915_reg_t reg, u32 value);
26e7858254SMatt Roper 
27*3fe6c7f5SMatt Roper void intel_gt_mcr_get_nonterminated_steering(struct intel_gt *gt,
28*3fe6c7f5SMatt Roper 					     i915_reg_t reg,
29*3fe6c7f5SMatt Roper 					     u8 *group, u8 *instance);
30e7858254SMatt Roper 
31*3fe6c7f5SMatt Roper void intel_gt_mcr_report_steering(struct drm_printer *p, struct intel_gt *gt,
32e7858254SMatt Roper 				  bool dump_table);
33e7858254SMatt Roper 
34e7858254SMatt Roper #endif /* __INTEL_GT_MCR__ */
35