1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2014-2019 Intel Corporation
4  */
5 
6 #ifndef _INTEL_UC_H_
7 #define _INTEL_UC_H_
8 
9 #include "intel_guc.h"
10 #include "intel_huc.h"
11 #include "i915_params.h"
12 
13 struct intel_uc {
14 	struct intel_guc guc;
15 	struct intel_huc huc;
16 
17 	/* Snapshot of GuC log from last failed load */
18 	struct drm_i915_gem_object *load_err_log;
19 };
20 
21 void intel_uc_init_early(struct intel_uc *uc);
22 void intel_uc_driver_late_release(struct intel_uc *uc);
23 void intel_uc_init_mmio(struct intel_uc *uc);
24 void intel_uc_fetch_firmwares(struct intel_uc *uc);
25 void intel_uc_cleanup_firmwares(struct intel_uc *uc);
26 void intel_uc_sanitize(struct intel_uc *uc);
27 void intel_uc_init(struct intel_uc *uc);
28 int intel_uc_init_hw(struct intel_uc *uc);
29 void intel_uc_fini_hw(struct intel_uc *uc);
30 void intel_uc_fini(struct intel_uc *uc);
31 void intel_uc_reset_prepare(struct intel_uc *uc);
32 void intel_uc_suspend(struct intel_uc *uc);
33 void intel_uc_runtime_suspend(struct intel_uc *uc);
34 int intel_uc_resume(struct intel_uc *uc);
35 int intel_uc_runtime_resume(struct intel_uc *uc);
36 
intel_uc_supports_guc(struct intel_uc * uc)37 static inline bool intel_uc_supports_guc(struct intel_uc *uc)
38 {
39 	return intel_guc_is_supported(&uc->guc);
40 }
41 
intel_uc_uses_guc(struct intel_uc * uc)42 static inline bool intel_uc_uses_guc(struct intel_uc *uc)
43 {
44 	return intel_guc_is_enabled(&uc->guc);
45 }
46 
intel_uc_supports_guc_submission(struct intel_uc * uc)47 static inline bool intel_uc_supports_guc_submission(struct intel_uc *uc)
48 {
49 	return intel_guc_is_submission_supported(&uc->guc);
50 }
51 
intel_uc_uses_guc_submission(struct intel_uc * uc)52 static inline bool intel_uc_uses_guc_submission(struct intel_uc *uc)
53 {
54 	return intel_guc_is_submission_supported(&uc->guc);
55 }
56 
intel_uc_supports_huc(struct intel_uc * uc)57 static inline bool intel_uc_supports_huc(struct intel_uc *uc)
58 {
59 	return intel_uc_supports_guc(uc);
60 }
61 
intel_uc_uses_huc(struct intel_uc * uc)62 static inline bool intel_uc_uses_huc(struct intel_uc *uc)
63 {
64 	return intel_huc_is_enabled(&uc->huc);
65 }
66 
67 #endif
68