Skip to content

Commit 820ba9a

Browse files
committed
Merge tag 'exynos-drm-next-for-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-next
One fixup series - Make sure to restore bridge chain order by enabling the drm panel prepare_prev_first flag of the bridge and panel drivers - tc358764 display bridge device and Samsung s6e3ha2/s6e63j0x03/s6e8aa0 panel devices. In case of any boards using Exynos5433 SoC, below Display pipeline could be configured. Decon -> MIC -> MIPI-DSI -> Panel So, this patch series makes sure to enable previous bridge device before enabling MIPI-DSI device. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Inki Dae <inki.dae@samsung.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230130051055.15340-1-inki.dae@samsung.com
2 parents aebd8f0 + 1a1ce78 commit 820ba9a

5 files changed

Lines changed: 11 additions & 2 deletions

File tree

drivers/gpu/drm/bridge/tc358764.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,7 @@ static int tc358764_probe(struct mipi_dsi_device *dsi)
369369

370370
ctx->bridge.funcs = &tc358764_bridge_funcs;
371371
ctx->bridge.of_node = dev->of_node;
372+
ctx->bridge.pre_enable_prev_first = true;
372373

373374
drm_bridge_add(&ctx->bridge);
374375

drivers/gpu/drm/exynos/exynos_drm_dsi.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1445,7 +1445,8 @@ static int exynos_dsi_attach(struct drm_bridge *bridge,
14451445
{
14461446
struct exynos_dsi *dsi = bridge_to_dsi(bridge);
14471447

1448-
return drm_bridge_attach(bridge->encoder, dsi->out_bridge, NULL, flags);
1448+
return drm_bridge_attach(bridge->encoder, dsi->out_bridge, bridge,
1449+
flags);
14491450
}
14501451

14511452
static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = {
@@ -1491,7 +1492,10 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host,
14911492

14921493
drm_bridge_add(&dsi->bridge);
14931494

1494-
drm_bridge_attach(encoder, &dsi->bridge, NULL, 0);
1495+
drm_bridge_attach(encoder, &dsi->bridge,
1496+
list_first_entry_or_null(&encoder->bridge_chain,
1497+
struct drm_bridge,
1498+
chain_node), 0);
14951499

14961500
/*
14971501
* This is a temporary solution and should be made by more generic way.
@@ -1726,6 +1730,7 @@ static int exynos_dsi_probe(struct platform_device *pdev)
17261730
dsi->bridge.funcs = &exynos_dsi_bridge_funcs;
17271731
dsi->bridge.of_node = dev->of_node;
17281732
dsi->bridge.type = DRM_MODE_CONNECTOR_DSI;
1733+
dsi->bridge.pre_enable_prev_first = true;
17291734

17301735
ret = component_add(dev, &exynos_dsi_component_ops);
17311736
if (ret)

drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,7 @@ static int s6e3ha2_probe(struct mipi_dsi_device *dsi)
733733

734734
drm_panel_init(&ctx->panel, dev, &s6e3ha2_drm_funcs,
735735
DRM_MODE_CONNECTOR_DSI);
736+
ctx->panel.prepare_prev_first = true;
736737

737738
drm_panel_add(&ctx->panel);
738739

drivers/gpu/drm/panel/panel-samsung-s6e63j0x03.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,7 @@ static int s6e63j0x03_probe(struct mipi_dsi_device *dsi)
463463

464464
drm_panel_init(&ctx->panel, dev, &s6e63j0x03_funcs,
465465
DRM_MODE_CONNECTOR_DSI);
466+
ctx->panel.prepare_prev_first = true;
466467

467468
ctx->bl_dev = backlight_device_register("s6e63j0x03", dev, ctx,
468469
&s6e63j0x03_bl_ops, NULL);

drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,6 +1016,7 @@ static int s6e8aa0_probe(struct mipi_dsi_device *dsi)
10161016

10171017
drm_panel_init(&ctx->panel, dev, &s6e8aa0_drm_funcs,
10181018
DRM_MODE_CONNECTOR_DSI);
1019+
ctx->panel.prepare_prev_first = true;
10191020

10201021
drm_panel_add(&ctx->panel);
10211022

0 commit comments

Comments
 (0)