]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: stmmac: mdio: convert field prep to use field_prep()
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Thu, 5 Mar 2026 10:42:42 +0000 (10:42 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 6 Mar 2026 23:39:09 +0000 (15:39 -0800)
Convert the MDIO field preparation to use field_prep(), which removes
the need to store separate mask and shifts. Also convert the clk_csr
value using __ffs() to do the shift as we need to detect overflows
for this.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Tested-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Link: https://patch.msgid.link/E1vy6AE-0000000Btwv-1LM4@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/common.h
drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c
drivers/net/ethernet/stmicro/stmmac/dwmac100_core.c
drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c
drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c

index e4ce1167ebabe7268595ce8330cd489820dd28c7..978f90065681e45ecbd2ed179ad1e01187d3cf88 100644 (file)
@@ -608,11 +608,8 @@ struct mac_link {
 struct mii_regs {
        unsigned int addr;      /* MII Address */
        unsigned int data;      /* MII Data */
-       unsigned int addr_shift;        /* MII address shift */
-       unsigned int reg_shift;         /* MII reg shift */
        unsigned int addr_mask;         /* MII address mask */
        unsigned int reg_mask;          /* MII reg mask */
-       unsigned int clk_csr_shift;
        unsigned int clk_csr_mask;
 };
 
index 9c51c96223adfdd9c82dc198ab5b9138f6eeecde..6dfccc969d0e76d1a3f28c18083492f5cbd81173 100644 (file)
@@ -367,11 +367,8 @@ static int loongson_dwmac_setup(void *apriv, struct mac_device_info *mac)
        mac->link.speed_mask = GMAC_CONTROL_PS | GMAC_CONTROL_FES;
        mac->mii.addr = GMAC_MII_ADDR;
        mac->mii.data = GMAC_MII_DATA;
-       mac->mii.addr_shift = 11;
        mac->mii.addr_mask = 0x0000F800;
-       mac->mii.reg_shift = 6;
        mac->mii.reg_mask = 0x000007C0;
-       mac->mii.clk_csr_shift = 2;
        mac->mii.clk_csr_mask = GENMASK(5, 2);
 
        return 0;
index c01b86fd64da1303aa4c905a7c6bb844515d5130..6b18072112db6476d8d11c862a0aadedcbcdb0f8 100644 (file)
@@ -1063,11 +1063,8 @@ static int sun8i_dwmac_setup(void *ppriv, struct mac_device_info *mac)
        mac->link.duplex = EMAC_DUPLEX_FULL;
        mac->mii.addr = EMAC_MDIO_CMD;
        mac->mii.data = EMAC_MDIO_DATA;
-       mac->mii.reg_shift = 4;
        mac->mii.reg_mask = GENMASK(8, 4);
-       mac->mii.addr_shift = 12;
        mac->mii.addr_mask = GENMASK(16, 12);
-       mac->mii.clk_csr_shift = 20;
        mac->mii.clk_csr_mask = GENMASK(22, 20);
        mac->unicast_filter_entries = 8;
 
index af566636fad90313ebf50f49b111648a3078fa3d..10acca806f4fa3b8422fa9c628ce045274e42bca 100644 (file)
@@ -496,11 +496,8 @@ int dwmac1000_setup(struct stmmac_priv *priv)
        mac->link.speed_mask = GMAC_CONTROL_PS | GMAC_CONTROL_FES;
        mac->mii.addr = GMAC_MII_ADDR;
        mac->mii.data = GMAC_MII_DATA;
-       mac->mii.addr_shift = 11;
        mac->mii.addr_mask = 0x0000F800;
-       mac->mii.reg_shift = 6;
        mac->mii.reg_mask = 0x000007C0;
-       mac->mii.clk_csr_shift = 2;
        mac->mii.clk_csr_mask = GENMASK(5, 2);
 
        return 0;
index db4fbe64a38afc3142bc2fd4ed9b53230c05031b..911753b9889eac196bdeccd2c8dbed809329d2db 100644 (file)
@@ -184,11 +184,8 @@ int dwmac100_setup(struct stmmac_priv *priv)
        mac->link.speed_mask = MAC_CONTROL_PS;
        mac->mii.addr = MAC_MII_ADDR;
        mac->mii.data = MAC_MII_DATA;
-       mac->mii.addr_shift = 11;
        mac->mii.addr_mask = 0x0000F800;
-       mac->mii.reg_shift = 6;
        mac->mii.reg_mask = 0x000007C0;
-       mac->mii.clk_csr_shift = 2;
        mac->mii.clk_csr_mask = GENMASK(5, 2);
 
        return 0;
index 623868afe93d2ce518bb5482f82894b7a74fdf14..0e87590c806be282601e56a4d012cdd43645eaa1 100644 (file)
@@ -1030,11 +1030,8 @@ int dwmac4_setup(struct stmmac_priv *priv)
        mac->link.speed_mask = GMAC_CONFIG_FES | GMAC_CONFIG_PS;
        mac->mii.addr = GMAC_MDIO_ADDR;
        mac->mii.data = GMAC_MDIO_DATA;
-       mac->mii.addr_shift = 21;
        mac->mii.addr_mask = GENMASK(25, 21);
-       mac->mii.reg_shift = 16;
        mac->mii.reg_mask = GENMASK(20, 16);
-       mac->mii.clk_csr_shift = 8;
        mac->mii.clk_csr_mask = GENMASK(11, 8);
        mac->num_vlan = stmmac_get_num_vlan(priv->ioaddr);
 
index 49893b9fb88c4d0e9774395e6efb6e9b87c1988b..ba98e22f1c12992f6ad8c3a8e206481d5e1d0f96 100644 (file)
@@ -1551,11 +1551,8 @@ int dwxgmac2_setup(struct stmmac_priv *priv)
 
        mac->mii.addr = XGMAC_MDIO_ADDR;
        mac->mii.data = XGMAC_MDIO_DATA;
-       mac->mii.addr_shift = 16;
        mac->mii.addr_mask = GENMASK(20, 16);
-       mac->mii.reg_shift = 0;
        mac->mii.reg_mask = GENMASK(15, 0);
-       mac->mii.clk_csr_shift = 19;
        mac->mii.clk_csr_mask = GENMASK(21, 19);
        mac->num_vlan = stmmac_get_num_vlan(priv->ioaddr);
 
@@ -1594,11 +1591,8 @@ int dwxlgmac2_setup(struct stmmac_priv *priv)
 
        mac->mii.addr = XGMAC_MDIO_ADDR;
        mac->mii.data = XGMAC_MDIO_DATA;
-       mac->mii.addr_shift = 16;
        mac->mii.addr_mask = GENMASK(20, 16);
-       mac->mii.reg_shift = 0;
        mac->mii.reg_mask = GENMASK(15, 0);
-       mac->mii.clk_csr_shift = 19;
        mac->mii.clk_csr_mask = GENMASK(21, 19);
 
        return 0;
index c9f0b8b601d272d490cde2ed3c162db19d412ea4..afe98ff5bdcb05c945caf7af68800d93560d3207 100644 (file)
@@ -234,8 +234,8 @@ static u32 stmmac_mdio_format_addr(struct stmmac_priv *priv,
 {
        const struct mii_regs *mii_regs = &priv->hw->mii;
 
-       return ((pa << mii_regs->addr_shift) & mii_regs->addr_mask) |
-              ((gr << mii_regs->reg_shift) & mii_regs->reg_mask) |
+       return field_prep(mii_regs->addr_mask, pa) |
+              field_prep(mii_regs->reg_mask, gr) |
               priv->gmii_address_bus_config |
               MII_ADDR_GBUSY;
 }
@@ -577,7 +577,7 @@ static void stmmac_mdio_bus_config(struct stmmac_priv *priv)
        else
                value = stmmac_clk_csr_set(priv);
 
-       value <<= priv->hw->mii.clk_csr_shift;
+       value <<= __ffs(priv->hw->mii.clk_csr_mask);
 
        if (value & ~priv->hw->mii.clk_csr_mask)
                dev_warn(priv->device,