linux/drivers/gpu/drm/i915
Damien Lespiau 2f693e28b8 drm/i915: Make turning on/off PW1 and Misc I/O part of the init/fini sequences
Before this patch, we used the intel_display_power_{get,put} functions
to make sure the PW1 and Misc I/O power wells were enabled all the
time while LCPLL was enabled. We called a get() at
intel_ddi_pll_init() when we discovered that LCPLL was enabled, then
we would call put/get at skl_{un,}init_cdclk().

The problem is that skl_uninit_cdclk() is indirectly called by
intel_runtime_suspend(). So it will only release its power well
_after_ we already decided to runtime suspend. But since we only
decide to runtime suspend after all power wells and refcounts are
released, that basically means we will never decide to runtime
suspend.

So what this patch does to fix that problem is move the PW1 + Misc I/O
power well handling out of the runtime PM mechanism: instead of
calling intel_display_power_{get_put} - functions that touch the
refcount -, we'll call the low level intel_power_well_{en,dis}able,
which don't change the refcount. This way, it is now possible for the
refcount to actually reach zero, and we'll now start runtime
suspending/resuming.

v2 (from Paulo):
  - Write a commit message since the original patch left it empty.
  - Rebase after the intel_power_well_{en,dis}able rename.
  - Use lookup_power_well() instead of hardcoded indexes.

