aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/display/intel_dp_mst.c
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2019-10-02 19:25:05 +0300
committerVille Syrjälä <ville.syrjala@linux.intel.com>2019-10-31 16:08:11 +0200
commit29b27657dbae8d4c4bdc6bfbf6dd8c69f648e075 (patch)
treedf73d25b22eeb63f496837f48426a08ddc422b33 /drivers/gpu/drm/i915/display/intel_dp_mst.c
parentdrm/i915: Simplify pipe_mask setup even further (diff)
downloadlinux-dev-29b27657dbae8d4c4bdc6bfbf6dd8c69f648e075.tar.xz
linux-dev-29b27657dbae8d4c4bdc6bfbf6dd8c69f648e075.zip
drm/i915/mst: Document the userspace fail with possible_crtcs
To avoid accidentally breaking things in the future add a comment explaining why we misconfigure the pipe_mask. Also toss in a TODO for investigating a single encoder approach as opposed to the encoder-per-pipe approach. v2: Drop a bogus TODO comment Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191002162505.30716-6-ville.syrjala@linux.intel.com Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Diffstat (limited to '')
-rw-r--r--drivers/gpu/drm/i915/display/intel_dp_mst.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 7370c9dfa8a1..715b7109c388 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -615,6 +615,14 @@ intel_dp_create_fake_mst_encoder(struct intel_digital_port *intel_dig_port, enum
intel_encoder->power_domain = intel_dig_port->base.power_domain;
intel_encoder->port = intel_dig_port->base.port;
intel_encoder->cloneable = 0;
+ /*
+ * This is wrong, but broken userspace uses the intersection
+ * of possible_crtcs of all the encoders of a given connector
+ * to figure out which crtcs can drive said connector. What
+ * should be used instead is the union of possible_crtcs.
+ * To keep such userspace functioning we must misconfigure
+ * this to make sure the intersection is not empty :(
+ */
intel_encoder->pipe_mask = ~0;
intel_encoder->compute_config = intel_dp_mst_compute_config;