drm/omap: fix encoder-crtc mapping
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 3 Sep 2014 19:25:49 +0000 (19:25 +0000)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 24 Mar 2015 11:33:24 +0000 (13:33 +0200)
OMAP DSS hardware supports changing the output port to which an overlay
manager's video stream goes. For example, DPI video stream can come from
any of the four overlay managers on OMAP5.

However, as it's difficult to manage the change in the driver, the
omapdss driver does not support that at the moment, and has a hardcoded
overlay manager per output.

omapdrm, on the other hand, uses the hardware features to find out which
overlay manager to use for an output, which causes problems. For
example, on OMAP5, omapdrm tries to use DIGIT overlay manager for DPI
output, instead of the LCD3 required by the omapdss driver.

This patch changes the omapdrm to use the omapdss driver's hardcoded
overlay managers, which fixes the issue.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/gpu/drm/omapdrm/omap_drv.c

index 5eab83d7de158bf781881f1d77a1f28a2738a6c5..b71a443e671e2f89d03f9852601f1a753534c936 100644 (file)
@@ -298,14 +298,13 @@ static int omap_modeset_init(struct drm_device *dev)
                for (id = 0; id < priv->num_crtcs; id++) {
                        struct drm_crtc *crtc = priv->crtcs[id];
                        enum omap_channel crtc_channel;
-                       enum omap_dss_output_id supported_outputs;
 
                        crtc_channel = omap_crtc_channel(crtc);
-                       supported_outputs =
-                               dss_feat_get_supported_outputs(crtc_channel);
 
-                       if (supported_outputs & output->id)
+                       if (output->dispc_channel == crtc_channel) {
                                encoder->possible_crtcs |= (1 << id);
+                               break;
+                       }
                }
 
                omap_dss_put_device(output);