• Daniel Vetter's avatar
    drm/i915: simplify possible_clones computation · 66a9278e
    Daniel Vetter authored
    Intel hw only has one MUX for encoders, so outputs are either not
    cloneable or all in the same group of cloneable outputs. This neatly
    simplifies the code and allows us to ditch some ugly if cascades in
    the dp and hdmi init code (well, we need these if cascades for other
    stuff still, but that can be taken care of in follow-up patches).
    
    Note that this changes two things:
    - dvo can now be cloned with sdvo, but dvo is gen2 whereas sdvo is
      gen3+, so no problem. Note that the old code had a bug and didn't
      allow cloning crt with dvo (but only the other way round).
    - sdvo-lvds can now be cloned with sdvo-non-tv. Spec says this won't
      work, but the only reason I've found is that you can't use the
      panel-fitter (used for lvds upscaling) with anything else. But we
      don't use the panel fitter for sdvo-lvds. Imo this part of Bspec is
      a) rather confusing b) mostly as a guideline to implementors (i.e.
      explicitly stating what is already implicit from the spec, without
      always going into the details of why). So I think we can ignore this
      - worst case we'll get a bug report from a user with with sdvo-lvds
      and sdvo-tmds and have to add that special case back in.
    
    Because sdvo lvds is a bit special explain in comments why sdvo LVDS
    outputs can be cloned, but native LVDS and eDP can't be cloned - we
    use the panel fitter for the later, but not for sdvo.
    
    Note that this also uncoditionally initializes the panel_vdd work used
    by eDP. Trying to be clever doesn't buy us anything (but strange bugs)
    and this way we can kill the is_edp check.
    
    v2: Incorporate review from Paulo
    - Add in a missing space.
    - Pimp comment message to address his concerns.
    Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Signed-Off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    66a9278e
intel_display.c 198 KB