]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915/ddi: Fix eDP VDD handling during booting and suspend/resume
authorImre Deak <imre.deak@intel.com>
Mon, 18 Apr 2016 07:04:21 +0000 (10:04 +0300)
committerImre Deak <imre.deak@intel.com>
Tue, 19 Apr 2016 09:33:11 +0000 (12:33 +0300)
commit06d8ea458a283520e900273c236022f4a6bcbd74
treef3ab7dea3dad6545b7b9ac0048c14dd33f01fda5
parent6ee7e4262ef6bd19ac3fdf4d833cbb0244122986
drm/i915/ddi: Fix eDP VDD handling during booting and suspend/resume

The driver's VDD on/off logic assumes that whenever the VDD is on we
also hold an AUX power domain reference. Since BIOS can leave the VDD on
during booting and resuming and on DDI platforms we won't take a
corresponding power reference, the above assumption won't hold on those
platforms and an eventual delayed VDD off work will do an extraneous AUX
power domain put resulting in a refcount underflow. Fix this the same
way we did this for non-DDI DP encoders:

commit 0f5e1ba1409387 ("drm/i915: fix VDD state tracking after system
resume")

At the same time call the DP encoder suspend handler the same way as the
non-DDI DP encoders do to flush any pending VDD off work. Leaving the
work running may cause a HW access where we don't expect this (at a point
where power domains are suspended already).

While at it remove an unnecessary function call indirection.

This fixed for me AUX refcount underflow problems on BXT during
suspend/resume.

CC: Ville Syrjälä <ville.syrjala@linux.intel.com>
CC: stable@vger.kernel.org
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1460963062-13211-4-git-send-email-imre.deak@intel.com
drivers/gpu/drm/i915/intel_ddi.c
drivers/gpu/drm/i915/intel_dp.c
drivers/gpu/drm/i915/intel_drv.h