Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/bridge: cdns-dsi: Fix phy de-init and flag it so

The driver code doesn't have a Phy de-initialization path as yet, and so
it does not clear the phy_initialized flag while suspending. This is a
problem because after resume the driver looks at this flag to determine
if a Phy re-initialization is required or not. It is in fact required
because the hardware is resuming from a suspend, but the driver does not
carry out any re-initialization causing the D-Phy to not work at all.

Call the counterparts of phy_init() and phy_power_on(), that are
phy_exit() and phy_power_off(), from _bridge_post_disable(), and clear
the flags so that the Phy can be initialized again when required.

Fixes: fced5a364dee ("drm/bridge: cdns: Convert to phy framework")
Cc: stable@vger.kernel.org
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Aradhya Bhatia <a-bhatia1@ti.com>
Signed-off-by: Aradhya Bhatia <aradhya.bhatia@linux.dev>
Link: https://lore.kernel.org/r/20250329113925.68204-3-aradhya.bhatia@linux.dev
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>

authored by

Aradhya Bhatia and committed by
Dmitry Baryshkov
fd2611c1 688eb4d4

+5 -1
+5 -1
drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c
··· 683 683 struct cdns_dsi_input *input = bridge_to_cdns_dsi_input(bridge); 684 684 struct cdns_dsi *dsi = input_to_dsi(input); 685 685 686 + dsi->phy_initialized = false; 687 + dsi->link_initialized = false; 688 + phy_power_off(dsi->dphy); 689 + phy_exit(dsi->dphy); 690 + 686 691 pm_runtime_put(dsi->base.dev); 687 692 } 688 693 ··· 1171 1166 clk_disable_unprepare(dsi->dsi_sys_clk); 1172 1167 clk_disable_unprepare(dsi->dsi_p_clk); 1173 1168 reset_control_assert(dsi->dsi_p_rst); 1174 - dsi->link_initialized = false; 1175 1169 return 0; 1176 1170 } 1177 1171