diff options
| author | Russell King (Oracle) <rmk+kernel@armlinux.org.uk> | 2026-03-05 13:42:37 +0300 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-03-07 02:39:09 +0300 |
| commit | 506f78f43c58094009b2d62ed0f8070bb4635954 (patch) | |
| tree | 1bc546e98a956e8b775ffad2c5de62083535e049 | |
| parent | b6687ef976036d3a3e672384f47de5742b2574c7 (diff) | |
| download | linux-506f78f43c58094009b2d62ed0f8070bb4635954.tar.xz | |
net: stmmac: mdio: simplify MDC clock divisor lookup
As each lookup now iterates over each table in the same way, simplfy
the code to select the table, and then walk that table.
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tested-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Link: https://patch.msgid.link/E1vy6A9-0000000Btwp-0lxY@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
| -rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c index 6292911fb54b..c9f0b8b601d2 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c @@ -535,6 +535,7 @@ static const struct stmmac_clk_rate stmmac_xgmac_csr_to_mdc[] = { */ static u32 stmmac_clk_csr_set(struct stmmac_priv *priv) { + const struct stmmac_clk_rate *rates; unsigned long clk_rate; u32 value = ~0; int i; @@ -548,25 +549,17 @@ static u32 stmmac_clk_csr_set(struct stmmac_priv *priv) * the frequency of clk_csr_i. So we do not change the default * divider. */ - for (i = 0; stmmac_std_csr_to_mdc[i].rate; i++) - if (clk_rate > stmmac_std_csr_to_mdc[i].rate) - break; - if (stmmac_std_csr_to_mdc[i].cr != (u8)~0) - value = stmmac_std_csr_to_mdc[i].cr; - - if (priv->plat->flags & STMMAC_FLAG_HAS_SUN8I) { - for (i = 0; stmmac_sun8i_csr_to_mdc[i].rate; i++) - if (clk_rate > stmmac_sun8i_csr_to_mdc[i].rate) - break; - value = stmmac_sun8i_csr_to_mdc[i].cr; - } + rates = stmmac_std_csr_to_mdc; + if (priv->plat->flags & STMMAC_FLAG_HAS_SUN8I) + rates = stmmac_sun8i_csr_to_mdc; + if (priv->plat->core_type == DWMAC_CORE_XGMAC) + rates = stmmac_xgmac_csr_to_mdc; - if (priv->plat->core_type == DWMAC_CORE_XGMAC) { - for (i = 0; stmmac_xgmac_csr_to_mdc[i].rate; i++) - if (clk_rate > stmmac_xgmac_csr_to_mdc[i].rate) - break; - value = stmmac_xgmac_csr_to_mdc[i].cr; - } + for (i = 0; rates[i].rate; i++) + if (clk_rate > rates[i].rate) + break; + if (rates[i].cr != (u8)~0) + value = rates[i].cr; return value; } |
