aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_uc.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2018-07-18 15:46:24 -0400
committerDave Airlie <airlied@redhat.com>2018-07-18 15:46:30 -0400
commit539c475dadc430bd0f1601902fcacc1e55ffe85a (patch)
tree6dc3e9ca56165cb46baa84febcb885ed52452cf2 /drivers/gpu/drm/i915/intel_uc.c
parent0c2fd59ae315e28f8868edf80df21a502f933fec (diff)
parent82edc7e8b8c06151bdc653935bc13b83e2f0fcfa (diff)
Merge tag 'drm-intel-next-2018-07-09' of git://anongit.freedesktop.org/drm/drm-intel into drm-next
Higlights here goes to many PSR fixes and improvements; to the Ice lake work with power well support and begin of DSI support addition. Also there were many improvements on execlists and interrupts for minimal latency on command submission; and many fixes on selftests, mostly caught by our CI. General driver: - Clean-up on aux irq (Lucas) - Mark expected switch fall-through for dealing with static analysis tools (Gustavo) Gem: - Different fixes for GuC (Chris, Anusha, Michal) - Avoid self-relocation BIAS if no relocation (Chris) - Improve debugging cases in on EINVAL return and vma allocation (Chris) - Fixes and improvements on context destroying and freeing (Chris) - Wait for engines to idle before retiring (Chris) - Many improvements on execlists and interrupts for minimal latency on command submission (Chris) - Many fixes in selftests, specially on cases highlighted on CI (Chris) - Other fixes and improvements around GGTT (Chris) - Prevent background reaping of active objects (Chris) Display: - Parallel modeset cleanup to fix driver reset (Chris) - Get AUX power domain for DP main link (Imre) - Clean-up on PSR unused func pointers (Rodrigo) - Many PSR/PSR2 fixes and improvements (DK, Jose, Tarun) - Add a PSR1 live status (Vathsala) - Replace old drm_*_{un/reference} with put,get functions (Thomas) - FBC fixes (Maarten) - Abstract and document the usage of picking macros (Jani) - Remove unnecessary check for unsupported modifiers for NV12. (DK) - Interrupt fixes for display (Ville) - Clean up on sdvo code (Ville) - Clean up on current DSI code (Jani) - Remove support for legacy debugfs crc interface (Maarten) - Simplify get_encoder_power_domains (Imre) Icelake: - MG PLL fixes (Imre) - Add hw workaround for alpha blending (Vandita) - Add power well support (Imre) - Add Interrupt Support (Anusha) - Start to add support for DSI on Ice Lake (Madhav) Signed-off-by: Dave Airlie <airlied@redhat.com> # gpg: Signature made Tue 10 Jul 2018 08:41:37 AM AEST # gpg: using RSA key FA625F640EEB13CA # gpg: Good signature from "Rodrigo Vivi <rodrigo.vivi@intel.com>" # gpg: aka "Rodrigo Vivi <rodrigo.vivi@gmail.com>" # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6D20 7068 EEDD 6509 1C2C E2A3 FA62 5F64 0EEB 13CA Link: https://patchwork.freedesktop.org/patch/msgid/20180710234349.GA16562@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_uc.c')
-rw-r--r--drivers/gpu/drm/i915/intel_uc.c34
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
182void intel_uc_cleanup_early(struct drm_i915_private *i915) 176void 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)
252int intel_uc_init_misc(struct drm_i915_private *i915) 239int 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
260err_guc:
261 intel_guc_fini_misc(guc);
262 return ret;
267} 263}
268 264
269void intel_uc_fini_misc(struct drm_i915_private *i915) 265void 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
279int intel_uc_init(struct drm_i915_private *i915) 279int intel_uc_init(struct drm_i915_private *i915)