On 10/27/2017 08:23 AM, Lukasz Majewski wrote: > On Fri, 27 Oct 2017 15:06:37 +0000 > York Sun <york....@nxp.com> wrote: > >> On 10/27/2017 02:12 AM, Lukasz Majewski wrote: >>> This commit allows extended Marvell registers to be read with: >>> >>> foo > mdio rx FEC 3.10 >>> Reading from bus FEC >>> PHY at address 0: >>> 3.16 - 0x1063 >>> foo > mdio wx FEC 3.10 0x1011 >>> >>> The above code changes the way ETH connector LEDs blink. >>> >>> Signed-off-by: Lukasz Majewski <lu...@denx.de> >>> >>> --- >>> >>> Changes in v2: >>> - Provide the readext and writeext callbacks to other marvell ETH >>> PHY devices >>> >>> drivers/net/phy/marvell.c | 47 >>> +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 >>> insertions(+) >>> >>> diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c >>> index b7f300e..19f451d 100644 >>> --- a/drivers/net/phy/marvell.c >>> +++ b/drivers/net/phy/marvell.c >>> @@ -104,6 +104,31 @@ >>> #define MIIM_88E151x_MODE_SGMII 1 >>> #define MIIM_88E151x_RESET_OFFS 15 >>> >>> +static int m88e1xxx_phy_extread(struct phy_device *phydev, int >>> addr, >>> + int devaddr, int regnum) >>> +{ >>> + int oldpage = phy_read(phydev, MDIO_DEVAD_NONE, >>> MII_MARVELL_PHY_PAGE); >>> + int val; >>> + >>> + phy_write(phydev, MDIO_DEVAD_NONE, MII_MARVELL_PHY_PAGE, >>> devaddr);
For register 30 and 31, the page register is 29, not 22. >>> + val = phy_read(phydev, MDIO_DEVAD_NONE, regnum); >>> + phy_write(phydev, MDIO_DEVAD_NONE, MII_MARVELL_PHY_PAGE, >>> oldpage); + >>> + return val; >>> +} >>> + >>> +static int m88e1xxx_phy_extwrite(struct phy_device *phydev, int >>> addr, >>> + int devaddr, int regnum, u16 val) >>> +{ >>> + int oldpage = phy_read(phydev, MDIO_DEVAD_NONE, >>> MII_MARVELL_PHY_PAGE); + >>> + phy_write(phydev, MDIO_DEVAD_NONE, MII_MARVELL_PHY_PAGE, >>> devaddr); >>> + phy_write(phydev, MDIO_DEVAD_NONE, regnum, val); >>> + phy_write(phydev, MDIO_DEVAD_NONE, MII_MARVELL_PHY_PAGE, >>> oldpage); + >>> + return 0; >>> +} >>> + >>> /* Marvell 88E1011S */ >>> static int m88e1011s_config(struct phy_device *phydev) >>> { >>> @@ -599,6 +624,8 @@ static struct phy_driver M88E1011S_driver = { >>> .config = &m88e1011s_config, >>> .startup = &m88e1011s_startup, >>> .shutdown = &genphy_shutdown, >>> + .readext = &m88e1xxx_phy_extread, >>> + .writeext = &m88e1xxx_phy_extwrite, >>> }; >>> >> >> Lukasz, >> >> This seems wrong. 88E1011S doesn't have the page register. > > Ok. I will remove this one from v3. > >> I can only >> confirm 88E1111 and 88E1145 have pages. > > I do know that it works on 88E151x > > The 88E1318 and 88E1618 seems to be unknown. > >> I don't have other part's >> datasheet to check. > I suggest only to enable the parts you can confirm on hardware, datasheet, or from the source code (where the page register is used). York _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot