Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'net-mdio-remove-support-for-building-c45-muxed-addresses'

Michael Walle says:

====================
net: mdio: Remove support for building C45 muxed addresses

I've picked this older series from Andrew up and rebased it onto
the latest net-next.

With all drivers which support c45 now being converted to a seperate c22
and c45 access op, we can now remove the old MII_ADDR_C45 flag.
====================

Link: https://lore.kernel.org/r/20230119130700.440601-1-michael@walle.cc
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+4 -108
-6
drivers/net/dsa/microchip/ksz_common.c
··· 1777 1777 u16 val; 1778 1778 int ret; 1779 1779 1780 - if (regnum & MII_ADDR_C45) 1781 - return -EOPNOTSUPP; 1782 - 1783 1780 ret = dev->dev_ops->r_phy(dev, addr, regnum, &val); 1784 1781 if (ret < 0) 1785 1782 return ret; ··· 1788 1791 u16 val) 1789 1792 { 1790 1793 struct ksz_device *dev = bus->priv; 1791 - 1792 - if (regnum & MII_ADDR_C45) 1793 - return -EOPNOTSUPP; 1794 1794 1795 1795 return dev->dev_ops->w_phy(dev, addr, regnum, val); 1796 1796 }
-6
drivers/net/dsa/rzn1_a5psw.c
··· 781 781 u32 cmd, status; 782 782 int ret; 783 783 784 - if (phy_reg & MII_ADDR_C45) 785 - return -EOPNOTSUPP; 786 - 787 784 cmd = A5PSW_MDIO_COMMAND_READ; 788 785 cmd |= FIELD_PREP(A5PSW_MDIO_COMMAND_REG_ADDR, phy_reg); 789 786 cmd |= FIELD_PREP(A5PSW_MDIO_COMMAND_PHY_ADDR, phy_id); ··· 805 808 { 806 809 struct a5psw *a5psw = bus->priv; 807 810 u32 cmd; 808 - 809 - if (phy_reg & MII_ADDR_C45) 810 - return -EOPNOTSUPP; 811 811 812 812 cmd = FIELD_PREP(A5PSW_MDIO_COMMAND_REG_ADDR, phy_reg); 813 813 cmd |= FIELD_PREP(A5PSW_MDIO_COMMAND_PHY_ADDR, phy_id);
-6
drivers/net/dsa/sja1105/sja1105_mdio.c
··· 235 235 u32 tmp; 236 236 int rc; 237 237 238 - if (reg & MII_ADDR_C45) 239 - return -EOPNOTSUPP; 240 - 241 238 rc = sja1105_xfer_u32(priv, SPI_READ, regs->mdio_100base_tx + reg, 242 239 &tmp, NULL); 243 240 if (rc < 0) ··· 250 253 struct sja1105_private *priv = mdio_priv->priv; 251 254 const struct sja1105_regs *regs = priv->info->regs; 252 255 u32 tmp = val; 253 - 254 - if (reg & MII_ADDR_C45) 255 - return -EOPNOTSUPP; 256 256 257 257 return sja1105_xfer_u32(priv, SPI_WRITE, regs->mdio_100base_tx + reg, 258 258 &tmp, NULL);
-6
drivers/net/ethernet/actions/owl-emac.c
··· 1275 1275 u32 data, tmp; 1276 1276 int ret; 1277 1277 1278 - if (regnum & MII_ADDR_C45) 1279 - return -EOPNOTSUPP; 1280 - 1281 1278 data = OWL_EMAC_BIT_MAC_CSR10_SB; 1282 1279 data |= OWL_EMAC_VAL_MAC_CSR10_OPCODE_RD << OWL_EMAC_OFF_MAC_CSR10_OPCODE; 1283 1280 ··· 1301 1304 { 1302 1305 struct owl_emac_priv *priv = bus->priv; 1303 1306 u32 data, tmp; 1304 - 1305 - if (regnum & MII_ADDR_C45) 1306 - return -EOPNOTSUPP; 1307 1307 1308 1308 data = OWL_EMAC_BIT_MAC_CSR10_SB; 1309 1309 data |= OWL_EMAC_VAL_MAC_CSR10_OPCODE_WR << OWL_EMAC_OFF_MAC_CSR10_OPCODE;
-6
drivers/net/ethernet/engleder/tsnep_main.c
··· 130 130 u32 md; 131 131 int retval; 132 132 133 - if (regnum & MII_ADDR_C45) 134 - return -EOPNOTSUPP; 135 - 136 133 md = ECM_MD_READ; 137 134 if (!adapter->suppress_preamble) 138 135 md |= ECM_MD_PREAMBLE; ··· 150 153 struct tsnep_adapter *adapter = bus->priv; 151 154 u32 md; 152 155 int retval; 153 - 154 - if (regnum & MII_ADDR_C45) 155 - return -EOPNOTSUPP; 156 156 157 157 md = ECM_MD_WRITE; 158 158 if (!adapter->suppress_preamble)
-6
drivers/net/ethernet/marvell/mvmdio.c
··· 146 146 u32 val; 147 147 int ret; 148 148 149 - if (regnum & MII_ADDR_C45) 150 - return -EOPNOTSUPP; 151 - 152 149 ret = orion_mdio_wait_ready(&orion_mdio_smi_ops, bus); 153 150 if (ret < 0) 154 151 return ret; ··· 173 176 { 174 177 struct orion_mdio_dev *dev = bus->priv; 175 178 int ret; 176 - 177 - if (regnum & MII_ADDR_C45) 178 - return -EOPNOTSUPP; 179 179 180 180 ret = orion_mdio_wait_ready(&orion_mdio_smi_ops, bus); 181 181 if (ret < 0)
-6
drivers/net/ethernet/mediatek/mtk_star_emac.c
··· 1378 1378 unsigned int val, data; 1379 1379 int ret; 1380 1380 1381 - if (regnum & MII_ADDR_C45) 1382 - return -EOPNOTSUPP; 1383 - 1384 1381 mtk_star_mdio_rwok_clear(priv); 1385 1382 1386 1383 val = (regnum << MTK_STAR_OFF_PHY_CTRL0_PREG); ··· 1403 1406 { 1404 1407 struct mtk_star_priv *priv = mii->priv; 1405 1408 unsigned int val; 1406 - 1407 - if (regnum & MII_ADDR_C45) 1408 - return -EOPNOTSUPP; 1409 1409 1410 1410 mtk_star_mdio_rwok_clear(priv); 1411 1411
-6
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c
··· 213 213 int ret; 214 214 u32 val; 215 215 216 - if (phy_reg & MII_ADDR_C45) 217 - return -EOPNOTSUPP; 218 - 219 216 /* Send mdio read request */ 220 217 cmd = mlxbf_gige_mdio_create_cmd(priv->mdio_gw, 0, phy_add, phy_reg, 221 218 MLXBF_GIGE_MDIO_CL22_READ); ··· 245 248 u32 temp; 246 249 u32 cmd; 247 250 int ret; 248 - 249 - if (phy_reg & MII_ADDR_C45) 250 - return -EOPNOTSUPP; 251 251 252 252 /* Send mdio write request */ 253 253 cmd = mlxbf_gige_mdio_create_cmd(priv->mdio_gw, val, phy_add, phy_reg,
-6
drivers/net/ethernet/sunplus/spl2sw_mdio.c
··· 61 61 { 62 62 struct spl2sw_common *comm = bus->priv; 63 63 64 - if (regnum & MII_ADDR_C45) 65 - return -EOPNOTSUPP; 66 - 67 64 return spl2sw_mdio_access(comm, SPL2SW_MDIO_READ_CMD, addr, regnum, 0); 68 65 } 69 66 ··· 68 71 { 69 72 struct spl2sw_common *comm = bus->priv; 70 73 int ret; 71 - 72 - if (regnum & MII_ADDR_C45) 73 - return -EOPNOTSUPP; 74 74 75 75 ret = spl2sw_mdio_access(comm, SPL2SW_MDIO_WRITE_CMD, addr, regnum, val); 76 76 if (ret < 0)
+2 -2
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
··· 92 92 93 93 wr32(wx, NGBE_MDIO_CLAUSE_SELECT, 0x0); 94 94 /* setup and write the address cycle command */ 95 - command = NGBE_MSCA_RA(mdiobus_c45_regad(regnum)) | 95 + command = NGBE_MSCA_RA(regnum) | 96 96 NGBE_MSCA_PA(phy_addr) | 97 97 NGBE_MSCA_DA(devnum); 98 98 wr32(wx, NGBE_MSCA, command); ··· 121 121 122 122 wr32(wx, NGBE_MDIO_CLAUSE_SELECT, 0x0); 123 123 /* setup and write the address cycle command */ 124 - command = NGBE_MSCA_RA(mdiobus_c45_regad(regnum)) | 124 + command = NGBE_MSCA_RA(regnum) | 125 125 NGBE_MSCA_PA(phy_addr) | 126 126 NGBE_MSCA_DA(devnum); 127 127 wr32(wx, NGBE_MSCA, command);
-6
drivers/net/mdio/mdio-i2c.c
··· 297 297 int bus_addr, ret; 298 298 u16 val; 299 299 300 - if (!(reg & MII_ADDR_C45)) 301 - return -EOPNOTSUPP; 302 - 303 300 bus_addr = i2c_mii_phy_addr(phy_id); 304 301 if (bus_addr != ROLLBALL_PHY_I2C_ADDR) 305 302 return 0xffff; ··· 327 330 { 328 331 int bus_addr, ret; 329 332 u8 buf[6]; 330 - 331 - if (!(reg & MII_ADDR_C45)) 332 - return -EOPNOTSUPP; 333 333 334 334 bus_addr = i2c_mii_phy_addr(phy_id); 335 335 if (bus_addr != ROLLBALL_PHY_I2C_ADDR)
-8
drivers/net/mdio/mdio-ipq8064.c
··· 57 57 u32 ret_val; 58 58 int err; 59 59 60 - /* Reject clause 45 */ 61 - if (reg_offset & MII_ADDR_C45) 62 - return -EOPNOTSUPP; 63 - 64 60 miiaddr |= ((phy_addr << MII_ADDR_SHIFT) & MII_ADDR_MASK) | 65 61 ((reg_offset << MII_REG_SHIFT) & MII_REG_MASK); 66 62 ··· 76 80 { 77 81 u32 miiaddr = MII_WRITE | MII_BUSY | MII_CLKRANGE_250_300M; 78 82 struct ipq8064_mdio *priv = bus->priv; 79 - 80 - /* Reject clause 45 */ 81 - if (reg_offset & MII_ADDR_C45) 82 - return -EOPNOTSUPP; 83 83 84 84 regmap_write(priv->base, MII_DATA_REG_ADDR, data); 85 85
-6
drivers/net/mdio/mdio-mscc-miim.c
··· 108 108 u32 val; 109 109 int ret; 110 110 111 - if (regnum & MII_ADDR_C45) 112 - return -EOPNOTSUPP; 113 - 114 111 ret = mscc_miim_wait_pending(bus); 115 112 if (ret) 116 113 goto out; ··· 150 153 { 151 154 struct mscc_miim_dev *miim = bus->priv; 152 155 int ret; 153 - 154 - if (regnum & MII_ADDR_C45) 155 - return -EOPNOTSUPP; 156 156 157 157 ret = mscc_miim_wait_pending(bus); 158 158 if (ret < 0)
-6
drivers/net/mdio/mdio-mvusb.c
··· 34 34 struct mvusb_mdio *mvusb = mdio->priv; 35 35 int err, alen; 36 36 37 - if (dev & MII_ADDR_C45) 38 - return -EOPNOTSUPP; 39 - 40 37 mvusb->buf[MVUSB_CMD_ADDR] = cpu_to_le16(0xa400 | (dev << 5) | reg); 41 38 42 39 err = usb_bulk_msg(mvusb->udev, usb_sndbulkpipe(mvusb->udev, 2), ··· 53 56 { 54 57 struct mvusb_mdio *mvusb = mdio->priv; 55 58 int alen; 56 - 57 - if (dev & MII_ADDR_C45) 58 - return -EOPNOTSUPP; 59 59 60 60 mvusb->buf[MVUSB_CMD_ADDR] = cpu_to_le16(0x8000 | (dev << 5) | reg); 61 61 mvusb->buf[MVUSB_CMD_VAL] = cpu_to_le16(val);
+2 -8
drivers/net/phy/mdio_bus.c
··· 917 917 } 918 918 EXPORT_SYMBOL_GPL(__mdiobus_modify_changed); 919 919 920 - static u32 mdiobus_c45_addr(int devad, u16 regnum) 921 - { 922 - return MII_ADDR_C45 | devad << MII_DEVADDR_C45_SHIFT | regnum; 923 - } 924 - 925 920 /** 926 921 * __mdiobus_c45_read - Unlocked version of the mdiobus_c45_read function 927 922 * @bus: the mii_bus struct ··· 937 942 if (bus->read_c45) 938 943 retval = bus->read_c45(bus, addr, devad, regnum); 939 944 else 940 - retval = bus->read(bus, addr, mdiobus_c45_addr(devad, regnum)); 945 + retval = -EOPNOTSUPP; 941 946 942 947 trace_mdio_access(bus, 1, addr, regnum, retval, retval); 943 948 mdiobus_stats_acct(&bus->stats[addr], true, retval); ··· 968 973 if (bus->write_c45) 969 974 err = bus->write_c45(bus, addr, devad, regnum, val); 970 975 else 971 - err = bus->write(bus, addr, mdiobus_c45_addr(devad, regnum), 972 - val); 976 + err = -EOPNOTSUPP; 973 977 974 978 trace_mdio_access(bus, 0, addr, regnum, val, err); 975 979 mdiobus_stats_acct(&bus->stats[addr], false, err);
-18
include/linux/mdio.h
··· 10 10 #include <linux/bitfield.h> 11 11 #include <linux/mod_devicetable.h> 12 12 13 - /* Or MII_ADDR_C45 into regnum for read/write on mii_bus to enable the 21 bit 14 - * IEEE 802.3ae clause 45 addressing mode used by 10GIGE phy chips. 15 - */ 16 - #define MII_ADDR_C45 (1<<30) 17 - #define MII_DEVADDR_C45_SHIFT 16 18 - #define MII_DEVADDR_C45_MASK GENMASK(20, 16) 19 - #define MII_REGADDR_C45_MASK GENMASK(15, 0) 20 - 21 13 struct gpio_desc; 22 14 struct mii_bus; 23 15 struct reset_control; ··· 453 461 { 454 462 return mdiobus_modify_changed(mdiodev->bus, mdiodev->addr, regnum, 455 463 mask, set); 456 - } 457 - 458 - static inline u16 mdiobus_c45_regad(u32 regnum) 459 - { 460 - return FIELD_GET(MII_REGADDR_C45_MASK, regnum); 461 - } 462 - 463 - static inline u16 mdiobus_c45_devad(u32 regnum) 464 - { 465 - return FIELD_GET(MII_DEVADDR_C45_MASK, regnum); 466 464 } 467 465 468 466 static inline int mdiodev_c45_modify(struct mdio_device *mdiodev, int devad,