> +static int an8855_config_init(struct phy_device *phydev) > +{ > + struct air_an8855_priv *priv = phydev->priv; > + int ret; > + > + /* Enable HW auto downshift */ > + ret = phy_write(phydev, AN8855_PHY_PAGE_CTRL, AN8855_PHY_EXT_PAGE); > + if (ret) > + return ret; > + ret = phy_set_bits(phydev, AN8855_PHY_EXT_REG_14, > + AN8855_PHY_EN_DOWN_SHFIT); > + if (ret) > + return ret; > + ret = phy_write(phydev, AN8855_PHY_PAGE_CTRL, AN8855_PHY_NORMAL_PAGE); > + if (ret) > + return ret; There are locking issues here, which is why we have the helpers phy_select_page() and phy_restore_page(). The air_en8811h.c gets this right. Is there anything in common with the en8811h? Does it also support downshift? Can its LED code be used here? Andrew