diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_uc.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_uc.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c index 94e8863bd97c..7c95697e1a35 100644 --- a/drivers/gpu/drm/i915/intel_uc.c +++ b/drivers/gpu/drm/i915/intel_uc.c | |||
@@ -171,24 +171,11 @@ void intel_uc_init_early(struct drm_i915_private *i915) | |||
171 | intel_huc_init_early(huc); | 171 | intel_huc_init_early(huc); |
172 | 172 | ||
173 | sanitize_options_early(i915); | 173 | sanitize_options_early(i915); |
174 | |||
175 | if (USES_GUC(i915)) | ||
176 | intel_uc_fw_fetch(i915, &guc->fw); | ||
177 | |||
178 | if (USES_HUC(i915)) | ||
179 | intel_uc_fw_fetch(i915, &huc->fw); | ||
180 | } | 174 | } |
181 | 175 | ||
182 | void intel_uc_cleanup_early(struct drm_i915_private *i915) | 176 | void intel_uc_cleanup_early(struct drm_i915_private *i915) |
183 | { | 177 | { |
184 | struct intel_guc *guc = &i915->guc; | 178 | struct intel_guc *guc = &i915->guc; |
185 | struct intel_huc *huc = &i915->huc; | ||
186 | |||
187 | if (USES_HUC(i915)) | ||
188 | intel_uc_fw_fini(&huc->fw); | ||
189 | |||
190 | if (USES_GUC(i915)) | ||
191 | intel_uc_fw_fini(&guc->fw); | ||
192 | 179 | ||
193 | guc_free_load_err_log(guc); | 180 | guc_free_load_err_log(guc); |
194 | } | 181 | } |
@@ -252,28 +239,41 @@ static void guc_disable_communication(struct intel_guc *guc) | |||
252 | int intel_uc_init_misc(struct drm_i915_private *i915) | 239 | int intel_uc_init_misc(struct drm_i915_private *i915) |
253 | { | 240 | { |
254 | struct intel_guc *guc = &i915->guc; | 241 | struct intel_guc *guc = &i915->guc; |
242 | struct intel_huc *huc = &i915->huc; | ||
255 | int ret; | 243 | int ret; |
256 | 244 | ||
257 | if (!USES_GUC(i915)) | 245 | if (!USES_GUC(i915)) |
258 | return 0; | 246 | return 0; |
259 | 247 | ||
260 | intel_guc_init_ggtt_pin_bias(guc); | 248 | ret = intel_guc_init_misc(guc); |
261 | |||
262 | ret = intel_guc_init_wq(guc); | ||
263 | if (ret) | 249 | if (ret) |
264 | return ret; | 250 | return ret; |
265 | 251 | ||
252 | if (USES_HUC(i915)) { | ||
253 | ret = intel_huc_init_misc(huc); | ||
254 | if (ret) | ||
255 | goto err_guc; | ||
256 | } | ||
257 | |||
266 | return 0; | 258 | return 0; |
259 | |||
260 | err_guc: | ||
261 | intel_guc_fini_misc(guc); | ||
262 | return ret; | ||
267 | } | 263 | } |
268 | 264 | ||
269 | void intel_uc_fini_misc(struct drm_i915_private *i915) | 265 | void intel_uc_fini_misc(struct drm_i915_private *i915) |
270 | { | 266 | { |
271 | struct intel_guc *guc = &i915->guc; | 267 | struct intel_guc *guc = &i915->guc; |
268 | struct intel_huc *huc = &i915->huc; | ||
272 | 269 | ||
273 | if (!USES_GUC(i915)) | 270 | if (!USES_GUC(i915)) |
274 | return; | 271 | return; |
275 | 272 | ||
276 | intel_guc_fini_wq(guc); | 273 | if (USES_HUC(i915)) |
274 | intel_huc_fini_misc(huc); | ||
275 | |||
276 | intel_guc_fini_misc(guc); | ||
277 | } | 277 | } |
278 | 278 | ||
279 | int intel_uc_init(struct drm_i915_private *i915) | 279 | int intel_uc_init(struct drm_i915_private *i915) |