diff --git a/drivers/gpu/drm/bridge/nwl-dsi.c b/drivers/gpu/drm/bridge/nwl-dsi.c index 4c4415cd8005d300bdc595fa15ffed16d8792000..8d42d567152ca6a9848c060c728a979773490dfc 100644 --- a/drivers/gpu/drm/bridge/nwl-dsi.c +++ b/drivers/gpu/drm/bridge/nwl-dsi.c @@ -185,6 +185,7 @@ struct nwl_dsi { struct list_head valid_modes; u32 clk_drop_lvl; bool use_dcss; + bool modeset_done; }; static const struct regmap_config nwl_dsi_regmap_config = { @@ -925,6 +926,8 @@ nwl_dsi_bridge_atomic_post_disable(struct drm_bridge *bridge, clk_disable_unprepare(dsi->lcdif_clk); pm_runtime_put(dsi->dev); + + dsi->modeset_done = false; } static unsigned long nwl_dsi_get_bit_clock(struct nwl_dsi *dsi, @@ -1269,6 +1272,9 @@ nwl_dsi_bridge_mode_set(struct drm_bridge *bridge, struct mode_config *config; int ret; + if (dsi->modeset_done) + return; + DRM_DEV_DEBUG_DRIVER(dsi->dev, "Setting mode:\n"); drm_mode_debug_printmodeline(adjusted_mode); @@ -1346,6 +1352,8 @@ nwl_dsi_bridge_mode_set(struct drm_bridge *bridge, DRM_DEV_ERROR(dev, "Failed to deassert DSI: %d\n", ret); return; } + + dsi->modeset_done = true; } static void