Commit 2aeb7d3a authored by Daniel Vetter's avatar Daniel Vetter

drm/i915: s/pm._irqs_disabled/pm.irqs_enabled/

Double negations just parse harder. Also this allows us to ditch some
init code since clearing to 0 dtrt. Also ditch the assignment in
intel_pm_setup, that's not redundant since we do the assignement now
while setting up interrupts.

While at it do engage in a bit of OCD and wrap up the few lines of
setup/teardown code into little helper functions: intel_irq_fini for
cleanup and intel_irq_init_hw for hw setup.

v2: Use _install/_uninstall for the new wrapper function names as
Paulo suggested.
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 570e2a74
...@@ -1338,14 +1338,7 @@ static int i915_load_modeset_init(struct drm_device *dev) ...@@ -1338,14 +1338,7 @@ static int i915_load_modeset_init(struct drm_device *dev)
intel_power_domains_init_hw(dev_priv); intel_power_domains_init_hw(dev_priv);
/* ret = intel_irq_install(dev_priv);
* We enable some interrupt sources in our postinstall hooks, so mark
* interrupts as enabled _before_ actually enabling them to avoid
* special cases in our ordering checks.
*/
dev_priv->pm._irqs_disabled = false;
ret = drm_irq_install(dev, dev->pdev->irq);
if (ret) if (ret)
goto cleanup_gem_stolen; goto cleanup_gem_stolen;
......
...@@ -1424,7 +1424,7 @@ struct ilk_wm_values { ...@@ -1424,7 +1424,7 @@ struct ilk_wm_values {
*/ */
struct i915_runtime_pm { struct i915_runtime_pm {
bool suspended; bool suspended;
bool _irqs_disabled; bool irqs_enabled;
}; };
enum intel_pipe_crc_source { enum intel_pipe_crc_source {
...@@ -2311,6 +2311,8 @@ void gen6_set_pm_mask(struct drm_i915_private *dev_priv, u32 pm_iir, ...@@ -2311,6 +2311,8 @@ void gen6_set_pm_mask(struct drm_i915_private *dev_priv, u32 pm_iir,
int new_delay); int new_delay);
extern void intel_irq_init(struct drm_device *dev); extern void intel_irq_init(struct drm_device *dev);
extern void intel_hpd_init(struct drm_device *dev); extern void intel_hpd_init(struct drm_device *dev);
int intel_irq_install(struct drm_i915_private *dev_priv);
void intel_irq_uninstall(struct drm_i915_private *dev_priv);
extern void intel_uncore_sanitize(struct drm_device *dev); extern void intel_uncore_sanitize(struct drm_device *dev);
extern void intel_uncore_early_sanitize(struct drm_device *dev, extern void intel_uncore_early_sanitize(struct drm_device *dev,
......
...@@ -4675,9 +4675,6 @@ void intel_irq_init(struct drm_device *dev) ...@@ -4675,9 +4675,6 @@ void intel_irq_init(struct drm_device *dev)
pm_qos_add_request(&dev_priv->pm_qos, PM_QOS_CPU_DMA_LATENCY, PM_QOS_DEFAULT_VALUE); pm_qos_add_request(&dev_priv->pm_qos, PM_QOS_CPU_DMA_LATENCY, PM_QOS_DEFAULT_VALUE);
/* Haven't installed the IRQ handler yet */
dev_priv->pm._irqs_disabled = true;
if (IS_GEN2(dev)) { if (IS_GEN2(dev)) {
dev->max_vblank_count = 0; dev->max_vblank_count = 0;
dev->driver->get_vblank_counter = i8xx_get_vblank_counter; dev->driver->get_vblank_counter = i8xx_get_vblank_counter;
...@@ -4786,13 +4783,32 @@ void intel_hpd_init(struct drm_device *dev) ...@@ -4786,13 +4783,32 @@ void intel_hpd_init(struct drm_device *dev)
spin_unlock_irq(&dev_priv->irq_lock); spin_unlock_irq(&dev_priv->irq_lock);
} }
int intel_irq_install(struct drm_i915_private *dev_priv)
{
/*
* We enable some interrupt sources in our postinstall hooks, so mark
* interrupts as enabled _before_ actually enabling them to avoid
* special cases in our ordering checks.
*/
dev_priv->pm.irqs_enabled = true;
return drm_irq_install(dev_priv->dev, dev_priv->dev->pdev->irq);
}
void intel_irq_uninstall(struct drm_i915_private *dev_priv)
{
drm_irq_uninstall(dev_priv->dev);
intel_hpd_cancel_work(dev_priv);
dev_priv->pm.irqs_enabled = false;
}
/* Disable interrupts so we can allow runtime PM. */ /* Disable interrupts so we can allow runtime PM. */
void intel_runtime_pm_disable_interrupts(struct drm_device *dev) void intel_runtime_pm_disable_interrupts(struct drm_device *dev)
{ {
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
dev->driver->irq_uninstall(dev); dev->driver->irq_uninstall(dev);
dev_priv->pm._irqs_disabled = true; dev_priv->pm.irqs_enabled = false;
} }
/* Restore interrupts so we can recover from runtime PM. */ /* Restore interrupts so we can recover from runtime PM. */
...@@ -4800,7 +4816,7 @@ void intel_runtime_pm_restore_interrupts(struct drm_device *dev) ...@@ -4800,7 +4816,7 @@ void intel_runtime_pm_restore_interrupts(struct drm_device *dev)
{ {
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
dev_priv->pm._irqs_disabled = false; dev_priv->pm.irqs_enabled = true;
dev->driver->irq_preinstall(dev); dev->driver->irq_preinstall(dev);
dev->driver->irq_postinstall(dev); dev->driver->irq_postinstall(dev);
} }
...@@ -13372,9 +13372,7 @@ void intel_modeset_cleanup(struct drm_device *dev) ...@@ -13372,9 +13372,7 @@ void intel_modeset_cleanup(struct drm_device *dev)
* Too much stuff here (turning of rps, connectors, ...) would * Too much stuff here (turning of rps, connectors, ...) would
* experience fancy races otherwise. * experience fancy races otherwise.
*/ */
drm_irq_uninstall(dev); intel_irq_uninstall(dev_priv);
intel_hpd_cancel_work(dev_priv);
dev_priv->pm._irqs_disabled = true;
/* /*
* Due to the hpd irq storm handling the hotplug work can re-arm the * Due to the hpd irq storm handling the hotplug work can re-arm the
......
...@@ -772,7 +772,7 @@ static inline bool intel_irqs_enabled(struct drm_i915_private *dev_priv) ...@@ -772,7 +772,7 @@ static inline bool intel_irqs_enabled(struct drm_i915_private *dev_priv)
* We only use drm_irq_uninstall() at unload and VT switch, so * We only use drm_irq_uninstall() at unload and VT switch, so
* this is the only thing we need to check. * this is the only thing we need to check.
*/ */
return !dev_priv->pm._irqs_disabled; return dev_priv->pm.irqs_enabled;
} }
int intel_get_crtc_scanline(struct intel_crtc *crtc); int intel_get_crtc_scanline(struct intel_crtc *crtc);
......
...@@ -6531,5 +6531,4 @@ void intel_pm_setup(struct drm_device *dev) ...@@ -6531,5 +6531,4 @@ void intel_pm_setup(struct drm_device *dev)
intel_gen6_powersave_work); intel_gen6_powersave_work);
dev_priv->pm.suspended = false; dev_priv->pm.suspended = false;
dev_priv->pm._irqs_disabled = false;
} }
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