From eb4c42e2915e25232e6b61a8d381ec6db658dd14 Mon Sep 17 00:00:00 2001 From: Wyon bi Date: Mon, 27 Dec 2021 15:59:51 +0800 Subject: [PATCH] phy/rockchip: samsung-hdptx: Check if PHY need configured during startup Signed-off-by: Wyon bi Change-Id: Idd91b95ea60cd6240dbc77d4396c9cae4affdba1 --- drivers/phy/rockchip/phy-rockchip-samsung-hdptx.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/phy/rockchip/phy-rockchip-samsung-hdptx.c b/drivers/phy/rockchip/phy-rockchip-samsung-hdptx.c index 28bbde5bfb85..175080969024 100644 --- a/drivers/phy/rockchip/phy-rockchip-samsung-hdptx.c +++ b/drivers/phy/rockchip/phy-rockchip-samsung-hdptx.c @@ -886,6 +886,15 @@ static void rockchip_hdptx_phy_reset(struct rockchip_hdptx_phy *hdptx) FIELD_PREP(BGR_EN, 0)); } +static bool rockchip_hdptx_phy_enabled(struct rockchip_hdptx_phy *hdptx) +{ + u32 status; + + regmap_read(hdptx->grf, HDPTXPHY_GRF_STATUS0, &status); + + return FIELD_GET(SB_RDY, status); +} + static int rockchip_hdptx_phy_power_on(struct phy *phy) { struct rockchip_hdptx_phy *hdptx = phy_get_drvdata(phy); @@ -897,6 +906,9 @@ static int rockchip_hdptx_phy_power_on(struct phy *phy) if (ret) return ret; + if (rockchip_hdptx_phy_enabled(hdptx)) + return 0; + rockchip_hdptx_phy_reset(hdptx); reset_control_assert(hdptx->apb_reset);