Lines Matching refs:mdiodev

42 static int mdiobus_register_gpiod(struct mdio_device *mdiodev)  in mdiobus_register_gpiod()  argument
45 mdiodev->reset_gpio = gpiod_get_optional(&mdiodev->dev, in mdiobus_register_gpiod()
47 if (IS_ERR(mdiodev->reset_gpio)) in mdiobus_register_gpiod()
48 return PTR_ERR(mdiodev->reset_gpio); in mdiobus_register_gpiod()
50 if (mdiodev->reset_gpio) in mdiobus_register_gpiod()
51 gpiod_set_consumer_name(mdiodev->reset_gpio, "PHY reset"); in mdiobus_register_gpiod()
56 static int mdiobus_register_reset(struct mdio_device *mdiodev) in mdiobus_register_reset() argument
60 reset = reset_control_get_optional_exclusive(&mdiodev->dev, "phy"); in mdiobus_register_reset()
64 mdiodev->reset_ctrl = reset; in mdiobus_register_reset()
69 int mdiobus_register_device(struct mdio_device *mdiodev) in mdiobus_register_device() argument
73 if (mdiodev->bus->mdio_map[mdiodev->addr]) in mdiobus_register_device()
76 if (mdiodev->flags & MDIO_DEVICE_FLAG_PHY) { in mdiobus_register_device()
77 err = mdiobus_register_gpiod(mdiodev); in mdiobus_register_device()
81 err = mdiobus_register_reset(mdiodev); in mdiobus_register_device()
86 mdio_device_reset(mdiodev, 1); in mdiobus_register_device()
89 mdiodev->bus->mdio_map[mdiodev->addr] = mdiodev; in mdiobus_register_device()
95 int mdiobus_unregister_device(struct mdio_device *mdiodev) in mdiobus_unregister_device() argument
97 if (mdiodev->bus->mdio_map[mdiodev->addr] != mdiodev) in mdiobus_unregister_device()
100 reset_control_put(mdiodev->reset_ctrl); in mdiobus_unregister_device()
102 mdiodev->bus->mdio_map[mdiodev->addr] = NULL; in mdiobus_unregister_device()
120 struct mdio_device *mdiodev; in mdiobus_get_phy() local
122 mdiodev = mdiobus_find_device(bus, addr); in mdiobus_get_phy()
123 if (!mdiodev) in mdiobus_get_phy()
126 if (!(mdiodev->flags & MDIO_DEVICE_FLAG_PHY)) in mdiobus_get_phy()
129 return container_of(mdiodev, struct phy_device, mdio); in mdiobus_get_phy()
256 struct mdio_device *mdiodev = to_mdio_device(dev); in mdio_bus_device_stat_field_show() local
257 struct mii_bus *bus = mdiodev->bus; in mdio_bus_device_stat_field_show()
260 int addr = mdiodev->addr; in mdio_bus_device_stat_field_show()
462 static int of_mdiobus_find_phy(struct device *dev, struct mdio_device *mdiodev, in of_mdiobus_find_phy() argument
477 if (!of_mdiobus_find_phy(dev, mdiodev, child)) { in of_mdiobus_find_phy()
492 if (addr == mdiodev->addr) { in of_mdiobus_find_phy()
505 struct mdio_device *mdiodev) in of_mdiobus_link_mdiodev() argument
507 struct device *dev = &mdiodev->dev; in of_mdiobus_link_mdiodev()
512 of_mdiobus_find_phy(dev, mdiodev, bus->dev.of_node); in of_mdiobus_link_mdiodev()
516 struct mdio_device *mdiodev) in of_mdiobus_link_mdiodev() argument
532 struct mdio_device *mdiodev; in mdiobus_create_device() local
535 mdiodev = mdio_device_create(bus, bi->mdio_addr); in mdiobus_create_device()
536 if (IS_ERR(mdiodev)) in mdiobus_create_device()
539 strscpy(mdiodev->modalias, bi->modalias, in mdiobus_create_device()
540 sizeof(mdiodev->modalias)); in mdiobus_create_device()
541 mdiodev->bus_match = mdio_device_bus_match; in mdiobus_create_device()
542 mdiodev->dev.platform_data = (void *)bi->platform_data; in mdiobus_create_device()
544 ret = mdio_device_register(mdiodev); in mdiobus_create_device()
546 mdio_device_free(mdiodev); in mdiobus_create_device()
687 struct mdio_device *mdiodev; in __mdiobus_register() local
786 mdiodev = bus->mdio_map[i]; in __mdiobus_register()
787 if (!mdiodev) in __mdiobus_register()
790 mdiodev->device_remove(mdiodev); in __mdiobus_register()
791 mdiodev->device_free(mdiodev); in __mdiobus_register()
805 struct mdio_device *mdiodev; in mdiobus_unregister() local
813 mdiodev = bus->mdio_map[i]; in mdiobus_unregister()
814 if (!mdiodev) in mdiobus_unregister()
817 if (mdiodev->reset_gpio) in mdiobus_unregister()
818 gpiod_put(mdiodev->reset_gpio); in mdiobus_unregister()
820 mdiodev->device_remove(mdiodev); in mdiobus_unregister()
821 mdiodev->device_free(mdiodev); in mdiobus_unregister()