mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-06-21 15:43:21 +02:00
drm/bridge: analogix_dp: Attach the next bridge in analogix_dp_bridge_attach()
Uniformly, move the next bridge attachment to the Analogix side rather than scattered on Rockchip and Exynos sides. It can also help get rid of the callback &analogix_dp_plat_data.attach() and make codes more concise. Signed-off-by: Damon Ding <damon.ding@rock-chips.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> Tested-by: Heiko Stuebner <heiko@sntech.de> # rk3588 Link: https://patch.msgid.link/20260413132551.1049307-7-damon.ding@rock-chips.com Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
This commit is contained in:
committed by
Luca Ceresoli
parent
02b8a4f240
commit
3076510af7
@@ -931,10 +931,11 @@ static int analogix_dp_bridge_attach(struct drm_bridge *bridge,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (dp->plat_data->attach) {
|
||||
ret = dp->plat_data->attach(dp->plat_data, bridge);
|
||||
if (dp->plat_data->next_bridge) {
|
||||
ret = drm_bridge_attach(dp->encoder, dp->plat_data->next_bridge, bridge,
|
||||
DRM_BRIDGE_ATTACH_NO_CONNECTOR);
|
||||
if (ret) {
|
||||
DRM_ERROR("Failed at platform attach func\n");
|
||||
dev_err(dp->dev, "failed to attach following panel or bridge (%d)\n", ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,24 +68,6 @@ static int exynos_dp_poweroff(struct analogix_dp_plat_data *plat_data)
|
||||
return exynos_dp_crtc_clock_enable(plat_data, false);
|
||||
}
|
||||
|
||||
static int exynos_dp_bridge_attach(struct analogix_dp_plat_data *plat_data,
|
||||
struct drm_bridge *bridge)
|
||||
{
|
||||
struct exynos_dp_device *dp = to_dp(plat_data);
|
||||
enum drm_bridge_attach_flags flags = 0;
|
||||
int ret;
|
||||
|
||||
/* Pre-empt DP connector creation if there's a bridge */
|
||||
if (plat_data->next_bridge) {
|
||||
ret = drm_bridge_attach(&dp->encoder, plat_data->next_bridge, bridge,
|
||||
flags | DRM_BRIDGE_ATTACH_NO_CONNECTOR);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void exynos_dp_mode_set(struct drm_encoder *encoder,
|
||||
struct drm_display_mode *mode,
|
||||
struct drm_display_mode *adjusted_mode)
|
||||
@@ -196,7 +178,6 @@ static int exynos_dp_probe(struct platform_device *pdev)
|
||||
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:
|
||||
|
||||
@@ -34,7 +34,6 @@ struct analogix_dp_plat_data {
|
||||
|
||||
int (*power_on)(struct analogix_dp_plat_data *);
|
||||
int (*power_off)(struct analogix_dp_plat_data *);
|
||||
int (*attach)(struct analogix_dp_plat_data *, struct drm_bridge *);
|
||||
};
|
||||
|
||||
int analogix_dp_resume(struct analogix_dp_device *dp);
|
||||
|
||||
Reference in New Issue
Block a user