Current implementation of MDIO bus PM ops doesn't actually implement bus-specific PM ops but just calls PM ops defined on a device level what doesn't seem to be fully in line with the core PM model.
When looking e.g. at __device_suspend() the PM core looks for PM ops of a device in a specific order: 1. device PM domain 2. device type 3. device class 4. device bus I think it has good reason that there's no PM ops on device level. The situation can be improved by modeling PHY's as device type of a MDIO device. If for some other type of MDIO device PM ops are needed, it could be modeled as struct device_type as well. Heiner Kallweit (2): net: phy: add struct device_type representation of a PHY net: phy: remove PM ops from MDIO bus drivers/net/phy/mdio_bus.c | 48 ------------------ drivers/net/phy/phy_device.c | 96 +++++++++++++++++++----------------- include/linux/mdio.h | 1 - 3 files changed, 50 insertions(+), 95 deletions(-) -- 2.17.1