mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
net: stmmac: mdio: convert field prep to use field_prep()
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>
This commit is contained in:
parent
506f78f43c
commit
58bd003900
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user