@@ -75,7 +75,7 @@ int mdiobus_register_device(struct mdio_device *mdiodev)
if (mdiodev->bus->mdio_map[mdiodev->addr])
return -EBUSY;
- if (mdiodev->flags & MDIO_DEVICE_FLAG_PHY) {
+ if (is_phy_device(&mdiodev->dev)) {
err = mdiobus_register_gpiod(mdiodev);
if (err)
return err;
@@ -125,7 +125,7 @@ struct phy_device *mdiobus_get_phy(struct mii_bus *bus, int addr)
if (!mdiodev)
return NULL;
- if (!(mdiodev->flags & MDIO_DEVICE_FLAG_PHY))
+ if (!is_phy_device(&mdiodev->dev))
return NULL;
return container_of(mdiodev, struct phy_device, mdio);
@@ -1345,8 +1345,7 @@ static int mdio_bus_match(struct device *dev, struct device_driver *drv)
struct mdio_device *mdio = to_mdio_device(dev);
/* Both the driver and device must type-match */
- if (is_phy_driver(&mdiodrv->driver) ==
- !(mdio->flags & MDIO_DEVICE_FLAG_PHY))
+ if (is_phy_driver(&mdiodrv->driver) != is_phy_device(&mdio->dev))
return 0;
if (of_driver_match_device(dev, drv))
@@ -640,6 +640,11 @@ static int phy_request_driver_module(struct phy_device *dev, u32 phy_id)
return 0;
}
+bool is_phy_device(struct device *dev)
+{
+ return dev->type == &mdio_bus_phy_type;
+}
+
struct phy_device *phy_device_create(struct mii_bus *bus, int addr, u32 phy_id,
bool is_c45,
struct phy_c45_device_ids *c45_ids)
@@ -660,7 +665,6 @@ struct phy_device *phy_device_create(struct mii_bus *bus, int addr, u32 phy_id,
mdiodev->bus = bus;
mdiodev->bus_match = phy_bus_match;
mdiodev->addr = addr;
- mdiodev->flags = MDIO_DEVICE_FLAG_PHY;
mdiodev->device_free = phy_mdio_device_free;
mdiodev->device_remove = phy_mdio_device_remove;
mdiodev->reset_state = -1;
@@ -3266,7 +3270,7 @@ struct phy_device *fwnode_phy_find_device(struct fwnode_handle *phy_fwnode)
if (!mdiodev)
return NULL;
- if (mdiodev->flags & MDIO_DEVICE_FLAG_PHY)
+ if (is_phy_device(&mdiodev->dev))
return to_phy_device(&mdiodev->dev);
put_device(&mdiodev->dev);
@@ -37,7 +37,6 @@ struct mdio_device {
/* Bus address of the MDIO device (0-31) */
int addr;
- int flags;
int reset_state;
struct gpio_desc *reset_gpio;
struct reset_control *reset_ctrl;
@@ -50,8 +49,6 @@ static inline struct mdio_device *to_mdio_device(const struct device *dev)
return container_of(dev, struct mdio_device, dev);
}
-#define MDIO_DEVICE_FLAG_PHY 1
-
/* struct mdio_driver: Generic MDIO driver */
struct mdio_driver {
struct device_driver driver;
@@ -2156,5 +2156,6 @@ module_exit(phy_module_exit)
bool phy_driver_is_genphy(struct phy_device *phydev);
bool phy_driver_is_genphy_10g(struct phy_device *phydev);
bool is_phy_driver(struct device_driver *driver);
+bool is_phy_device(struct device *dev);
#endif /* __PHY_H */
MDIO_DEVICE_FLAG_PHY is the only flag that can be set in the struct mdio_device. This flag is used to test that if it is a phy device. We can test that the type of the device is equal to mdio_bus_phy_type, so that, the flags in struct mdio_device can be removed. Introduce is_phy_device(), use it to test that if the device is a phy device. Signed-off-by: Yajun Deng <yajun.deng@linux.dev> --- drivers/net/phy/mdio_bus.c | 7 +++---- drivers/net/phy/phy_device.c | 8 ++++++-- include/linux/mdio.h | 3 --- include/linux/phy.h | 1 + 4 files changed, 10 insertions(+), 9 deletions(-)