Use devm_drm_of_get_bridge() to simplify probing code path.

Signed-off-by: Alexander Stein <[email protected]>
---
 drivers/gpu/drm/bridge/tc358767.c | 28 +++++++++++-----------------
 1 file changed, 11 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/bridge/tc358767.c 
b/drivers/gpu/drm/bridge/tc358767.c
index 8d5a05dd8d32c..7b64521839893 100644
--- a/drivers/gpu/drm/bridge/tc358767.c
+++ b/drivers/gpu/drm/bridge/tc358767.c
@@ -2341,28 +2341,22 @@ static int tc_probe_edp_bridge_endpoint(struct tc_data 
*tc)
 {
        struct device *dev = tc->dev;
        struct drm_bridge *bridge;
-       struct drm_panel *panel;
        int ret;
 
        /* port@2 is the output port */
-       ret = drm_of_find_panel_or_bridge(dev->of_node, 2, 0, &panel, &bridge);
-       if (ret && ret != -ENODEV)
-               return dev_err_probe(dev, ret,
-                                    "Could not find DSI panel or bridge\n");
-
-       if (panel) {
-               struct drm_bridge *panel_bridge;
-
-               panel_bridge = devm_drm_panel_bridge_add(dev, panel);
-               if (IS_ERR(panel_bridge))
-                       return PTR_ERR(panel_bridge);
-
-               tc->panel_bridge = panel_bridge;
-               tc->bridge.type = DRM_MODE_CONNECTOR_eDP;
-       } else {
-               tc->bridge.type = DRM_MODE_CONNECTOR_DisplayPort;
+       bridge = devm_drm_of_get_bridge(dev, dev->of_node, 2, 0);
+       if (IS_ERR(bridge)) {
+               ret = PTR_ERR(bridge);
+               if (ret != -ENODEV)
+                       return dev_err_probe(dev, ret,
+                                            "Could not find DSI panel or 
bridge\n");
+               else
+                       return ret;
        }
 
+       tc->panel_bridge = bridge;
+       tc->bridge.type = bridge->type;
+
        if (tc->hpd_pin >= 0)
                tc->bridge.ops |= DRM_BRIDGE_OP_DETECT;
        tc->bridge.ops |= DRM_BRIDGE_OP_EDID;
-- 
2.54.0

Reply via email to