Lines Matching refs:mdiodev
44 static int mdiobus_register_gpiod(struct mdio_device *mdiodev) in mdiobus_register_gpiod() argument
47 mdiodev->reset_gpio = gpiod_get_optional(&mdiodev->dev, in mdiobus_register_gpiod()
49 if (IS_ERR(mdiodev->reset_gpio)) in mdiobus_register_gpiod()
50 return PTR_ERR(mdiodev->reset_gpio); in mdiobus_register_gpiod()
52 if (mdiodev->reset_gpio) in mdiobus_register_gpiod()
53 gpiod_set_consumer_name(mdiodev->reset_gpio, "PHY reset"); in mdiobus_register_gpiod()
58 static int mdiobus_register_reset(struct mdio_device *mdiodev) in mdiobus_register_reset() argument
62 reset = reset_control_get_optional_exclusive(&mdiodev->dev, "phy"); in mdiobus_register_reset()
66 mdiodev->reset_ctrl = reset; in mdiobus_register_reset()
71 int mdiobus_register_device(struct mdio_device *mdiodev) in mdiobus_register_device() argument
75 if (mdiodev->bus->mdio_map[mdiodev->addr]) in mdiobus_register_device()
78 if (mdiodev->flags & MDIO_DEVICE_FLAG_PHY) { in mdiobus_register_device()
79 err = mdiobus_register_gpiod(mdiodev); in mdiobus_register_device()
83 err = mdiobus_register_reset(mdiodev); in mdiobus_register_device()
88 mdio_device_reset(mdiodev, 1); in mdiobus_register_device()
91 mdiodev->bus->mdio_map[mdiodev->addr] = mdiodev; in mdiobus_register_device()
97 int mdiobus_unregister_device(struct mdio_device *mdiodev) in mdiobus_unregister_device() argument
99 if (mdiodev->bus->mdio_map[mdiodev->addr] != mdiodev) in mdiobus_unregister_device()
102 reset_control_put(mdiodev->reset_ctrl); in mdiobus_unregister_device()
104 mdiodev->bus->mdio_map[mdiodev->addr] = NULL; in mdiobus_unregister_device()
122 struct mdio_device *mdiodev; in mdiobus_get_phy() local
124 mdiodev = mdiobus_find_device(bus, addr); in mdiobus_get_phy()
125 if (!mdiodev) in mdiobus_get_phy()
128 if (!(mdiodev->flags & MDIO_DEVICE_FLAG_PHY)) in mdiobus_get_phy()
131 return container_of(mdiodev, struct phy_device, mdio); in mdiobus_get_phy()
254 struct mdio_device *mdiodev = to_mdio_device(dev); in mdio_bus_device_stat_field_show() local
255 struct mii_bus *bus = mdiodev->bus; in mdio_bus_device_stat_field_show()
258 int addr = mdiodev->addr; in mdio_bus_device_stat_field_show()
460 struct mdio_device *mdiodev) in of_mdiobus_link_mdiodev() argument
462 struct device *dev = &mdiodev->dev; in of_mdiobus_link_mdiodev()
475 if (addr == mdiodev->addr) { in of_mdiobus_link_mdiodev()
486 struct mdio_device *mdiodev) in of_mdiobus_link_mdiodev() argument
502 struct mdio_device *mdiodev; in mdiobus_create_device() local
505 mdiodev = mdio_device_create(bus, bi->mdio_addr); in mdiobus_create_device()
506 if (IS_ERR(mdiodev)) in mdiobus_create_device()
509 strncpy(mdiodev->modalias, bi->modalias, in mdiobus_create_device()
510 sizeof(mdiodev->modalias)); in mdiobus_create_device()
511 mdiodev->bus_match = mdio_device_bus_match; in mdiobus_create_device()
512 mdiodev->dev.platform_data = (void *)bi->platform_data; in mdiobus_create_device()
514 ret = mdio_device_register(mdiodev); in mdiobus_create_device()
516 mdio_device_free(mdiodev); in mdiobus_create_device()
657 struct mdio_device *mdiodev; in __mdiobus_register() local
747 mdiodev = bus->mdio_map[i]; in __mdiobus_register()
748 if (!mdiodev) in __mdiobus_register()
751 mdiodev->device_remove(mdiodev); in __mdiobus_register()
752 mdiodev->device_free(mdiodev); in __mdiobus_register()
766 struct mdio_device *mdiodev; in mdiobus_unregister() local
774 mdiodev = bus->mdio_map[i]; in mdiobus_unregister()
775 if (!mdiodev) in mdiobus_unregister()
778 if (mdiodev->reset_gpio) in mdiobus_unregister()
779 gpiod_put(mdiodev->reset_gpio); in mdiobus_unregister()
781 mdiodev->device_remove(mdiodev); in mdiobus_unregister()
782 mdiodev->device_free(mdiodev); in mdiobus_unregister()