Message ID | 1319144425-15547-12-git-send-email-Kyle.D.Moffett@boeing.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
Hi, 2011/10/21 6:00, Kyle Moffett wrote: > The PHY is already reset during driver probing, and this manual reset > afterwards will wipe out board-specific PHY fixups and driver-specific > phy->drv->config_init() register tweaks. Thank you for your patch. I think so. However, the patch cannot work correctly on my environment. > Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com> > --- > drivers/net/sh_eth.c | 19 +------------------ > 1 files changed, 1 insertions(+), 18 deletions(-) > > diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c > index 1c1666e..7ef4378 100644 > --- a/drivers/net/sh_eth.c > +++ b/drivers/net/sh_eth.c > @@ -1235,23 +1235,6 @@ static int sh_eth_phy_init(struct net_device *ndev) > return 0; > } > > -/* PHY control start function */ > -static int sh_eth_phy_start(struct net_device *ndev) > -{ > - struct sh_eth_private *mdp = netdev_priv(ndev); > - int ret; > - > - ret = sh_eth_phy_init(ndev); > - if (ret) > - return ret; > - > - /* reset phy - this also wakes it from PDOWN */ > - phy_write(mdp->phydev, MII_BMCR, BMCR_RESET); > - phy_start(mdp->phydev); I think that the driver needs the phy_start(). So, I removed the phy_write() only. Then, the driver could work correctly. Therefore, I would to remove the following code only. Do you think about this? > - /* reset phy - this also wakes it from PDOWN */ > - phy_write(mdp->phydev, MII_BMCR, BMCR_RESET); Thanks, Yoshihiro Shimoda -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Oct 25, 2011, at 07:11, Yoshihiro Shimoda wrote: > 2011/10/21 6:00, Kyle Moffett wrote: >> Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com> >> --- >> drivers/net/sh_eth.c | 19 +------------------ >> 1 files changed, 1 insertions(+), 18 deletions(-) >> >> diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c >> index 1c1666e..7ef4378 100644 >> --- a/drivers/net/sh_eth.c >> +++ b/drivers/net/sh_eth.c >> @@ -1235,23 +1235,6 @@ static int sh_eth_phy_init(struct net_device *ndev) >> return 0; >> } >> >> -/* PHY control start function */ >> -static int sh_eth_phy_start(struct net_device *ndev) >> -{ >> - struct sh_eth_private *mdp = netdev_priv(ndev); >> - int ret; >> - >> - ret = sh_eth_phy_init(ndev); >> - if (ret) >> - return ret; >> - >> - /* reset phy - this also wakes it from PDOWN */ >> - phy_write(mdp->phydev, MII_BMCR, BMCR_RESET); >> - phy_start(mdp->phydev); > > I think that the driver needs the phy_start(). > So, I removed the phy_write() only. Then, the driver could work correctly. > > Therefore, I would to remove the following code only. > Do you think about this? > >> - /* reset phy - this also wakes it from PDOWN */ >> - phy_write(mdp->phydev, MII_BMCR, BMCR_RESET); You're right, sorry about that. I think I mis-merged this when I rebased from a much earlier commit. The simple removal of the BMCR_RESET write should achieve what I was intending. Cheers, Kyle Moffett -- Curious about my work on the Debian powerpcspe port? I'm keeping a blog here: http://pureperl.blogspot.com/ -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c index 1c1666e..7ef4378 100644 --- a/drivers/net/sh_eth.c +++ b/drivers/net/sh_eth.c @@ -1235,23 +1235,6 @@ static int sh_eth_phy_init(struct net_device *ndev) return 0; } -/* PHY control start function */ -static int sh_eth_phy_start(struct net_device *ndev) -{ - struct sh_eth_private *mdp = netdev_priv(ndev); - int ret; - - ret = sh_eth_phy_init(ndev); - if (ret) - return ret; - - /* reset phy - this also wakes it from PDOWN */ - phy_write(mdp->phydev, MII_BMCR, BMCR_RESET); - phy_start(mdp->phydev); - - return 0; -} - static int sh_eth_get_settings(struct net_device *ndev, struct ethtool_cmd *ecmd) { @@ -1410,7 +1393,7 @@ static int sh_eth_open(struct net_device *ndev) goto out_free_irq; /* PHY control start*/ - ret = sh_eth_phy_start(ndev); + ret = sh_eth_phy_init(ndev); if (ret) goto out_free_irq;
The PHY is already reset during driver probing, and this manual reset afterwards will wipe out board-specific PHY fixups and driver-specific phy->drv->config_init() register tweaks. Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com> --- drivers/net/sh_eth.c | 19 +------------------ 1 files changed, 1 insertions(+), 18 deletions(-)