xref: /openbmc/linux/drivers/gpu/drm/i915/gt/intel_gt.h (revision 797a6153)
124635c51STvrtko Ursulin /* SPDX-License-Identifier: MIT */
224635c51STvrtko Ursulin /*
324635c51STvrtko Ursulin  * Copyright © 2019 Intel Corporation
424635c51STvrtko Ursulin  */
524635c51STvrtko Ursulin 
624635c51STvrtko Ursulin #ifndef __INTEL_GT__
724635c51STvrtko Ursulin #define __INTEL_GT__
824635c51STvrtko Ursulin 
9eaf522f6STvrtko Ursulin #include "intel_engine_types.h"
1024635c51STvrtko Ursulin #include "intel_gt_types.h"
11cb823ed9SChris Wilson #include "intel_reset.h"
1224635c51STvrtko Ursulin 
13724e9564STvrtko Ursulin struct drm_i915_private;
14724e9564STvrtko Ursulin 
15ca7b2c1bSDaniele Ceraolo Spurio static inline struct intel_gt *uc_to_gt(struct intel_uc *uc)
16ca7b2c1bSDaniele Ceraolo Spurio {
17ca7b2c1bSDaniele Ceraolo Spurio 	return container_of(uc, struct intel_gt, uc);
18ca7b2c1bSDaniele Ceraolo Spurio }
19ca7b2c1bSDaniele Ceraolo Spurio 
2084b1ca2fSDaniele Ceraolo Spurio static inline struct intel_gt *guc_to_gt(struct intel_guc *guc)
2184b1ca2fSDaniele Ceraolo Spurio {
2284b1ca2fSDaniele Ceraolo Spurio 	return container_of(guc, struct intel_gt, uc.guc);
2384b1ca2fSDaniele Ceraolo Spurio }
2484b1ca2fSDaniele Ceraolo Spurio 
2584b1ca2fSDaniele Ceraolo Spurio static inline struct intel_gt *huc_to_gt(struct intel_huc *huc)
2684b1ca2fSDaniele Ceraolo Spurio {
2784b1ca2fSDaniele Ceraolo Spurio 	return container_of(huc, struct intel_gt, uc.huc);
2884b1ca2fSDaniele Ceraolo Spurio }
2984b1ca2fSDaniele Ceraolo Spurio 
30724e9564STvrtko Ursulin void intel_gt_init_early(struct intel_gt *gt, struct drm_i915_private *i915);
31797a6153SChris Wilson void intel_gt_init_hw_early(struct intel_gt *gt, struct i915_ggtt *ggtt);
3261fa60ffSTvrtko Ursulin int __must_check intel_gt_init_hw(struct intel_gt *gt);
3342014f69SAndi Shyti int intel_gt_init(struct intel_gt *gt);
3442014f69SAndi Shyti void intel_gt_driver_register(struct intel_gt *gt);
3542014f69SAndi Shyti 
3642014f69SAndi Shyti void intel_gt_driver_unregister(struct intel_gt *gt);
3742014f69SAndi Shyti void intel_gt_driver_remove(struct intel_gt *gt);
3842014f69SAndi Shyti void intel_gt_driver_release(struct intel_gt *gt);
3924635c51STvrtko Ursulin 
406cf72db6SDaniele Ceraolo Spurio void intel_gt_driver_late_release(struct intel_gt *gt);
41cb823ed9SChris Wilson 
42eaf522f6STvrtko Ursulin void intel_gt_check_and_clear_faults(struct intel_gt *gt);
43eaf522f6STvrtko Ursulin void intel_gt_clear_error_registers(struct intel_gt *gt,
44eaf522f6STvrtko Ursulin 				    intel_engine_mask_t engine_mask);
45eaf522f6STvrtko Ursulin 
46a1c8a09eSTvrtko Ursulin void intel_gt_flush_ggtt_writes(struct intel_gt *gt);
47baea429dSTvrtko Ursulin void intel_gt_chipset_flush(struct intel_gt *gt);
48a1c8a09eSTvrtko Ursulin 
4946c5847eSLionel Landwerlin static inline u32 intel_gt_scratch_offset(const struct intel_gt *gt,
5046c5847eSLionel Landwerlin 					  enum intel_gt_scratch_field field)
51db56f974STvrtko Ursulin {
5246c5847eSLionel Landwerlin 	return i915_ggtt_offset(gt->scratch) + field;
53db56f974STvrtko Ursulin }
54db56f974STvrtko Ursulin 
55cb823ed9SChris Wilson static inline bool intel_gt_is_wedged(struct intel_gt *gt)
56cb823ed9SChris Wilson {
57cb823ed9SChris Wilson 	return __intel_reset_failed(&gt->reset);
58cb823ed9SChris Wilson }
59cb823ed9SChris Wilson 
6024635c51STvrtko Ursulin #endif /* __INTEL_GT_H__ */
61