Commit 6f76098f authored by Daniele Ceraolo Spurio's avatar Daniele Ceraolo Spurio Committed by Chris Wilson

drm/i915/uc: Move uC early functions inside the GT ones

uC is a subcomponent of GT, so initialize/clean it as part of it. The
wopcm_init_early doesn't have to be happen before the uC one, but since
in other parts of the code we consider WOPCM first do the same for
consistency.

v2: s/cleanup_early/late_release to match the caller
v3: s/late_release/driver_late_release/ (Chris)
Signed-off-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com> #v1
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20190801005709.34092-2-daniele.ceraolospurio@intel.com
parent 6cf72db6
...@@ -22,6 +22,7 @@ void intel_gt_init_early(struct intel_gt *gt, struct drm_i915_private *i915) ...@@ -22,6 +22,7 @@ void intel_gt_init_early(struct intel_gt *gt, struct drm_i915_private *i915)
intel_gt_init_hangcheck(gt); intel_gt_init_hangcheck(gt);
intel_gt_init_reset(gt); intel_gt_init_reset(gt);
intel_gt_pm_init_early(gt); intel_gt_pm_init_early(gt);
intel_uc_init_early(&gt->uc);
} }
void intel_gt_init_hw(struct drm_i915_private *i915) void intel_gt_init_hw(struct drm_i915_private *i915)
...@@ -262,5 +263,6 @@ void intel_gt_fini_scratch(struct intel_gt *gt) ...@@ -262,5 +263,6 @@ void intel_gt_fini_scratch(struct intel_gt *gt)
void intel_gt_driver_late_release(struct intel_gt *gt) void intel_gt_driver_late_release(struct intel_gt *gt)
{ {
intel_uc_driver_late_release(&gt->uc);
intel_gt_fini_reset(gt); intel_gt_fini_reset(gt);
} }
...@@ -137,7 +137,7 @@ void intel_uc_init_early(struct intel_uc *uc) ...@@ -137,7 +137,7 @@ void intel_uc_init_early(struct intel_uc *uc)
sanitize_options_early(uc); sanitize_options_early(uc);
} }
void intel_uc_cleanup_early(struct intel_uc *uc) void intel_uc_driver_late_release(struct intel_uc *uc)
{ {
guc_free_load_err_log(&uc->guc); guc_free_load_err_log(&uc->guc);
} }
......
...@@ -34,7 +34,7 @@ struct intel_uc { ...@@ -34,7 +34,7 @@ struct intel_uc {
}; };
void intel_uc_init_early(struct intel_uc *uc); void intel_uc_init_early(struct intel_uc *uc);
void intel_uc_cleanup_early(struct intel_uc *uc); void intel_uc_driver_late_release(struct intel_uc *uc);
void intel_uc_init_mmio(struct intel_uc *uc); void intel_uc_init_mmio(struct intel_uc *uc);
void intel_uc_fetch_firmwares(struct intel_uc *uc); void intel_uc_fetch_firmwares(struct intel_uc *uc);
void intel_uc_cleanup_firmwares(struct intel_uc *uc); void intel_uc_cleanup_firmwares(struct intel_uc *uc);
......
...@@ -921,6 +921,8 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv) ...@@ -921,6 +921,8 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
if (ret < 0) if (ret < 0)
return ret; return ret;
intel_wopcm_init_early(&dev_priv->wopcm);
intel_gt_init_early(&dev_priv->gt, dev_priv); intel_gt_init_early(&dev_priv->gt, dev_priv);
ret = i915_gem_init_early(dev_priv); ret = i915_gem_init_early(dev_priv);
...@@ -930,13 +932,11 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv) ...@@ -930,13 +932,11 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
/* This must be called before any calls to HAS_PCH_* */ /* This must be called before any calls to HAS_PCH_* */
intel_detect_pch(dev_priv); intel_detect_pch(dev_priv);
intel_wopcm_init_early(&dev_priv->wopcm);
intel_uc_init_early(&dev_priv->gt.uc);
intel_pm_setup(dev_priv); intel_pm_setup(dev_priv);
intel_init_dpio(dev_priv); intel_init_dpio(dev_priv);
ret = intel_power_domains_init(dev_priv); ret = intel_power_domains_init(dev_priv);
if (ret < 0) if (ret < 0)
goto err_uc; goto err_gem;
intel_irq_init(dev_priv); intel_irq_init(dev_priv);
intel_init_display_hooks(dev_priv); intel_init_display_hooks(dev_priv);
intel_init_clock_gating_hooks(dev_priv); intel_init_clock_gating_hooks(dev_priv);
...@@ -947,8 +947,7 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv) ...@@ -947,8 +947,7 @@ static int i915_driver_early_probe(struct drm_i915_private *dev_priv)
return 0; return 0;
err_uc: err_gem:
intel_uc_cleanup_early(&dev_priv->gt.uc);
i915_gem_cleanup_early(dev_priv); i915_gem_cleanup_early(dev_priv);
err_workqueues: err_workqueues:
intel_gt_driver_late_release(&dev_priv->gt); intel_gt_driver_late_release(&dev_priv->gt);
...@@ -965,7 +964,6 @@ static void i915_driver_late_release(struct drm_i915_private *dev_priv) ...@@ -965,7 +964,6 @@ static void i915_driver_late_release(struct drm_i915_private *dev_priv)
{ {
intel_irq_fini(dev_priv); intel_irq_fini(dev_priv);
intel_power_domains_cleanup(dev_priv); intel_power_domains_cleanup(dev_priv);
intel_uc_cleanup_early(&dev_priv->gt.uc);
i915_gem_cleanup_early(dev_priv); i915_gem_cleanup_early(dev_priv);
intel_gt_driver_late_release(&dev_priv->gt); intel_gt_driver_late_release(&dev_priv->gt);
i915_workqueues_cleanup(dev_priv); i915_workqueues_cleanup(dev_priv);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment