mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
drm/exynos: exynos_dp: Apply analogix_dp_finish_probe()
Apply analogix_dp_finish_probe() in order to move the panel/bridge parsing from Exynos side to the Analogix side. Signed-off-by: Damon Ding <damon.ding@rock-chips.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> Tested-by: Heiko Stuebner <heiko@sntech.de> # rk3588 Link: https://patch.msgid.link/20260413132551.1049307-6-damon.ding@rock-chips.com Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
This commit is contained in:
parent
d35ac09734
commit
02b8a4f240
|
|
@ -158,9 +158,6 @@ static int exynos_dp_probe(struct platform_device *pdev)
|
|||
struct device *dev = &pdev->dev;
|
||||
struct device_node *np;
|
||||
struct exynos_dp_device *dp;
|
||||
struct drm_panel *panel;
|
||||
struct drm_bridge *bridge;
|
||||
int ret;
|
||||
|
||||
dp = devm_kzalloc(&pdev->dev, sizeof(struct exynos_dp_device),
|
||||
GFP_KERNEL);
|
||||
|
|
@ -187,30 +184,30 @@ static int exynos_dp_probe(struct platform_device *pdev)
|
|||
goto out;
|
||||
}
|
||||
|
||||
ret = drm_of_find_panel_or_bridge(dev->of_node, 0, 0, &panel, &bridge);
|
||||
if (ret == -ENODEV) {
|
||||
if (of_get_display_timings(dev->of_node)) {
|
||||
dp->plat_data.next_bridge = devm_drm_of_display_mode_bridge(dp->dev,
|
||||
dp->dev->of_node,
|
||||
DRM_MODE_CONNECTOR_eDP);
|
||||
ret = IS_ERR(dp->plat_data.next_bridge) ? PTR_ERR(dp->plat_data.next_bridge) : 0;
|
||||
if (IS_ERR(dp->plat_data.next_bridge))
|
||||
return PTR_ERR(dp->plat_data.next_bridge);
|
||||
}
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* The remote port can be either a panel or a bridge */
|
||||
dp->plat_data.panel = panel;
|
||||
dp->plat_data.next_bridge = bridge;
|
||||
dp->plat_data.dev_type = EXYNOS_DP;
|
||||
dp->plat_data.power_on = exynos_dp_poweron;
|
||||
dp->plat_data.power_off = exynos_dp_poweroff;
|
||||
dp->plat_data.attach = exynos_dp_bridge_attach;
|
||||
dp->plat_data.ops = &exynos_dp_ops;
|
||||
|
||||
out:
|
||||
dp->adp = analogix_dp_probe(dev, &dp->plat_data);
|
||||
if (IS_ERR(dp->adp))
|
||||
return PTR_ERR(dp->adp);
|
||||
|
||||
return component_add(&pdev->dev, &exynos_dp_ops);
|
||||
if (dp->plat_data.panel || dp->plat_data.next_bridge)
|
||||
return component_add(&pdev->dev, &exynos_dp_ops);
|
||||
else
|
||||
return analogix_dp_finish_probe(dp->adp);
|
||||
}
|
||||
|
||||
static void exynos_dp_remove(struct platform_device *pdev)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user