• Matt Roper's avatar
    drm/i915/ehl: Allow combo PHY A to drive a third external display · bdeb18db
    Matt Roper authored
    EHL has a mux on combo PHY A that allows it to be driven either by an
    internal display (DDI-A or DSI DPHY) or by an external display (DDI-D).
    This is a motherboard design decision that can not be changed on the
    fly.  Unfortunately there are no strap registers that allow us to detect
    the board configuration directly, so let's use the VBT to try to figure
    it out and program the mux accordingly.
    
    For now if we run across a broken VBT that tries to claim that PHY A
    is attached to both internal and external displays at the same time,
    we'll resolve the conflict in favor of the internal display.  To help
    debug these kind of bad VBT's, let's also add a quick DRM_DEBUG message
    during child device parsing so that it's easier to understand these
    cases if they show up in bug reports.
    
    v2:
     - Confirmed that VBT's dvo port refers to the DDI and not the PHY.
       Thus we can check more explicitly for (ddi_d && !(ddi_a || dsi)).  If
       a bad VBT contradicts itself, let internal display win.  (Ville)
    
    v3:
     - Switch condition from !IS_ICELAKE to IS_ELKHARTLAKE.  Although the
       convention is usually to assume that future platforms will inherit
       all current platform behavior, this feels more like a one-platform
       quirk.  (Ville)
     - Update commit message to describe what we do if/when we encounter
       broken VBT's, and note that the new debug print during child device
       parsing is intentional.
    
    Cc: Clint Taylor <Clinton.A.Taylor@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190618175131.9139-1-matthew.d.roper@intel.com
    bdeb18db
i915_reg.h 454 KB