Hi York, > 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.
Datasheet is not so easily accessible. > > > > I suggest only to enable the parts you can confirm on hardware, > datasheet, or from the source code (where the page register is used). Then this code will be enabled at: 88E1111, 88E1145, and 88E151x (which I can test). > > York Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot