> > > + > > + return 0; > > +} > > + > > +static void an8855_pcs_an_restart(struct phylink_pcs *pcs) > > +{ > > + struct an8855_priv *priv = container_of(pcs, struct an8855_priv, pcs); > > + > > + regmap_set_bits(priv->regmap, AN8855_SGMII_REG_AN0, > > + AN8855_SGMII_AN_RESTART); > > Again, looks like a standard PHY BMCR. > > I haven't done a full review, but these are just what I've spotted so > far. > Thanks a lot for the initial review, I will check the EEE part better. Again the big problem is the PCS setup with all that nightmares values... The Documentation is empty (only AN value are there) and the values from the SDK by compacting the sgmii(inband and forced)/hsgmii in one single code by checking all the common piece. This if why you have all those if condition and all... They comes from compacting the functions, that part of code is still a blackbox more or less currently... -- Ansuel