xref: /openbmc/linux/drivers/gpu/drm/i915/selftests/igt_spinner.h (revision 8be98d2f2a0a262f8bf8a0bc1fdf522b3c7aab17)
18d2f6e2fSTvrtko Ursulin /*
28d2f6e2fSTvrtko Ursulin  * SPDX-License-Identifier: MIT
38d2f6e2fSTvrtko Ursulin  *
48d2f6e2fSTvrtko Ursulin  * Copyright © 2018 Intel Corporation
58d2f6e2fSTvrtko Ursulin  */
68d2f6e2fSTvrtko Ursulin 
78d2f6e2fSTvrtko Ursulin #ifndef __I915_SELFTESTS_IGT_SPINNER_H__
88d2f6e2fSTvrtko Ursulin #define __I915_SELFTESTS_IGT_SPINNER_H__
98d2f6e2fSTvrtko Ursulin 
1010be98a7SChris Wilson #include "gem/i915_gem_context.h"
11112ed2d3SChris Wilson #include "gt/intel_engine.h"
12112ed2d3SChris Wilson 
1310be98a7SChris Wilson #include "i915_drv.h"
1410be98a7SChris Wilson #include "i915_request.h"
1510be98a7SChris Wilson #include "i915_selftest.h"
168d2f6e2fSTvrtko Ursulin 
17baea429dSTvrtko Ursulin struct intel_gt;
18baea429dSTvrtko Ursulin 
198d2f6e2fSTvrtko Ursulin struct igt_spinner {
20baea429dSTvrtko Ursulin 	struct intel_gt *gt;
218d2f6e2fSTvrtko Ursulin 	struct drm_i915_gem_object *hws;
228d2f6e2fSTvrtko Ursulin 	struct drm_i915_gem_object *obj;
23*c0525888SMaarten Lankhorst 	struct intel_context *ce;
24*c0525888SMaarten Lankhorst 	struct i915_vma *hws_vma, *batch_vma;
258d2f6e2fSTvrtko Ursulin 	u32 *batch;
268d2f6e2fSTvrtko Ursulin 	void *seqno;
278d2f6e2fSTvrtko Ursulin };
288d2f6e2fSTvrtko Ursulin 
29f277bc0cSChris Wilson int igt_spinner_init(struct igt_spinner *spin, struct intel_gt *gt);
30*c0525888SMaarten Lankhorst int igt_spinner_pin(struct igt_spinner *spin,
31*c0525888SMaarten Lankhorst 		    struct intel_context *ce,
32*c0525888SMaarten Lankhorst 		    struct i915_gem_ww_ctx *ww);
338d2f6e2fSTvrtko Ursulin void igt_spinner_fini(struct igt_spinner *spin);
348d2f6e2fSTvrtko Ursulin 
358d2f6e2fSTvrtko Ursulin struct i915_request *
368d2f6e2fSTvrtko Ursulin igt_spinner_create_request(struct igt_spinner *spin,
37f277bc0cSChris Wilson 			   struct intel_context *ce,
388d2f6e2fSTvrtko Ursulin 			   u32 arbitration_command);
398d2f6e2fSTvrtko Ursulin void igt_spinner_end(struct igt_spinner *spin);
408d2f6e2fSTvrtko Ursulin 
418d2f6e2fSTvrtko Ursulin bool igt_wait_for_spinner(struct igt_spinner *spin, struct i915_request *rq);
428d2f6e2fSTvrtko Ursulin 
438d2f6e2fSTvrtko Ursulin #endif
44