From fc5aafdc74cb363bf1c2d69461083e455d935f25 Mon Sep 17 00:00:00 2001 From: David Wu Date: Thu, 3 Apr 2025 17:03:53 +0800 Subject: [PATCH] ethernet: stmmac: dwmac-rk: Add macphy clock input method for rv1126b Change-Id: I37b33aec1fd5f7d09abfd7b3b4644e6eb5fbc78d Signed-off-by: David Wu --- drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c index 548ee82ff3b4..9c2d790d3a90 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c @@ -2557,6 +2557,9 @@ static const struct rk_gmac_ops rv1126_ops = { #define RV1126B_RK_MACPHY_DISABLE 0 #define RV1126B_RK_MACPHY_ENABLE BIT(31) +#define RV1126B_RK_MACPHY_EXTCLK_SEL_OUTPUT 0 +#define RV1126B_RK_MACPHY_EXTCLK_SEL_INPUT BIT(8) + #define RV1126B_RK_MACPHY_CLK_24M 0 #define RV1126B_RK_MACPHY_CLK_50M BIT(11) @@ -2680,11 +2683,14 @@ static void rv1126b_integrated_phy_power(struct rk_priv_data *priv, bool up) usleep_range(20, 40); if (priv->clk_phy_rate == 50000000) - regmap_write(priv->grf, RV1126B_VI_GRF_RK_MACPHY_CON2, - RV1126B_RK_MACPHY_CLK_50M); + value = RV1126B_RK_MACPHY_CLK_50M; else - regmap_write(priv->grf, RV1126B_VI_GRF_RK_MACPHY_CON2, - RV1126B_RK_MACPHY_CLK_24M); + value = RV1126B_RK_MACPHY_CLK_24M; + + value |= priv->clock_input ? RV1126B_RK_MACPHY_EXTCLK_SEL_INPUT : + RV1126B_RK_MACPHY_EXTCLK_SEL_OUTPUT; + + regmap_write(priv->grf, RV1126B_VI_GRF_RK_MACPHY_CON2, value); regmap_write(priv->grf, RV1126B_VI_GRF_RK_MACPHY_CON0, RV1126B_RK_MACPHY_PHY_ID | RV1126B_RK_MACPHY_PHY_ADDR);