• Imre Deak's avatar
    drm/i915/ddi: Fix eDP VDD handling during booting and suspend/resume · bf93ba67
    Imre Deak authored
    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 6d93c0c4 ("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: default avatarImre Deak <imre.deak@intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1460963062-13211-4-git-send-email-imre.deak@intel.com
    bf93ba67
intel_ddi.c 67.6 KB