Hi York, I guess with Andy no longer there as FSL u-boot maintainer, will the patch below go through you or Joe. If no one has an objection to this patch, can I get a Acked-by and can we queue it up for upstream. Regards, Bhupesh
> -----Original Message----- > From: Sharma Bhupesh-B45370 > Sent: Tuesday, July 23, 2013 2:00 PM > To: u-boot@lists.denx.de; Fleming Andy-AFLEMING; > joe.hershber...@gmail.com > Cc: Sharma Bhupesh-B45370 > Subject: RE: [PATCH 1/1] net: phy/realtek: Add support for RTL8211DN and > RTL8211E phy modules > > Hi Andy, Joe, > > > This patch adds support for Realtek PHY modules RTL8211DN and RTL8211E > > (variants: RTL8211E-VB-CG, RTL8211E-VL-CG, RTL8211EG-VB-CG), which can > > be found on Freescale's T1040RDB boards. > > > > To make the driver more generic across 8211 family, a generic name > > 8211x is added for macros and function names. > > > > Signed-off-by: Bhupesh Sharma <bhupesh.sha...@freescale.com> > > Can you please review this patch and let me know if these changes seem > suitable to you. > > Thanks for your help. > Regards, > Bhupesh > > > --- > > drivers/net/phy/realtek.c | 77 > > +++++++++++++++++++++++++++++++---------- > > ------ > > 1 file changed, 51 insertions(+), 26 deletions(-) > > > > diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c > > index > > b7e2753..b971456 100644 > > --- a/drivers/net/phy/realtek.c > > +++ b/drivers/net/phy/realtek.c > > @@ -26,18 +26,18 @@ > > > > #define PHY_AUTONEGOTIATE_TIMEOUT 5000 > > > > -/* RTL8211B PHY Status Register */ > > -#define MIIM_RTL8211B_PHY_STATUS 0x11 > > -#define MIIM_RTL8211B_PHYSTAT_SPEED 0xc000 > > -#define MIIM_RTL8211B_PHYSTAT_GBIT 0x8000 > > -#define MIIM_RTL8211B_PHYSTAT_100 0x4000 > > -#define MIIM_RTL8211B_PHYSTAT_DUPLEX 0x2000 > > -#define MIIM_RTL8211B_PHYSTAT_SPDDONE 0x0800 > > -#define MIIM_RTL8211B_PHYSTAT_LINK 0x0400 > > - > > - > > -/* RealTek RTL8211B */ > > -static int rtl8211b_config(struct phy_device *phydev) > > +/* RTL8211x PHY Status Register */ > > +#define MIIM_RTL8211x_PHY_STATUS 0x11 > > +#define MIIM_RTL8211x_PHYSTAT_SPEED 0xc000 > > +#define MIIM_RTL8211x_PHYSTAT_GBIT 0x8000 > > +#define MIIM_RTL8211x_PHYSTAT_100 0x4000 > > +#define MIIM_RTL8211x_PHYSTAT_DUPLEX 0x2000 > > +#define MIIM_RTL8211x_PHYSTAT_SPDDONE 0x0800 > > +#define MIIM_RTL8211x_PHYSTAT_LINK 0x0400 > > + > > + > > +/* RealTek RTL8211x */ > > +static int rtl8211x_config(struct phy_device *phydev) > > { > > phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET); > > > > @@ -46,20 +46,20 @@ static int rtl8211b_config(struct phy_device > *phydev) > > return 0; > > } > > > > -static int rtl8211b_parse_status(struct phy_device *phydev) > > +static int rtl8211x_parse_status(struct phy_device *phydev) > > { > > unsigned int speed; > > unsigned int mii_reg; > > > > - mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, > > MIIM_RTL8211B_PHY_STATUS); > > + mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, > > MIIM_RTL8211x_PHY_STATUS); > > > > - if (!(mii_reg & MIIM_RTL8211B_PHYSTAT_SPDDONE)) { > > + if (!(mii_reg & MIIM_RTL8211x_PHYSTAT_SPDDONE)) { > > int i = 0; > > > > /* in case of timeout ->link is cleared */ > > phydev->link = 1; > > puts("Waiting for PHY realtime link"); > > - while (!(mii_reg & MIIM_RTL8211B_PHYSTAT_SPDDONE)) { > > + while (!(mii_reg & MIIM_RTL8211x_PHYSTAT_SPDDONE)) { > > /* Timeout reached ? */ > > if (i > PHY_AUTONEGOTIATE_TIMEOUT) { > > puts(" TIMEOUT !\n"); > > @@ -71,29 +71,29 @@ static int rtl8211b_parse_status(struct phy_device > > *phydev) > > putc('.'); > > udelay(1000); /* 1 ms */ > > mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, > > - MIIM_RTL8211B_PHY_STATUS); > > + MIIM_RTL8211x_PHY_STATUS); > > } > > puts(" done\n"); > > udelay(500000); /* another 500 ms (results in faster > > booting) */ > > } else { > > - if (mii_reg & MIIM_RTL8211B_PHYSTAT_LINK) > > + if (mii_reg & MIIM_RTL8211x_PHYSTAT_LINK) > > phydev->link = 1; > > else > > phydev->link = 0; > > } > > > > - if (mii_reg & MIIM_RTL8211B_PHYSTAT_DUPLEX) > > + if (mii_reg & MIIM_RTL8211x_PHYSTAT_DUPLEX) > > phydev->duplex = DUPLEX_FULL; > > else > > phydev->duplex = DUPLEX_HALF; > > > > - speed = (mii_reg & MIIM_RTL8211B_PHYSTAT_SPEED); > > + speed = (mii_reg & MIIM_RTL8211x_PHYSTAT_SPEED); > > > > switch (speed) { > > - case MIIM_RTL8211B_PHYSTAT_GBIT: > > + case MIIM_RTL8211x_PHYSTAT_GBIT: > > phydev->speed = SPEED_1000; > > break; > > - case MIIM_RTL8211B_PHYSTAT_100: > > + case MIIM_RTL8211x_PHYSTAT_100: > > phydev->speed = SPEED_100; > > break; > > default: > > @@ -103,28 +103,53 @@ static int rtl8211b_parse_status(struct > > phy_device > > *phydev) > > return 0; > > } > > > > -static int rtl8211b_startup(struct phy_device *phydev) > > +static int rtl8211x_startup(struct phy_device *phydev) > > { > > /* Read the Status (2x to make sure link is right) */ > > genphy_update_link(phydev); > > - rtl8211b_parse_status(phydev); > > + rtl8211x_parse_status(phydev); > > > > return 0; > > } > > > > +/* Support for RTL8211B PHY */ > > static struct phy_driver RTL8211B_driver = { > > .name = "RealTek RTL8211B", > > .uid = 0x1cc910, > > .mask = 0xfffff0, > > .features = PHY_GBIT_FEATURES, > > - .config = &rtl8211b_config, > > - .startup = &rtl8211b_startup, > > + .config = &rtl8211x_config, > > + .startup = &rtl8211x_startup, > > + .shutdown = &genphy_shutdown, > > +}; > > + > > +/* Support for RTL8211E-VB-CG, RTL8211E-VL-CG and RTL8211EG-VB-CG > > +PHYs */ static struct phy_driver RTL8211E_driver = { > > + .name = "RealTek RTL8211E", > > + .uid = 0x1cc915, > > + .mask = 0xfffff0, > > + .features = PHY_GBIT_FEATURES, > > + .config = &rtl8211x_config, > > + .startup = &rtl8211x_startup, > > + .shutdown = &genphy_shutdown, > > +}; > > + > > +/* Support for RTL8211DN PHY */ > > +static struct phy_driver RTL8211DN_driver = { > > + .name = "RealTek RTL8211DN", > > + .uid = 0x1cc914, > > + .mask = 0xfffff0, > > + .features = PHY_GBIT_FEATURES, > > + .config = &rtl8211x_config, > > + .startup = &rtl8211x_startup, > > .shutdown = &genphy_shutdown, > > }; > > > > int phy_realtek_init(void) > > { > > phy_register(&RTL8211B_driver); > > + phy_register(&RTL8211E_driver); > > + phy_register(&RTL8211DN_driver); > > > > return 0; > > } > > -- > > 1.7.11.7 > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot