> +static int an8855_mii_set_page(struct an8855_mfd_priv *priv, u8 phy_id, phy_id is a bit of an odd name. __mdiobus_write() expects addr, since at this level, it is just a device on a bus. We have no idea if it is a PHY, or an Ethernet switch, or anything else. > + u8 page) __must_hold(&priv->bus->mdio_lock) > +{ > + struct mii_bus *bus = priv->bus; > + int ret; > + > + ret = __mdiobus_write(bus, phy_id, AN8855_PHY_SELECT_PAGE, page); > + if (ret < 0) > + dev_err_ratelimited(&bus->dev, > + "failed to set an8855 mii page\n"); > + > + /* Cache current page if next mii read/write is for switch */ > + priv->current_page = page; > + return ret < 0 ? ret : 0; __mdiobus_write() should only return -ve error code, or 0. So you don't need this. Andrew