net: phy: disregard "Clause 22 registers present" bit in get_phy_c45_devs_in_pkg
authorHeiner Kallweit <hkallweit1@gmail.com>
Fri, 8 Feb 2019 18:25:22 +0000 (19:25 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 9 Feb 2019 07:10:42 +0000 (23:10 -0800)
Bit 0 in register 1.5 doesn't represent a device but is a flag that
Clause 22 registers are present. Therefore disregard this bit when
populating the device list. If code needs this information it
should read register 1.5 directly instead of accessing the device
list.
Because this bit doesn't represent a device don't define a
MDIO_MMD_XYZ constant, just define a MDIO_DEVS_XYZ constant for
the flag in the device list bitmap.

v2:
- make masking of bit 0 more explicit
- improve commit message

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/phy_device.c
include/uapi/linux/mdio.h

index 9369e1323c396a6e0d8443967bcf358280de6ad9..d4fc1fd8af416967105f90a97a2f480bed530a60 100644 (file)
@@ -684,6 +684,9 @@ static int get_phy_c45_devs_in_pkg(struct mii_bus *bus, int addr, int dev_addr,
                return -EIO;
        *devices_in_package |= (phy_reg & 0xffff);
 
+       /* Bit 0 doesn't represent a device, it indicates c22 regs presence */
+       *devices_in_package &= ~BIT(0);
+
        return 0;
 }
 
index 2e6e309f0847010c64f9dc1a553c5973a66dae0f..0e012b168e4daa46debc5c22c102a9a6c642e053 100644 (file)
 
 /* Device present registers. */
 #define MDIO_DEVS_PRESENT(devad)       (1 << (devad))
+#define MDIO_DEVS_C22PRESENT           MDIO_DEVS_PRESENT(0)
 #define MDIO_DEVS_PMAPMD               MDIO_DEVS_PRESENT(MDIO_MMD_PMAPMD)
 #define MDIO_DEVS_WIS                  MDIO_DEVS_PRESENT(MDIO_MMD_WIS)
 #define MDIO_DEVS_PCS                  MDIO_DEVS_PRESENT(MDIO_MMD_PCS)