mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
phy: rockchip: samsung-hdptx: Handle PHY config after module reload
The pll_config_dirty mechanism introduced in commitaec3e4ce25("phy: rockchip: samsung-hdptx: Handle uncommitted PHY config changes") invalidates the clock rate in determine_rate() by resetting req->rate to zero, ensuring CCF will invoke set_rate() to program pending PLL configuration changes into hardware. However, after a module reload cycle the PHY PLL clock gets re-registered with CCF, which causes the framework's cached rate to also be zero. Setting req->rate to zero then has no effect, since CCF sees no difference between the requested and current rates and skips calling set_rate(), leaving the PLL unconfigured. Address this by first computing the actual target rate from the HDMI link configuration, and only then invalidating it when it matches the CCF cached rate. Fixes:aec3e4ce25("phy: rockchip: samsung-hdptx: Handle uncommitted PHY config changes") Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com> Link: https://patch.msgid.link/20260901-hdptx-ffe-v2-2-3a5922c76fc5@collabora.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
af00a892e6
commit
a673b3d18e
|
|
@ -2346,14 +2346,16 @@ static int rk_hdptx_phy_clk_determine_rate(struct clk_hw *hw,
|
|||
* to ensure rk_hdptx_phy_clk_set_rate() will be always invoked.
|
||||
* Otherwise, restrict the rate according to the PHY link setup.
|
||||
*/
|
||||
if (hdptx->pll_config_dirty)
|
||||
req->rate = 0;
|
||||
else if (hdptx->hdmi_cfg.mode == PHY_HDMI_MODE_FRL)
|
||||
|
||||
if (hdptx->hdmi_cfg.mode == PHY_HDMI_MODE_FRL)
|
||||
req->rate = hdptx->hdmi_cfg.rate;
|
||||
else
|
||||
req->rate = DIV_ROUND_CLOSEST_ULL(hdptx->hdmi_cfg.rate * 8,
|
||||
hdptx->hdmi_cfg.bpc);
|
||||
|
||||
if (hdptx->pll_config_dirty && req->rate == clk_hw_get_rate(hw))
|
||||
req->rate = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user