• Ville Syrjälä's avatar
    drm/i915: Sanitize PCH port transcoder select on IBX · 3aefb67f
    Ville Syrjälä authored
    IBX has a documented workaround which states that when we disable the
    port we must change its transcoder select to A, otherwise it will
    prevent the other port (DP vs. HDMI/SDVO) from using transcoder A.
    We implement the workaround during encoder disable, but looks like
    some BIOSen leave transcoder B selected even when the port wasn't
    actually enabled by the BIOS. That will trip up our asserts
    that attempt to make sure we never forget this w/a.
    
    Sanitize the transcoder select to A for all disabled PCH
    DP/HDMI/SDVO ports. We assume that the port was never enabled
    by the BIOS on transcoder B, because if it had we'd actually have
    to toggle the port on and back off to properly switch it back to
    transcoder A. That would cause some display flicker if transcoder A
    is already enabled on some other port, so it's better not to do it
    unless absolutely necessary. Since we have no indication that the
    transcoder select is misbehaving on the affected machines we can
    assume the port was never actually enabled by the BIOS.
    
    This cures warning like this during driver load:
    IBX PCH DP C still using transcoder B
    WARNING: CPU: 2 PID: 172 at drivers/gpu/drm/i915/intel_display.c:1279 assert_pch_dp_disabled+0x9e/0xb0 [i915]
    
    v2: Add comments to remind the reader that SDVOB==HDMIB (Chris)
    
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181108143635.9556-1-ville.syrjala@linux.intel.comReviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    3aefb67f
intel_display.c 456 KB