• Ville Syrjälä's avatar
    drm/i915: Reject modeset when the same digital port is used more than once · 00f0b378
    Ville Syrjälä authored
    On pre-HSW we have two encoders per digital port: one HDMI, one DP.
    However they are the same physical port in hardware and we can't enable
    both at the same time. Reject the modeset if the user attempts this.
    
    So far we've been saved by the fact that we never see both HDMI and DP
    connectors as connected. But if the user decides to force a mode anyway,
    all kinds of funny stuff might happen.
    
    Unfortunately we don't seem to have any way to inform userspace that
    such configurations are invalid except by returning an error from
    setcrtc. possible_clones only covers real cloning situations, and
    looking at the connector names doesn't work either since we don't
    always register both connectors for the same port. I suppose the
    only way to fix that would be to expose only a single encoder per
    digital port like we do on HSW+ but that would be a fairly large
    undertaking for little gain.
    
    kms_setmode hits this since it forces modes on non-connected VGA and
    HDMI connectors. Previosuly it just resulted in weirdness such as
    failed link training. With this patch it will now get an error back
    from the kernel and will die with an assert since it thinks that the
    configuration should be fine.
    
    v2: Deal with INTEL_OUTPUT_UNKNOWN (Paulo)
    
    Cc: Paulo Zanoni <przanoni@gmail.com>
    Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    00f0b378
intel_display.c 384 KB