Starting from kernel 4.5, phy_id needs to be fetched from a different location.
not doing so results in this compile error:
drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c: In function 'ag71xx_phy_connect_multi':
drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c:133:35: error: 'struct mdio_device' has no member named 'phy_id'
ag->mii_bus->mdio_map[phy_addr]->phy_id);
^
./include/linux/printk.h:137:18: note: in definition of macro 'no_printk'
printk(fmt, ##__VA_ARGS__); \
^~~~~~~~~~~
drivers/net/ethernet/atheros/ag71xx/ag71xx.h:72:27: note: in expansion of macro 'pr_debug'
#define DBG(fmt, args...) pr_debug(fmt, ## args)
^~~~~~~~
drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c:130:3: note: in expansion of macro 'DBG'
DBG("%s: PHY found at %s, uid=%08x\n",
^~~
scripts/Makefile.build:326: recipe for target 'drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.o' failed
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
if (ag->mii_bus->mdio_map[phy_addr] == NULL)
continue;
- DBG("%s: PHY found at %s, uid=%08x\n",
- dev_name(dev),
- dev_name(&ag->mii_bus->mdio_map[phy_addr]->dev),
- ag->mii_bus->mdio_map[phy_addr]->phy_id);
+ phydev = mdiobus_get_phy(ag->mii_bus, phy_addr);
- if (phydev == NULL)
- phydev = mdiobus_get_phy(ag->mii_bus, phy_addr);
+ DBG("%s: PHY found at %s, uid=%08x\n",
+ dev_name(dev),
+ dev_name(&ag->mii_bus->mdio_map[phy_addr]->dev),
+ (phydev) ? phydev->phy_id : 0);
#endif
}