Message ID | 20240622182149.28416-1-jagan@edgeble.ai |
---|---|
State | Accepted |
Commit | 35214b99eb7b1a929616d79fd2ac6457c3738f8b |
Delegated to: | Kever Yang |
Headers | show |
Series | phy: rockchip: inno-hdmi: Fix missing readl base addr | expand |
On 2024/6/23 02:21, Jagan Teki wrote: > inno_poll passes the reg offset that is used by readl_poll_sleep_timeout > without any base addr. > > Fix it. > > Bug: > inno_hdmi_phy phy@ff430000: Pre-PLL locking failed > inno_hdmi_phy phy@ff430000: PHY: Failed to power on phy@ff430000: -110. > failed to power on phy (ret=-110) > inno_hdmi_phy phy@ff430000: Pre-PLL locking failed > inno_hdmi_phy phy@ff430000: PHY: Failed to power on phy@ff430000: -110. > failed to power on phy (ret=-110) > > Fixes: aa2271184603 ("phy: rockchip: Add Rockchip INNO HDMI PHY driver") > Suggested-by: Jonas Karlman <jonas@kwiboo.se> > Signed-off-by: Jagan Teki <jagan@edgeble.ai> Reviewed-by: Kever Yang <kever.yang@rock-chips.com> Thanks, - Kever > --- > drivers/phy/rockchip/phy-rockchip-inno-hdmi.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c b/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c > index 3bb1a254ff..7459779dff 100644 > --- a/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c > +++ b/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c > @@ -432,8 +432,8 @@ static inline void inno_update_bits(struct inno_hdmi_phy *inno, u8 reg, > inno_write(inno, reg, tmp); > } > > -#define inno_poll(reg, val, cond, sleep_us, timeout_us) \ > - readl_poll_sleep_timeout((reg) * 4, val, cond, sleep_us, timeout_us) > +#define inno_poll(inno, reg, val, cond, sleep_us, timeout_us) \ > + readl_poll_sleep_timeout((inno)->regs + ((reg) * 4), val, cond, sleep_us, timeout_us) > > static unsigned long inno_hdmi_phy_get_tmdsclk(struct inno_hdmi_phy *inno, > unsigned long rate) > @@ -575,7 +575,7 @@ inno_hdmi_phy_rk3328_clk_set_rate(struct phy *phy, > inno_update_bits(inno, 0xa0, RK3328_PRE_PLL_POWER_DOWN, 0); > > /* Wait for Pre-PLL lock */ > - ret = inno_poll(0xa9, val, val & RK3328_PRE_PLL_LOCK_STATUS, > + ret = inno_poll(inno, 0xa9, val, val & RK3328_PRE_PLL_LOCK_STATUS, > 1000, 10000); > if (ret) { > dev_err(phy->dev, "Pre-PLL locking failed\n"); > @@ -674,7 +674,7 @@ inno_hdmi_phy_rk3328_power_on(struct phy *phy, > RK3328_TMDS_DRIVER_ENABLE); > > /* Wait for post PLL lock */ > - ret = inno_poll(0xaf, v, v & RK3328_POST_PLL_LOCK_STATUS, > + ret = inno_poll(inno, 0xaf, v, v & RK3328_POST_PLL_LOCK_STATUS, > 1000, 10000); > if (ret) { > dev_err(phy->dev, "Post-PLL locking failed\n");
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c b/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c index 3bb1a254ff..7459779dff 100644 --- a/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c +++ b/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c @@ -432,8 +432,8 @@ static inline void inno_update_bits(struct inno_hdmi_phy *inno, u8 reg, inno_write(inno, reg, tmp); } -#define inno_poll(reg, val, cond, sleep_us, timeout_us) \ - readl_poll_sleep_timeout((reg) * 4, val, cond, sleep_us, timeout_us) +#define inno_poll(inno, reg, val, cond, sleep_us, timeout_us) \ + readl_poll_sleep_timeout((inno)->regs + ((reg) * 4), val, cond, sleep_us, timeout_us) static unsigned long inno_hdmi_phy_get_tmdsclk(struct inno_hdmi_phy *inno, unsigned long rate) @@ -575,7 +575,7 @@ inno_hdmi_phy_rk3328_clk_set_rate(struct phy *phy, inno_update_bits(inno, 0xa0, RK3328_PRE_PLL_POWER_DOWN, 0); /* Wait for Pre-PLL lock */ - ret = inno_poll(0xa9, val, val & RK3328_PRE_PLL_LOCK_STATUS, + ret = inno_poll(inno, 0xa9, val, val & RK3328_PRE_PLL_LOCK_STATUS, 1000, 10000); if (ret) { dev_err(phy->dev, "Pre-PLL locking failed\n"); @@ -674,7 +674,7 @@ inno_hdmi_phy_rk3328_power_on(struct phy *phy, RK3328_TMDS_DRIVER_ENABLE); /* Wait for post PLL lock */ - ret = inno_poll(0xaf, v, v & RK3328_POST_PLL_LOCK_STATUS, + ret = inno_poll(inno, 0xaf, v, v & RK3328_POST_PLL_LOCK_STATUS, 1000, 10000); if (ret) { dev_err(phy->dev, "Post-PLL locking failed\n");
inno_poll passes the reg offset that is used by readl_poll_sleep_timeout without any base addr. Fix it. Bug: inno_hdmi_phy phy@ff430000: Pre-PLL locking failed inno_hdmi_phy phy@ff430000: PHY: Failed to power on phy@ff430000: -110. failed to power on phy (ret=-110) inno_hdmi_phy phy@ff430000: Pre-PLL locking failed inno_hdmi_phy phy@ff430000: PHY: Failed to power on phy@ff430000: -110. failed to power on phy (ret=-110) Fixes: aa2271184603 ("phy: rockchip: Add Rockchip INNO HDMI PHY driver") Suggested-by: Jonas Karlman <jonas@kwiboo.se> Signed-off-by: Jagan Teki <jagan@edgeble.ai> --- drivers/phy/rockchip/phy-rockchip-inno-hdmi.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)