Lines Matching refs:bus
78 if (mdiodev->bus->mdio_map[mdiodev->addr]) in mdiobus_register_device()
87 mdiodev->bus->mdio_map[mdiodev->addr] = mdiodev; in mdiobus_register_device()
95 if (mdiodev->bus->mdio_map[mdiodev->addr] != mdiodev) in mdiobus_unregister_device()
98 mdiodev->bus->mdio_map[mdiodev->addr] = NULL; in mdiobus_unregister_device()
104 struct phy_device *mdiobus_get_phy(struct mii_bus *bus, int addr) in mdiobus_get_phy() argument
106 struct mdio_device *mdiodev = bus->mdio_map[addr]; in mdiobus_get_phy()
118 bool mdiobus_is_registered_device(struct mii_bus *bus, int addr) in mdiobus_is_registered_device() argument
120 return bus->mdio_map[addr]; in mdiobus_is_registered_device()
134 struct mii_bus *bus; in mdiobus_alloc_size() local
135 size_t aligned_size = ALIGN(sizeof(*bus), NETDEV_ALIGN); in mdiobus_alloc_size()
143 alloc_size = sizeof(*bus); in mdiobus_alloc_size()
145 bus = kzalloc(alloc_size, GFP_KERNEL); in mdiobus_alloc_size()
146 if (!bus) in mdiobus_alloc_size()
149 bus->state = MDIOBUS_ALLOCATED; in mdiobus_alloc_size()
151 bus->priv = (void *)bus + aligned_size; in mdiobus_alloc_size()
155 bus->irq[i] = PHY_POLL; in mdiobus_alloc_size()
157 return bus; in mdiobus_alloc_size()
192 struct mii_bus **ptr, *bus; in devm_mdiobus_alloc_size() local
199 bus = mdiobus_alloc_size(sizeof_priv); in devm_mdiobus_alloc_size()
200 if (bus) { in devm_mdiobus_alloc_size()
201 *ptr = bus; in devm_mdiobus_alloc_size()
207 return bus; in devm_mdiobus_alloc_size()
218 void devm_mdiobus_free(struct device *dev, struct mii_bus *bus) in devm_mdiobus_free() argument
223 devm_mdiobus_match, bus); in devm_mdiobus_free()
237 struct mii_bus *bus = to_mii_bus(d); in mdiobus_release() local
238 BUG_ON(bus->state != MDIOBUS_RELEASED && in mdiobus_release()
240 bus->state != MDIOBUS_ALLOCATED); in mdiobus_release()
241 kfree(bus); in mdiobus_release()
288 static void of_mdiobus_link_mdiodev(struct mii_bus *bus, in of_mdiobus_link_mdiodev() argument
294 if (dev->of_node || !bus->dev.of_node) in of_mdiobus_link_mdiodev()
297 for_each_available_child_of_node(bus->dev.of_node, child) { in of_mdiobus_link_mdiodev()
326 static int mdiobus_create_device(struct mii_bus *bus, in mdiobus_create_device() argument
332 mdiodev = mdio_device_create(bus, bi->mdio_addr); in mdiobus_create_device()
362 int __mdiobus_register(struct mii_bus *bus, struct module *owner) in __mdiobus_register() argument
368 if (NULL == bus || NULL == bus->name || in __mdiobus_register()
369 NULL == bus->read || NULL == bus->write) in __mdiobus_register()
372 BUG_ON(bus->state != MDIOBUS_ALLOCATED && in __mdiobus_register()
373 bus->state != MDIOBUS_UNREGISTERED); in __mdiobus_register()
375 bus->owner = owner; in __mdiobus_register()
376 bus->dev.parent = bus->parent; in __mdiobus_register()
377 bus->dev.class = &mdio_bus_class; in __mdiobus_register()
378 bus->dev.groups = NULL; in __mdiobus_register()
379 dev_set_name(&bus->dev, "%s", bus->id); in __mdiobus_register()
381 err = device_register(&bus->dev); in __mdiobus_register()
383 pr_err("mii_bus %s failed to register\n", bus->id); in __mdiobus_register()
387 mutex_init(&bus->mdio_lock); in __mdiobus_register()
390 gpiod = devm_gpiod_get_optional(&bus->dev, "reset", GPIOD_OUT_LOW); in __mdiobus_register()
392 dev_err(&bus->dev, "mii_bus %s couldn't get reset GPIO\n", in __mdiobus_register()
393 bus->id); in __mdiobus_register()
394 device_del(&bus->dev); in __mdiobus_register()
397 bus->reset_gpiod = gpiod; in __mdiobus_register()
400 udelay(bus->reset_delay_us); in __mdiobus_register()
404 if (bus->reset) in __mdiobus_register()
405 bus->reset(bus); in __mdiobus_register()
408 if ((bus->phy_mask & (1 << i)) == 0) { in __mdiobus_register()
411 phydev = mdiobus_scan(bus, i); in __mdiobus_register()
419 mdiobus_setup_mdiodev_from_board_info(bus, mdiobus_create_device); in __mdiobus_register()
421 bus->state = MDIOBUS_REGISTERED; in __mdiobus_register()
422 pr_info("%s: probed\n", bus->name); in __mdiobus_register()
427 mdiodev = bus->mdio_map[i]; in __mdiobus_register()
436 if (bus->reset_gpiod) in __mdiobus_register()
437 gpiod_set_value_cansleep(bus->reset_gpiod, 1); in __mdiobus_register()
439 device_del(&bus->dev); in __mdiobus_register()
444 void mdiobus_unregister(struct mii_bus *bus) in mdiobus_unregister() argument
449 BUG_ON(bus->state != MDIOBUS_REGISTERED); in mdiobus_unregister()
450 bus->state = MDIOBUS_UNREGISTERED; in mdiobus_unregister()
453 mdiodev = bus->mdio_map[i]; in mdiobus_unregister()
465 if (bus->reset_gpiod) in mdiobus_unregister()
466 gpiod_set_value_cansleep(bus->reset_gpiod, 1); in mdiobus_unregister()
468 device_del(&bus->dev); in mdiobus_unregister()
480 void mdiobus_free(struct mii_bus *bus) in mdiobus_free() argument
483 if (bus->state == MDIOBUS_ALLOCATED) { in mdiobus_free()
484 kfree(bus); in mdiobus_free()
488 BUG_ON(bus->state != MDIOBUS_UNREGISTERED); in mdiobus_free()
489 bus->state = MDIOBUS_RELEASED; in mdiobus_free()
491 put_device(&bus->dev); in mdiobus_free()
507 struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr) in mdiobus_scan() argument
512 phydev = get_phy_device(bus, addr, false); in mdiobus_scan()
520 of_mdiobus_link_mdiodev(bus, &phydev->mdio); in mdiobus_scan()
542 int __mdiobus_read(struct mii_bus *bus, int addr, u32 regnum) in __mdiobus_read() argument
546 WARN_ON_ONCE(!mutex_is_locked(&bus->mdio_lock)); in __mdiobus_read()
548 retval = bus->read(bus, addr, regnum); in __mdiobus_read()
550 trace_mdio_access(bus, 1, addr, regnum, retval, retval); in __mdiobus_read()
567 int __mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val) in __mdiobus_write() argument
571 WARN_ON_ONCE(!mutex_is_locked(&bus->mdio_lock)); in __mdiobus_write()
573 err = bus->write(bus, addr, regnum, val); in __mdiobus_write()
575 trace_mdio_access(bus, 0, addr, regnum, val, err); in __mdiobus_write()
594 int mdiobus_read_nested(struct mii_bus *bus, int addr, u32 regnum) in mdiobus_read_nested() argument
600 mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED); in mdiobus_read_nested()
601 retval = __mdiobus_read(bus, addr, regnum); in mdiobus_read_nested()
602 mutex_unlock(&bus->mdio_lock); in mdiobus_read_nested()
618 int mdiobus_read(struct mii_bus *bus, int addr, u32 regnum) in mdiobus_read() argument
624 mutex_lock(&bus->mdio_lock); in mdiobus_read()
625 retval = __mdiobus_read(bus, addr, regnum); in mdiobus_read()
626 mutex_unlock(&bus->mdio_lock); in mdiobus_read()
646 int mdiobus_write_nested(struct mii_bus *bus, int addr, u32 regnum, u16 val) in mdiobus_write_nested() argument
652 mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED); in mdiobus_write_nested()
653 err = __mdiobus_write(bus, addr, regnum, val); in mdiobus_write_nested()
654 mutex_unlock(&bus->mdio_lock); in mdiobus_write_nested()
671 int mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val) in mdiobus_write() argument
677 mutex_lock(&bus->mdio_lock); in mdiobus_write()
678 err = __mdiobus_write(bus, addr, regnum, val); in mdiobus_write()
679 mutex_unlock(&bus->mdio_lock); in mdiobus_write()