Skip to content

Commit 987940f

Browse files
committed
Merge tag 'drm-misc-fixes-for-v6.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-fixes
One regression fixup to samsung-dsim.c module - The FORCE_STOP_STATE bit is ineffective for forcing DSI link into LP-11 mode, causing timing issues and potential bridge failures. This patch reverts previous commits and corrects this issue. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Inki Dae <inki.dae@samsung.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240126141130.15512-1-inki.dae@samsung.com
2 parents 4d7acc8 + ff3d5d0 commit 987940f

File tree

1 file changed

+2
-30
lines changed

1 file changed

+2
-30
lines changed

drivers/gpu/drm/bridge/samsung-dsim.c

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -969,10 +969,6 @@ static int samsung_dsim_init_link(struct samsung_dsim *dsi)
969969
reg = samsung_dsim_read(dsi, DSIM_ESCMODE_REG);
970970
reg &= ~DSIM_STOP_STATE_CNT_MASK;
971971
reg |= DSIM_STOP_STATE_CNT(driver_data->reg_values[STOP_STATE_CNT]);
972-
973-
if (!samsung_dsim_hw_is_exynos(dsi->plat_data->hw_type))
974-
reg |= DSIM_FORCE_STOP_STATE;
975-
976972
samsung_dsim_write(dsi, DSIM_ESCMODE_REG, reg);
977973

978974
reg = DSIM_BTA_TIMEOUT(0xff) | DSIM_LPDR_TIMEOUT(0xffff);
@@ -1431,18 +1427,6 @@ static void samsung_dsim_disable_irq(struct samsung_dsim *dsi)
14311427
disable_irq(dsi->irq);
14321428
}
14331429

1434-
static void samsung_dsim_set_stop_state(struct samsung_dsim *dsi, bool enable)
1435-
{
1436-
u32 reg = samsung_dsim_read(dsi, DSIM_ESCMODE_REG);
1437-
1438-
if (enable)
1439-
reg |= DSIM_FORCE_STOP_STATE;
1440-
else
1441-
reg &= ~DSIM_FORCE_STOP_STATE;
1442-
1443-
samsung_dsim_write(dsi, DSIM_ESCMODE_REG, reg);
1444-
}
1445-
14461430
static int samsung_dsim_init(struct samsung_dsim *dsi)
14471431
{
14481432
const struct samsung_dsim_driver_data *driver_data = dsi->driver_data;
@@ -1492,9 +1476,6 @@ static void samsung_dsim_atomic_pre_enable(struct drm_bridge *bridge,
14921476
ret = samsung_dsim_init(dsi);
14931477
if (ret)
14941478
return;
1495-
1496-
samsung_dsim_set_display_mode(dsi);
1497-
samsung_dsim_set_display_enable(dsi, true);
14981479
}
14991480
}
15001481

@@ -1503,12 +1484,8 @@ static void samsung_dsim_atomic_enable(struct drm_bridge *bridge,
15031484
{
15041485
struct samsung_dsim *dsi = bridge_to_dsi(bridge);
15051486

1506-
if (samsung_dsim_hw_is_exynos(dsi->plat_data->hw_type)) {
1507-
samsung_dsim_set_display_mode(dsi);
1508-
samsung_dsim_set_display_enable(dsi, true);
1509-
} else {
1510-
samsung_dsim_set_stop_state(dsi, false);
1511-
}
1487+
samsung_dsim_set_display_mode(dsi);
1488+
samsung_dsim_set_display_enable(dsi, true);
15121489

15131490
dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE;
15141491
}
@@ -1521,9 +1498,6 @@ static void samsung_dsim_atomic_disable(struct drm_bridge *bridge,
15211498
if (!(dsi->state & DSIM_STATE_ENABLED))
15221499
return;
15231500

1524-
if (!samsung_dsim_hw_is_exynos(dsi->plat_data->hw_type))
1525-
samsung_dsim_set_stop_state(dsi, true);
1526-
15271501
dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE;
15281502
}
15291503

@@ -1828,8 +1802,6 @@ static ssize_t samsung_dsim_host_transfer(struct mipi_dsi_host *host,
18281802
if (ret)
18291803
return ret;
18301804

1831-
samsung_dsim_set_stop_state(dsi, false);
1832-
18331805
ret = mipi_dsi_create_packet(&xfer.packet, msg);
18341806
if (ret < 0)
18351807
return ret;

0 commit comments

Comments
 (0)