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

net: phy: bcm87xx: Use mmd helpers

Rather than construct special phy device addresses to access C45
registers, use the mmd helpers. These will directly call the C45 API
of the MDIO bus driver.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>

authored by

Andrew Lunn and committed by
Paolo Abeni
cad75717 260bdfea

+20 -16
+20 -16
drivers/net/phy/bcm87xx.c
··· 10 10 #define PHY_ID_BCM8706 0x0143bdc1 11 11 #define PHY_ID_BCM8727 0x0143bff0 12 12 13 - #define BCM87XX_PMD_RX_SIGNAL_DETECT (MII_ADDR_C45 | 0x1000a) 14 - #define BCM87XX_10GBASER_PCS_STATUS (MII_ADDR_C45 | 0x30020) 15 - #define BCM87XX_XGXS_LANE_STATUS (MII_ADDR_C45 | 0x40018) 13 + #define BCM87XX_PMD_RX_SIGNAL_DETECT 0x000a 14 + #define BCM87XX_10GBASER_PCS_STATUS 0x0020 15 + #define BCM87XX_XGXS_LANE_STATUS 0x0018 16 16 17 - #define BCM87XX_LASI_CONTROL (MII_ADDR_C45 | 0x39002) 18 - #define BCM87XX_LASI_STATUS (MII_ADDR_C45 | 0x39005) 17 + #define BCM87XX_LASI_CONTROL 0x9002 18 + #define BCM87XX_LASI_STATUS 0x9005 19 19 20 20 #if IS_ENABLED(CONFIG_OF_MDIO) 21 21 /* Set and/or override some configuration registers based on the ··· 54 54 u16 reg = be32_to_cpup(paddr++); 55 55 u16 mask = be32_to_cpup(paddr++); 56 56 u16 val_bits = be32_to_cpup(paddr++); 57 - u32 regnum = mdiobus_c45_addr(devid, reg); 58 57 int val = 0; 59 58 60 59 if (mask) { 61 - val = phy_read(phydev, regnum); 60 + val = phy_read_mmd(phydev, devid, reg); 62 61 if (val < 0) { 63 62 ret = val; 64 63 goto err; ··· 66 67 } 67 68 val |= val_bits; 68 69 69 - ret = phy_write(phydev, regnum, val); 70 + ret = phy_write_mmd(phydev, devid, reg, val); 70 71 if (ret < 0) 71 72 goto err; 72 73 } ··· 103 104 int pcs_status; 104 105 int xgxs_lane_status; 105 106 106 - rx_signal_detect = phy_read(phydev, BCM87XX_PMD_RX_SIGNAL_DETECT); 107 + rx_signal_detect = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, 108 + BCM87XX_PMD_RX_SIGNAL_DETECT); 107 109 if (rx_signal_detect < 0) 108 110 return rx_signal_detect; 109 111 110 112 if ((rx_signal_detect & 1) == 0) 111 113 goto no_link; 112 114 113 - pcs_status = phy_read(phydev, BCM87XX_10GBASER_PCS_STATUS); 115 + pcs_status = phy_read_mmd(phydev, MDIO_MMD_PCS, 116 + BCM87XX_10GBASER_PCS_STATUS); 114 117 if (pcs_status < 0) 115 118 return pcs_status; 116 119 117 120 if ((pcs_status & 1) == 0) 118 121 goto no_link; 119 122 120 - xgxs_lane_status = phy_read(phydev, BCM87XX_XGXS_LANE_STATUS); 123 + xgxs_lane_status = phy_read_mmd(phydev, MDIO_MMD_PHYXS, 124 + BCM87XX_XGXS_LANE_STATUS); 121 125 if (xgxs_lane_status < 0) 122 126 return xgxs_lane_status; 123 127 ··· 141 139 { 142 140 int reg, err; 143 141 144 - reg = phy_read(phydev, BCM87XX_LASI_CONTROL); 142 + reg = phy_read_mmd(phydev, MDIO_MMD_PCS, BCM87XX_LASI_CONTROL); 145 143 146 144 if (reg < 0) 147 145 return reg; 148 146 149 147 if (phydev->interrupts == PHY_INTERRUPT_ENABLED) { 150 - err = phy_read(phydev, BCM87XX_LASI_STATUS); 148 + err = phy_read_mmd(phydev, MDIO_MMD_PCS, BCM87XX_LASI_STATUS); 151 149 if (err) 152 150 return err; 153 151 154 152 reg |= 1; 155 - err = phy_write(phydev, BCM87XX_LASI_CONTROL, reg); 153 + err = phy_write_mmd(phydev, MDIO_MMD_PCS, 154 + BCM87XX_LASI_CONTROL, reg); 156 155 } else { 157 156 reg &= ~1; 158 - err = phy_write(phydev, BCM87XX_LASI_CONTROL, reg); 157 + err = phy_write_mmd(phydev, MDIO_MMD_PCS, 158 + BCM87XX_LASI_CONTROL, reg); 159 159 if (err) 160 160 return err; 161 161 162 - err = phy_read(phydev, BCM87XX_LASI_STATUS); 162 + err = phy_read_mmd(phydev, MDIO_MMD_PCS, BCM87XX_LASI_STATUS); 163 163 } 164 164 165 165 return err;