[net-next,3/8] net: stmmac: mdio: simplify MDC clock divisor lookup
Commit Message
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>
---
.../net/ethernet/stmicro/stmmac/stmmac_mdio.c | 27 +++++++------------
1 file changed, 10 insertions(+), 17 deletions(-)
@@ -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,26 +549,18 @@ 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)
+ 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;
+
+ for (i = 0; rates[i].rate; i++)
+ if (clk_rate > rates[i].rate)
break;
- if (stmmac_std_csr_to_mdc[i].cr != (u8)~0)
+ if (rates[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;
- }
-
- 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;
- }
-
return value;
}