Lines Matching refs:bus
75 if (mdiodev->bus->mdio_map[mdiodev->addr])
91 mdiodev->bus->mdio_map[mdiodev->addr] = mdiodev;
99 if (mdiodev->bus->mdio_map[mdiodev->addr] != mdiodev)
104 mdiodev->bus->mdio_map[mdiodev->addr] = NULL;
110 static struct mdio_device *mdiobus_find_device(struct mii_bus *bus, int addr)
112 bool addr_valid = addr >= 0 && addr < ARRAY_SIZE(bus->mdio_map);
117 return bus->mdio_map[addr];
120 struct phy_device *mdiobus_get_phy(struct mii_bus *bus, int addr)
124 mdiodev = mdiobus_find_device(bus, addr);
135 bool mdiobus_is_registered_device(struct mii_bus *bus, int addr)
137 return mdiobus_find_device(bus, addr) != NULL;
144 * If non-zero, then bus->priv is points to that memory.
146 * Description: called by a bus driver to allocate an mii_bus
151 struct mii_bus *bus;
152 size_t aligned_size = ALIGN(sizeof(*bus), NETDEV_ALIGN);
160 alloc_size = sizeof(*bus);
162 bus = kzalloc(alloc_size, GFP_KERNEL);
163 if (!bus)
166 bus->state = MDIOBUS_ALLOCATED;
168 bus->priv = (void *)bus + aligned_size;
172 bus->irq[i] = PHY_POLL;
173 u64_stats_init(&bus->stats[i].syncp);
176 return bus;
189 struct mii_bus *bus = to_mii_bus(d);
191 WARN(bus->state != MDIOBUS_RELEASED &&
193 bus->state != MDIOBUS_ALLOCATED,
195 bus->id);
196 kfree(bus);
218 static u64 mdio_bus_get_global_stat(struct mii_bus *bus, unsigned int offset)
224 val += mdio_bus_get_stat(&bus->stats[i], offset);
233 struct mii_bus *bus = to_mii_bus(dev);
242 val = mdio_bus_get_global_stat(bus, sattr->field_offset);
244 val = mdio_bus_get_stat(&bus->stats[sattr->addr],
255 struct mii_bus *bus = mdiodev->bus;
264 val = mdio_bus_get_stat(&bus->stats[addr], sattr->field_offset);
416 * and this must be put_deviced'ed once the bus is finished with.
434 * and this must be put once the bus is finished with.
453 /* Walk the list of subnodes of a mdio bus and look for a node that
459 static void of_mdiobus_link_mdiodev(struct mii_bus *bus,
465 if (dev->of_node || !bus->dev.of_node)
468 for_each_available_child_of_node(bus->dev.of_node, child) {
494 * @bus: MDIO bus to create the devices on
499 static int mdiobus_create_device(struct mii_bus *bus,
505 mdiodev = mdio_device_create(bus, bi->mdio_addr);
521 static struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr, bool c45)
526 phydev = get_phy_device(bus, addr, c45);
531 * in the bus node, and set the of_node pointer in this case.
533 of_mdiobus_link_mdiodev(bus, &phydev->mdio);
545 * mdiobus_scan_c22 - scan one address on a bus for C22 MDIO devices.
546 * @bus: mii_bus to scan
547 * @addr: address on bus to scan
549 * This function scans one address on the MDIO bus, looking for
556 struct phy_device *mdiobus_scan_c22(struct mii_bus *bus, int addr)
558 return mdiobus_scan(bus, addr, false);
563 * mdiobus_scan_c45 - scan one address on a bus for C45 MDIO devices.
564 * @bus: mii_bus to scan
565 * @addr: address on bus to scan
567 * This function scans one address on the MDIO bus, looking for
574 static struct phy_device *mdiobus_scan_c45(struct mii_bus *bus, int addr)
576 return mdiobus_scan(bus, addr, true);
579 static int mdiobus_scan_bus_c22(struct mii_bus *bus)
584 if ((bus->phy_mask & BIT(i)) == 0) {
587 phydev = mdiobus_scan_c22(bus, i);
595 static int mdiobus_scan_bus_c45(struct mii_bus *bus)
600 if ((bus->phy_mask & BIT(i)) == 0) {
604 if (bus->mdio_map[i])
607 phydev = mdiobus_scan_c45(bus, i);
616 * transaction on the bus, like accepting a read themselves, and
622 static bool mdiobus_prevent_c45_scan(struct mii_bus *bus)
630 phydev = mdiobus_get_phy(bus, i);
642 * __mdiobus_register - bring up all the PHYs on a given bus and attach them to bus
643 * @bus: target mii_bus
644 * @owner: module containing bus accessor functions
646 * Description: Called by a bus driver to bring up all the PHYs
647 * on a given bus, and attach them to the bus. Drivers should use
655 int __mdiobus_register(struct mii_bus *bus, struct module *owner)
662 if (!bus || !bus->name)
666 if (!!bus->read != !!bus->write || !!bus->read_c45 != !!bus->write_c45)
670 if (!bus->read && !bus->read_c45)
673 if (bus->parent && bus->parent->of_node)
674 bus->parent->of_node->fwnode.flags |=
677 WARN(bus->state != MDIOBUS_ALLOCATED &&
678 bus->state != MDIOBUS_UNREGISTERED,
679 "%s: not in ALLOCATED or UNREGISTERED state\n", bus->id);
681 bus->owner = owner;
682 bus->dev.parent = bus->parent;
683 bus->dev.class = &mdio_bus_class;
684 bus->dev.groups = NULL;
685 dev_set_name(&bus->dev, "%s", bus->id);
692 bus->state = MDIOBUS_UNREGISTERED;
694 err = device_register(&bus->dev);
696 pr_err("mii_bus %s failed to register\n", bus->id);
700 mutex_init(&bus->mdio_lock);
701 mutex_init(&bus->shared_lock);
703 /* assert bus level PHY GPIO reset */
704 gpiod = devm_gpiod_get_optional(&bus->dev, "reset", GPIOD_OUT_HIGH);
706 err = dev_err_probe(&bus->dev, PTR_ERR(gpiod),
708 bus->id);
709 device_del(&bus->dev);
712 bus->reset_gpiod = gpiod;
713 fsleep(bus->reset_delay_us);
715 if (bus->reset_post_delay_us > 0)
716 fsleep(bus->reset_post_delay_us);
719 if (bus->reset) {
720 err = bus->reset(bus);
725 if (bus->read) {
726 err = mdiobus_scan_bus_c22(bus);
731 prevent_c45_scan = mdiobus_prevent_c45_scan(bus);
733 if (!prevent_c45_scan && bus->read_c45) {
734 err = mdiobus_scan_bus_c45(bus);
739 mdiobus_setup_mdiodev_from_board_info(bus, mdiobus_create_device);
741 bus->state = MDIOBUS_REGISTERED;
742 dev_dbg(&bus->dev, "probed\n");
747 mdiodev = bus->mdio_map[i];
756 if (bus->reset_gpiod)
757 gpiod_set_value_cansleep(bus->reset_gpiod, 1);
759 device_del(&bus->dev);
764 void mdiobus_unregister(struct mii_bus *bus)
769 if (WARN_ON_ONCE(bus->state != MDIOBUS_REGISTERED))
771 bus->state = MDIOBUS_UNREGISTERED;
774 mdiodev = bus->mdio_map[i];
786 if (bus->reset_gpiod)
787 gpiod_set_value_cansleep(bus->reset_gpiod, 1);
789 device_del(&bus->dev);
795 * @bus: mii_bus to free
801 void mdiobus_free(struct mii_bus *bus)
804 if (bus->state == MDIOBUS_ALLOCATED) {
805 kfree(bus);
809 WARN(bus->state != MDIOBUS_UNREGISTERED,
810 "%s: not in UNREGISTERED state\n", bus->id);
811 bus->state = MDIOBUS_RELEASED;
813 put_device(&bus->dev);
839 * @bus: the mii_bus struct
843 * Read a MDIO bus register. Caller must hold the mdio bus lock.
847 int __mdiobus_read(struct mii_bus *bus, int addr, u32 regnum)
851 lockdep_assert_held_once(&bus->mdio_lock);
853 if (bus->read)
854 retval = bus->read(bus, addr, regnum);
858 trace_mdio_access(bus, 1, addr, regnum, retval, retval);
859 mdiobus_stats_acct(&bus->stats[addr], true, retval);
867 * @bus: the mii_bus struct
872 * Write a MDIO bus register. Caller must hold the mdio bus lock.
876 int __mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val)
880 lockdep_assert_held_once(&bus->mdio_lock);
882 if (bus->write)
883 err = bus->write(bus, addr, regnum, val);
887 trace_mdio_access(bus, 0, addr, regnum, val, err);
888 mdiobus_stats_acct(&bus->stats[addr], false, err);
896 * @bus: the mii_bus struct
907 int __mdiobus_modify_changed(struct mii_bus *bus, int addr, u32 regnum,
912 ret = __mdiobus_read(bus, addr, regnum);
920 ret = __mdiobus_write(bus, addr, regnum, new);
928 * @bus: the mii_bus struct
933 * Read a MDIO bus register. Caller must hold the mdio bus lock.
937 int __mdiobus_c45_read(struct mii_bus *bus, int addr, int devad, u32 regnum)
941 lockdep_assert_held_once(&bus->mdio_lock);
943 if (bus->read_c45)
944 retval = bus->read_c45(bus, addr, devad, regnum);
948 trace_mdio_access(bus, 1, addr, regnum, retval, retval);
949 mdiobus_stats_acct(&bus->stats[addr], true, retval);
957 * @bus: the mii_bus struct
963 * Write a MDIO bus register. Caller must hold the mdio bus lock.
967 int __mdiobus_c45_write(struct mii_bus *bus, int addr, int devad, u32 regnum,
972 lockdep_assert_held_once(&bus->mdio_lock);
974 if (bus->write_c45)
975 err = bus->write_c45(bus, addr, devad, regnum, val);
979 trace_mdio_access(bus, 0, addr, regnum, val, err);
980 mdiobus_stats_acct(&bus->stats[addr], false, err);
988 * @bus: the mii_bus struct
1000 static int __mdiobus_c45_modify_changed(struct mii_bus *bus, int addr,
1006 ret = __mdiobus_c45_read(bus, addr, devad, regnum);
1014 ret = __mdiobus_c45_write(bus, addr, devad, regnum, new);
1021 * @bus: the mii_bus struct
1025 * In case of nested MDIO bus access avoid lockdep false positives by
1029 * because the bus read/write functions may wait for an interrupt
1032 int mdiobus_read_nested(struct mii_bus *bus, int addr, u32 regnum)
1036 mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED);
1037 retval = __mdiobus_read(bus, addr, regnum);
1038 mutex_unlock(&bus->mdio_lock);
1046 * @bus: the mii_bus struct
1051 * because the bus read/write functions may wait for an interrupt
1054 int mdiobus_read(struct mii_bus *bus, int addr, u32 regnum)
1058 mutex_lock(&bus->mdio_lock);
1059 retval = __mdiobus_read(bus, addr, regnum);
1060 mutex_unlock(&bus->mdio_lock);
1068 * @bus: the mii_bus struct
1074 * because the bus read/write functions may wait for an interrupt
1077 int mdiobus_c45_read(struct mii_bus *bus, int addr, int devad, u32 regnum)
1081 mutex_lock(&bus->mdio_lock);
1082 retval = __mdiobus_c45_read(bus, addr, devad, regnum);
1083 mutex_unlock(&bus->mdio_lock);
1091 * @bus: the mii_bus struct
1096 * In case of nested MDIO bus access avoid lockdep false positives by
1100 * because the bus read/write functions may wait for an interrupt
1103 int mdiobus_c45_read_nested(struct mii_bus *bus, int addr, int devad,
1108 mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED);
1109 retval = __mdiobus_c45_read(bus, addr, devad, regnum);
1110 mutex_unlock(&bus->mdio_lock);
1118 * @bus: the mii_bus struct
1123 * In case of nested MDIO bus access avoid lockdep false positives by
1127 * because the bus read/write functions may wait for an interrupt
1130 int mdiobus_write_nested(struct mii_bus *bus, int addr, u32 regnum, u16 val)
1134 mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED);
1135 err = __mdiobus_write(bus, addr, regnum, val);
1136 mutex_unlock(&bus->mdio_lock);
1144 * @bus: the mii_bus struct
1150 * because the bus read/write functions may wait for an interrupt
1153 int mdiobus_write(struct mii_bus *bus, int addr, u32 regnum, u16 val)
1157 mutex_lock(&bus->mdio_lock);
1158 err = __mdiobus_write(bus, addr, regnum, val);
1159 mutex_unlock(&bus->mdio_lock);
1167 * @bus: the mii_bus struct
1174 * because the bus read/write functions may wait for an interrupt
1177 int mdiobus_c45_write(struct mii_bus *bus, int addr, int devad, u32 regnum,
1182 mutex_lock(&bus->mdio_lock);
1183 err = __mdiobus_c45_write(bus, addr, devad, regnum, val);
1184 mutex_unlock(&bus->mdio_lock);
1192 * @bus: the mii_bus struct
1198 * In case of nested MDIO bus access avoid lockdep false positives by
1202 * because the bus read/write functions may wait for an interrupt
1205 int mdiobus_c45_write_nested(struct mii_bus *bus, int addr, int devad,
1210 mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED);
1211 err = __mdiobus_c45_write(bus, addr, devad, regnum, val);
1212 mutex_unlock(&bus->mdio_lock);
1221 * @bus: the mii_bus struct
1227 int __mdiobus_modify(struct mii_bus *bus, int addr, u32 regnum, u16 mask,
1232 err = __mdiobus_modify_changed(bus, addr, regnum, mask, set);
1241 * @bus: the mii_bus struct
1247 int mdiobus_modify(struct mii_bus *bus, int addr, u32 regnum, u16 mask, u16 set)
1251 mutex_lock(&bus->mdio_lock);
1252 err = __mdiobus_modify(bus, addr, regnum, mask, set);
1253 mutex_unlock(&bus->mdio_lock);
1262 * @bus: the mii_bus struct
1269 int mdiobus_c45_modify(struct mii_bus *bus, int addr, int devad, u32 regnum,
1274 mutex_lock(&bus->mdio_lock);
1275 err = __mdiobus_c45_modify_changed(bus, addr, devad, regnum,
1277 mutex_unlock(&bus->mdio_lock);
1286 * @bus: the mii_bus struct
1292 int mdiobus_modify_changed(struct mii_bus *bus, int addr, u32 regnum,
1297 mutex_lock(&bus->mdio_lock);
1298 err = __mdiobus_modify_changed(bus, addr, regnum, mask, set);
1299 mutex_unlock(&bus->mdio_lock);
1308 * @bus: the mii_bus struct
1315 int mdiobus_c45_modify_changed(struct mii_bus *bus, int addr, int devad,
1320 mutex_lock(&bus->mdio_lock);
1321 err = __mdiobus_c45_modify_changed(bus, addr, devad, regnum, mask, set);
1322 mutex_unlock(&bus->mdio_lock);
1421 MODULE_DESCRIPTION("MDIO bus/device layer");