diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-01-13 05:55:28 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-01-13 10:04:45 -0500 |
commit | f5949141a21ee16edf1beaf95cbae7e419171ab5 (patch) | |
tree | 78b19d8aafa0e3ff871764e023e0cd873084d005 /drivers/gpu | |
parent | eb47fe8033d6c2013ce47ec44f39fa0092aa8551 (diff) |
drm/i915: Init power domains early in driver load
Since
commit ac9b8236551d1177fd07b56aef9b565d1864420d
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date: Fri Nov 27 18:55:26 2015 +0200
drm/i915: Introduce a gmbus power domain
gmbus also needs the power domain infrastructure right from the start,
since as soon as we register the i2c controllers someone can use them.
v2: Adjust cleanup paths too (Chris).
v3: Rebase onto -nightly (totally bogus tree I had lying around) and
also move dpio init head (Ville).
v4: Ville instead suggested to move gmbus setup later in the sequence,
since it's only needed by the modeset code.
v5: Move even close to the actual user, right next to the comment that
states where we really need gmbus (and interrupts!).
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Meelis Roos <mroos@linux.ee>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Fixes: ac9b8236551d ("drm/i915: Introduce a gmbus power domain")
Cc: stable@vger.kernel.org
References: http://www.spinics.net/lists/intel-gfx/msg83075.html
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1452682528-19437-1-git-send-email-daniel.vetter@ffwll.ch
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index a81c76603544..aace06005f23 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c | |||
@@ -403,6 +403,8 @@ static int i915_load_modeset_init(struct drm_device *dev) | |||
403 | if (ret) | 403 | if (ret) |
404 | goto cleanup_gem_stolen; | 404 | goto cleanup_gem_stolen; |
405 | 405 | ||
406 | intel_setup_gmbus(dev); | ||
407 | |||
406 | /* Important: The output setup functions called by modeset_init need | 408 | /* Important: The output setup functions called by modeset_init need |
407 | * working irqs for e.g. gmbus and dp aux transfers. */ | 409 | * working irqs for e.g. gmbus and dp aux transfers. */ |
408 | intel_modeset_init(dev); | 410 | intel_modeset_init(dev); |
@@ -452,6 +454,7 @@ cleanup_gem: | |||
452 | cleanup_irq: | 454 | cleanup_irq: |
453 | intel_guc_ucode_fini(dev); | 455 | intel_guc_ucode_fini(dev); |
454 | drm_irq_uninstall(dev); | 456 | drm_irq_uninstall(dev); |
457 | intel_teardown_gmbus(dev); | ||
455 | cleanup_gem_stolen: | 458 | cleanup_gem_stolen: |
456 | i915_gem_cleanup_stolen(dev); | 459 | i915_gem_cleanup_stolen(dev); |
457 | cleanup_vga_switcheroo: | 460 | cleanup_vga_switcheroo: |
@@ -1026,7 +1029,6 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) | |||
1026 | 1029 | ||
1027 | /* Try to make sure MCHBAR is enabled before poking at it */ | 1030 | /* Try to make sure MCHBAR is enabled before poking at it */ |
1028 | intel_setup_mchbar(dev); | 1031 | intel_setup_mchbar(dev); |
1029 | intel_setup_gmbus(dev); | ||
1030 | intel_opregion_setup(dev); | 1032 | intel_opregion_setup(dev); |
1031 | 1033 | ||
1032 | i915_gem_load(dev); | 1034 | i915_gem_load(dev); |
@@ -1097,7 +1099,6 @@ out_gem_unload: | |||
1097 | if (dev->pdev->msi_enabled) | 1099 | if (dev->pdev->msi_enabled) |
1098 | pci_disable_msi(dev->pdev); | 1100 | pci_disable_msi(dev->pdev); |
1099 | 1101 | ||
1100 | intel_teardown_gmbus(dev); | ||
1101 | intel_teardown_mchbar(dev); | 1102 | intel_teardown_mchbar(dev); |
1102 | pm_qos_remove_request(&dev_priv->pm_qos); | 1103 | pm_qos_remove_request(&dev_priv->pm_qos); |
1103 | destroy_workqueue(dev_priv->gpu_error.hangcheck_wq); | 1104 | destroy_workqueue(dev_priv->gpu_error.hangcheck_wq); |
@@ -1196,7 +1197,6 @@ int i915_driver_unload(struct drm_device *dev) | |||
1196 | 1197 | ||
1197 | intel_csr_ucode_fini(dev_priv); | 1198 | intel_csr_ucode_fini(dev_priv); |
1198 | 1199 | ||
1199 | intel_teardown_gmbus(dev); | ||
1200 | intel_teardown_mchbar(dev); | 1200 | intel_teardown_mchbar(dev); |
1201 | 1201 | ||
1202 | destroy_workqueue(dev_priv->hotplug.dp_wq); | 1202 | destroy_workqueue(dev_priv->hotplug.dp_wq); |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 1ef715303cc6..1e3461fbb805 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -15821,6 +15821,8 @@ void intel_modeset_cleanup(struct drm_device *dev) | |||
15821 | mutex_lock(&dev->struct_mutex); | 15821 | mutex_lock(&dev->struct_mutex); |
15822 | intel_cleanup_gt_powersave(dev); | 15822 | intel_cleanup_gt_powersave(dev); |
15823 | mutex_unlock(&dev->struct_mutex); | 15823 | mutex_unlock(&dev->struct_mutex); |
15824 | |||
15825 | intel_teardown_gmbus(dev); | ||
15824 | } | 15826 | } |
15825 | 15827 | ||
15826 | /* | 15828 | /* |