> +static int hclge_set_led_status_phy(struct phy_device *phydev, int value) > +{ > + int ret, cur_page; > + > + mutex_lock(&phydev->lock); > + > + ret = phy_read(phydev, HCLGE_PHY_PAGE_REG); > + if (ret < 0) > + goto out; > + else > + cur_page = ret; > + > + ret = phy_write(phydev, HCLGE_PHY_PAGE_REG, HCLGE_PHY_PAGE_LED); > + if (ret) > + goto out; > + > + ret = phy_write(phydev, HCLGE_LED_FC_REG, value); > + if (ret) > + goto out; > + > + ret = phy_write(phydev, HCLGE_PHY_PAGE_REG, cur_page); > + > +out: > + mutex_unlock(&phydev->lock); > + return ret; > +}
Sorry, but NACK. Please add an interface to phylib and the phy driver you are using to do this. > #define HCLGE_PHY_PAGE_MDIX 0 > #define HCLGE_PHY_PAGE_COPPER 0 > +#define HCLGE_PHY_PAGE_LED 3 > > /* Page Selection Reg. */ > #define HCLGE_PHY_PAGE_REG 22 > @@ -73,6 +74,15 @@ > /* Copper Specific Status Register */ > #define HCLGE_PHY_CSS_REG 17 > > +/* LED Function Control Register */ > +#define HCLGE_LED_FC_REG 16 > + > +/* LED Polarity Control Register */ > +#define HCLGE_LED_PC_REG 17 > + > +#define HCLGE_LED_FORCE_ON 9 > +#define HCLGE_LED_FORCE_OFF 8 > + By the looks of these defines, you assume you have a Marvell PHY. Please make this generic so anybody with a Marvell PHY can use it. Andrew