Testcase: igt/pm_rpm/rte (and every other rpm test)
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92211
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92605
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1446657859-9598-4-git-send-email-imre.deak@intel.com
2015-11-17 20:43:51 +02:00
..
dvo_ch7xxx.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_ch7017.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_ivch.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_ns2501.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_sil164.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_tfp410.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo.h drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
i915_cmd_parser.c drm/i915: Add GEN7_GPGPU_DISPATCHDIMX/Y/Z to the register whitelist 2015-10-06 10:40:22 +02:00
i915_debugfs.c drm/i915: Add dev_priv->psr_mmio_base 2015-11-16 16:01:30 +02:00
i915_dma.c drm/i915/gen9: Use dev_priv in csr functions 2015-11-12 17:22:52 +02:00
i915_drv.c drm/i915/gen9: flush DMC fw loading work during system suspend 2015-11-12 17:31:10 +02:00
i915_drv.h drm/i915: Add dev_priv->psr_mmio_base 2015-11-16 16:01:30 +02:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Report context GTT size 2015-10-19 12:16:46 +02:00
i915_gem_debug.c
i915_gem_dmabuf.c
i915_gem_evict.c drm/i915: Remove dead i915_gem_evict_everything() 2015-10-07 16:05:40 +02:00
i915_gem_execbuffer.c drm/i915: Kill DRI1 cliprects 2015-10-07 16:05:41 +02:00
i915_gem_fence.c drm/i915: Parametrize fence registers 2015-09-30 10:20:03 +02:00
i915_gem_gtt.c drm/i915: Serialise updates to GGTT with access through GGTT on Braswell 2015-11-17 17:36:01 +01:00
i915_gem_gtt.h drm/i915: prevent out of range pt in the PDE macros (take 3) 2015-10-06 14:15:29 +02:00
i915_gem_render_state.c
i915_gem_render_state.h
i915_gem_shrinker.c drm/i915: Avoid GPU stalls from kswapd 2015-10-07 16:05:41 +02:00
i915_gem_stolen.c drm/i915/kbl: Introduce Kabylake platform defition. 2015-10-28 21:35:38 +02:00
i915_gem_tiling.c drm/i915: get runtime PM reference around GEM set_tiling IOCTL 2015-11-17 18:43:30 +02:00
i915_gem_userptr.c drm/i915: Use a task to cancel the userptr on invalidate_range 2015-10-06 14:15:30 +02:00
i915_gem.c drm/i915: Remove redundant check in i915_gem_obj_to_vma 2015-11-12 16:16:40 +02:00
i915_gpu_error.c drm/i915: Add dmc firmware load state and version to error state 2015-11-09 19:16:34 +02:00
i915_guc_reg.h drm/i915/guc: Add GuC css header parser 2015-10-21 14:31:34 +02:00
i915_guc_submission.c drm/i915/guc: Add GuC css header parser 2015-10-21 14:31:34 +02:00
i915_ioc32.c
i915_irq.c drm/i915: Turn __raw_i915_read8() & co. in to inline functions 2015-10-26 16:28:04 +02:00
i915_params.c drm/i915/gen8: Flip the 48b switch 2015-10-19 11:43:48 +02:00
i915_reg.h drm/i915: fix the power well ID for always on wells 2015-11-17 19:38:55 +02:00
i915_suspend.c drm/i915: Parametrize and fix SWF registers 2015-10-13 13:20:38 +02:00
i915_sysfs.c drm/i915/bxt: fix RC6 residency time calculation 2015-09-30 17:15:13 +02:00
i915_trace_points.c
i915_trace.h drm/i915: Add a tracepoint for the shrinker 2015-10-07 16:05:38 +02:00
i915_vgpu.c drm/i915: Turn __raw_i915_read8() & co. in to inline functions 2015-10-26 16:28:04 +02:00
i915_vgpu.h drm/i915: Update PV INFO page definition for Intel GVT-g 2015-09-02 11:46:12 +02:00
intel_acpi.c drm/i915: Drop unnecessary #include <linux/vga_switcheroo.h> 2015-10-13 10:18:38 +02:00
intel_atomic_plane.c drm/i915: Wait for object idle without locks in atomic_commit, v2. 2015-11-02 15:50:31 +01:00
intel_atomic.c drm/i915: Make wait_for_flips interruptible. 2015-11-02 15:50:17 +01:00
intel_audio.c drm/i915/kbl: Introduce Kabylake platform defition. 2015-10-28 21:35:38 +02:00
intel_bios.c i915: switch from acpi_os_ioremap to memremap 2015-10-13 10:22:45 +02:00
intel_bios.h drm/i915: Ignore "digital output" and "not HDMI output" bits for eDP detection 2015-09-23 16:58:29 +02:00
intel_crt.c drm/i915: s/_FDI_RXA_.../FDI_RX_...(PIPE_A)/ 2015-09-30 17:15:11 +02:00
intel_csr.c drm/i915/gen9: Use flush_work to synchronize with dmc loader 2015-11-12 17:30:25 +02:00
intel_ddi.c drm/i915: Make turning on/off PW1 and Misc I/O part of the init/fini sequences 2015-11-17 20:43:51 +02:00
intel_display.c drm/i915: Make turning on/off PW1 and Misc I/O part of the init/fini sequences 2015-11-17 20:43:51 +02:00
intel_dp_link_training.c drm/i915: Make intel_dp_source_supports_hbr2() take an intel_dp pointer 2015-11-05 15:14:56 +02:00
intel_dp_mst.c drm/i915: Setup DDI clk for MST on SKL 2015-11-10 22:30:42 +02:00
intel_dp.c drm/i915: force link training when requested by Sink 2015-11-17 16:09:45 +01:00
intel_drv.h drm/i915: Make turning on/off PW1 and Misc I/O part of the init/fini sequences 2015-11-17 20:43:51 +02:00
intel_dsi_panel_vbt.c
intel_dsi_pll.c drm/i915/bxt: vlv_dsi_reset_clocks() can be static 2015-10-06 10:57:06 +02:00
intel_dsi.c drm/i915/bxt: get DSI pixelclock 2015-10-02 14:45:51 +02:00
intel_dsi.h drm/i915/bxt: get DSI pixelclock 2015-10-02 14:45:51 +02:00
intel_dvo.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
intel_fbc.c drm/i915: remove in_dbg_master check from intel_fbc.c 2015-11-10 11:00:58 +01:00
intel_fbdev.c drm/i915: Move the fbdev async_schedule() into intel_fbdev.c 2015-11-11 13:35:14 +02:00
intel_fifo_underrun.c drm/i915: Check for FIFO underruns after modeset on IVB/HSW and CPT/PPT 2015-11-10 16:23:17 +02:00
intel_frontbuffer.c
intel_guc_fwif.h drm/i915/guc: Add GuC css header parser 2015-10-21 14:31:34 +02:00
intel_guc_loader.c drm/i915: Shut up GuC errors when it's disabled 2015-10-31 09:26:19 +01:00
intel_guc.h drm/i915/guc: Add GuC css header parser 2015-10-21 14:31:34 +02:00
intel_hdmi.c drm/i915: Disable FIFO underrun reporting around IBX transcoder B workaround 2015-11-10 16:23:28 +02:00
intel_hotplug.c Revert "drm/i915: Call encoder hotplug for init and resume cases" 2015-10-08 21:51:57 +02:00
intel_i2c.c drm/i915/kbl: Introduce Kabylake platform defition. 2015-10-28 21:35:38 +02:00
intel_lrc.c drm/i915: make A0 wa's applied to A1 2015-10-29 15:39:15 +02:00
intel_lrc.h drm/i915: Parametrize LRC registers 2015-09-23 17:13:01 +02:00
intel_lvds.c drm/i915: Clean up LVDS register handling harder 2015-11-11 17:45:31 +02:00
intel_mocs.c drm/i915/kbl: Introduce Kabylake platform defition. 2015-10-28 21:35:38 +02:00
intel_mocs.h
intel_modes.c drm/i915: Add HDMI aspect ratio property for SDVO 2015-09-30 10:20:12 +02:00
intel_opregion.c drm/i915: Don't complain about lack of ACPI video bios 2015-10-31 09:26:20 +01:00
intel_overlay.c drm/i915: Wait for object idle without locks in atomic_commit, v2. 2015-11-02 15:50:31 +01:00
intel_panel.c i915: switch from acpi_os_ioremap to memremap 2015-10-13 10:22:45 +02:00
intel_pm.c drm/i915/skl: Correct other-pipe watermark update condition check (v2) 2015-11-17 15:18:25 +01:00
intel_psr.c drm/i915: Model PSR AUX register selection more like the normal AUX code 2015-11-16 16:01:31 +02:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_renderstate.h
intel_ringbuffer.c drm/i915: make A0 wa's applied to A1 2015-10-29 15:39:15 +02:00
intel_ringbuffer.h drm/i915: Recover all available ringbuffer space following reset 2015-10-28 17:10:31 +00:00
intel_runtime_pm.c drm/i915: Make turning on/off PW1 and Misc I/O part of the init/fini sequences 2015-11-17 20:43:51 +02:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: Disable FIFO underrun reporting around IBX transcoder B workaround 2015-11-10 16:23:28 +02:00
intel_sideband.c
intel_sprite.c drm/i915: Avoid pointer arithmetic in calculating plane surface offset 2015-11-09 20:00:11 +02:00
intel_tv.c Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next 2015-09-30 08:47:41 +02:00
intel_uncore.c drm/i915: Add NEEDS_FORCEWAKE() checks for vlv/chv 2015-10-26 16:28:46 +02:00
Kconfig drm/i915: Serialise updates to GGTT with access through GGTT on Braswell 2015-11-17 17:36:01 +01:00
Makefile drm/i915: Move generic link training code to a separate file 2015-11-05 15:14:56 +02:00