int mdiobus_detect(struct device_d *dev) { struct mii_bus *mii = to_mii_bus(dev); int i, ret; for (i = 0; i < PHY_MAX_ADDR; i++) { struct phy_device *phydev; phydev = mdiobus_scan(mii, i); if (IS_ERR(phydev)) continue; if (phydev->registered) continue; ret = phy_register_device(phydev); if (ret) dev_err(dev, "failed to register phy: %s\n", strerror(-ret)); dev_info(dev, "registered phy as /dev/%s\n", phydev->cdev.name); } return 0; }
static int reg_write(struct dsa_switch *ds, int addr, int reg, u16 val) { return mdiobus_write(to_mii_bus(ds->master_dev), ds->pd->sw_addr + addr, reg, val); }
static int reg_read(struct dsa_switch *ds, int addr, int reg) { return mdiobus_read(to_mii_bus(ds->master_dev), ds->pd->sw_addr + addr, reg); }