• Ville Syrjälä's avatar
    drm/i915: Stop frobbing with DDI encoder->type · 7e732cac
    Ville Syrjälä authored
    Currently the DDI encoder->type will change at runtime depending on
    what kind of hotplugs we've processed. That's quite bad since we can't
    really trust that that current value of encoder->type actually matches
    the type of signal we're trying to drive through it.
    
    Let's eliminate that problem by declaring that non-eDP DDI port will
    always have the encoder type as INTEL_OUTPUT_DDI. This means the code
    can no longer try to distinguish DP vs. HDMI based on encoder->type.
    We'll leave eDP as INTEL_OUTPUT_EDP, since it'll never change and
    there's a bunch of code that relies on that value to identify eDP
    encoders.
    
    We'll introduce a new encoder .compute_output_type() hook. This allows
    us to compute the full output_types before any encoder .compute_config()
    hooks get called, thus those hooks can rely on output_types being
    correct, which is useful for cloning on oldr platforms. For now we'll
    just look at the connector type and pick the correct mode based on that.
    In the future the new hook could be used to implement dynamic switching
    between LS and PCON modes for LSPCON.
    
    v2: Fix BXT/GLK PPS explosion with DSI/MST encoders
    v3: Avoid the PPS warn on pure HDMI/DVI DDI encoders by checking dp.output_reg
    v4: Rebase
    v5: Populate output_types in .get_config() rather than in the caller
    v5: Split out populating output_types in .get_config() (Maarten)
    
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20171027193128.14483-3-ville.syrjala@linux.intel.comReviewed-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    7e732cac
intel_ddi.c 87.3 KB