return imx8qxp_pixel_link_disable_sync(pl);
}
-static struct drm_bridge *
-imx8qxp_pixel_link_find_next_bridge(struct imx8qxp_pixel_link *pl)
+static int imx8qxp_pixel_link_find_next_bridge(struct imx8qxp_pixel_link *pl)
{
struct device_node *np = pl->dev->of_node;
struct device_node *port;
if (!found_port) {
DRM_DEV_ERROR(pl->dev, "no available output port\n");
- return ERR_PTR(-ENODEV);
+ return -ENODEV;
}
for (reg = 0; reg < PL_MAX_NEXT_BRIDGES; reg++) {
struct drm_bridge *next_bridge = of_drm_find_bridge(remote);
if (!next_bridge)
- return ERR_PTR(-EPROBE_DEFER);
+ return -EPROBE_DEFER;
/*
* Select the next bridge with companion PXL2DPI if
}
pl->mst_addr = port_id - 1;
+ pl->next_bridge = selected_bridge;
- return selected_bridge;
+ return 0;
}
static int imx8qxp_pixel_link_bridge_probe(struct platform_device *pdev)
if (ret)
return ret;
- pl->next_bridge = imx8qxp_pixel_link_find_next_bridge(pl);
- if (IS_ERR(pl->next_bridge))
- return PTR_ERR(pl->next_bridge);
+ ret = imx8qxp_pixel_link_find_next_bridge(pl);
+ if (ret)
+ return ret;
platform_set_drvdata(pdev, pl);