diff mbox series

phy: rockchip: inno-hdmi: Fix missing readl base addr

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

Commit Message

Jagan Teki June 22, 2024, 6:21 p.m. UTC
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(-)

Comments

Kever Yang July 16, 2024, 2:20 a.m. UTC | #1
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 mbox series

Patch

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");