drm/bridge: ti-sn65dsi86: support DRM_BRIDGE_ATTACH_NO_CONNECTOR
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Mon, 11 Jul 2022 09:21:17 +0000 (12:21 +0300)
committerDouglas Anderson <dianders@chromium.org>
Tue, 19 Jul 2022 17:10:11 +0000 (10:10 -0700)
Now as the driver does not depend on pdata->connector, add support for
attaching the bridge with DRM_BRIDGE_ATTACH_NO_CONNECTOR.

Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Tested-by: Steev Klimaszewski <steev@kali.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20220711092117.360797-3-dmitry.baryshkov@linaro.org
drivers/gpu/drm/bridge/ti-sn65dsi86.c

index b362a7b..369bf72 100644 (file)
@@ -698,11 +698,6 @@ static int ti_sn_bridge_attach(struct drm_bridge *bridge,
        struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge);
        int ret;
 
-       if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) {
-               DRM_ERROR("Fix bridge driver to make connector optional!");
-               return -EINVAL;
-       }
-
        pdata->aux.drm_dev = bridge->dev;
        ret = drm_dp_aux_register(&pdata->aux);
        if (ret < 0) {
@@ -710,15 +705,18 @@ static int ti_sn_bridge_attach(struct drm_bridge *bridge,
                return ret;
        }
 
-       /* We never want the next bridge to *also* create a connector: */
-       flags |= DRM_BRIDGE_ATTACH_NO_CONNECTOR;
-
-       /* Attach the next bridge */
+       /*
+        * Attach the next bridge.
+        * We never want the next bridge to *also* create a connector.
+        */
        ret = drm_bridge_attach(bridge->encoder, pdata->next_bridge,
-                               &pdata->bridge, flags);
+                               &pdata->bridge, flags | DRM_BRIDGE_ATTACH_NO_CONNECTOR);
        if (ret < 0)
                goto err_initted_aux;
 
+       if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)
+               return 0;
+
        pdata->connector = drm_bridge_connector_init(pdata->bridge.dev,
                                                     pdata->bridge.encoder);
        if (IS_ERR(pdata->connector)) {