On Thu, Jul 09, 2020 at 11:35:22PM +0200, Michael Walle wrote: > This is a resend [now a new v6] of the series because the conversion to the > phylink interface will likely take longer: > https://lore.kernel.org/netdev/CA+h21hpBodyY8CtNH2ktRdc2FqPi=Fjp94=vvzvzsvbnvnf...@mail.gmail.com/ > Also the discussion in the v3 resend doesn't look like it will be resolved > soon :/ > https://lore.kernel.org/netdev/20200701213433.9217-1-mich...@walle.cc/ > > Unfortunately, we have boards in the wild with a bootloader which doesn't > set the PCS up correctly. Thus I'd really see this patches picked up as an > intermediate step until the phylink conversion is ready. Vladimir Oltean > already offered to convert enetc to phylink when he converts the felix to > phylink. After this series the PCS setup of the enetc looks almost the same > as the current felix setup. Thus conversion should be easy. > > These patches were picked from the following series: > https://lore.kernel.org/netdev/1567779344-30965-1-git-send-email-claudiu.man...@nxp.com/ > They have never been resent. I've picked them up, addressed Andrews > comments, fixed some more bugs and asked Claudiu if I can keep their SOB > tags; he agreed. I've tested this on our board which happens to have a > bootloader which doesn't do the enetc setup in all cases. Though, only > SGMII mode was tested. > > changes since v5: > - fixed pcs->autoneg_complete and pcs->link assignment. Thanks Vladimir. > > changes since v4: > - moved (and renamed) the USXGMII constants to include/uapi/linux/mdio.h. > Suggested by Russell King. > > changes since v3: > - rebased to latest net-next where devm_mdiobus_free() was removed. > replace it by mdiobus_free(). The internal MDIO bus is optional, if > there is any error, we try to run with the bootloader default PCS > settings, thus in the error case, we need to free the mdiobus. > > changes since v2: > - removed SOBs from "net: enetc: Initialize SerDes for SGMII and USXGMII > protocols" because almost everything has changed. > - get a phy_device for the internal PCS PHY so we can use the phy_ > functions instead of raw mdiobus writes > - reuse macros already defined in fsl_mdio.h, move missing bits from > felix to fsl_mdio.h, because they share the same PCS PHY building > block > - added 2500BaseX mode (based on felix init routine) > - changed xgmii mode to usxgmii mode, because it is actually USXGMII and > felix does the same. > - fixed devad, which is 0x1f (MMD_VEND2) > > changes since v1: > - mdiobus id is '"imdio-%s", dev_name(dev)' because the plain dev_name() > is used by the emdio. > - use mdiobus_write() instead of imdio->write(imdio, ..), since this is > already a full featured mdiobus > - set phy_mask to ~0 to avoid scanning the bus > - use phy_interface_mode_is_rgmii(phy_mode) to also include the RGMII > modes with pad delays. > - move enetc_imdio_init() to enetc_pf.c, there shouldn't be any other > users, should it? > - renamed serdes to SerDes > - printing the error code of mdiobus_register() in the error path > - call mdiobus_unregister() on _remove() > - call devm_mdiobus_free() if mdiobus_register() fails, since an > error is not fatal > > Alex Marginean (1): > net: enetc: Use DT protocol information to set up the ports > > Michael Walle (3): > net: phy: add USXGMII link partner ability constants > net: dsa: felix: (re)use already existing constants > net: enetc: Initialize SerDes for SGMII and USXGMII protocols > > drivers/net/dsa/ocelot/felix_vsc9959.c | 45 ++--- > .../net/ethernet/freescale/enetc/enetc_hw.h | 3 + > .../net/ethernet/freescale/enetc/enetc_pf.c | 188 +++++++++++++++--- > .../net/ethernet/freescale/enetc/enetc_pf.h | 5 + > include/uapi/linux/mdio.h | 26 +++ > 5 files changed, 210 insertions(+), 57 deletions(-) > > -- > 2.20.1 >
I plan to give this series a go on an LS1028A-QDS later today to make sure there are no regressions. Thanks, -Vladimir