]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
phy: rockchip: inno-hdmi: Fix missing readl base addr
authorJagan Teki <jagan@edgeble.ai>
Sat, 22 Jun 2024 18:21:49 +0000 (23:51 +0530)
committerKever Yang <kever.yang@rock-chips.com>
Wed, 17 Jul 2024 06:48:18 +0000 (14:48 +0800)
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>
drivers/phy/rockchip/phy-rockchip-inno-hdmi.c

index 3bb1a254ffb5d2bf3eda1aa88d513648242ea7de..7459779dffed0479b5da9ba3a7592d2801eff24a 100644 (file)
@@ -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");