* [patch 1/1] phy/marvell: fix 88e1121 support [not found] <20101018214401.053486146@rtp-net.org> @ 2010-10-18 21:44 ` Arnaud Patard 2010-10-18 22:02 ` Cyril Chemparathy 0 siblings, 1 reply; 7+ messages in thread From: Arnaud Patard @ 2010-10-18 21:44 UTC (permalink / raw) To: netdev; +Cc: David S. Miller, Cyril Chemparathy [-- Attachment #1: phy_marvell_fix_modes.patch --] [-- Type: text/plain, Size: 1278 bytes --] Commit c477d0447db08068a497e7beb892b2b2a7bff64b added support for RGMII rx/tx delays except that it ends up clearing rx/tx delays bit for modes differents that RGMII*ID. Due to this, ethernet is not working anymore on my guruplug server +. This patch is fixing that. Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> Index: linux-2.6/drivers/net/phy/marvell.c =================================================================== --- linux-2.6.orig/drivers/net/phy/marvell.c 2010-10-18 22:46:09.000000000 +0200 +++ linux-2.6/drivers/net/phy/marvell.c 2010-10-18 23:19:14.000000000 +0200 @@ -199,13 +199,13 @@ mscr = phy_read(phydev, MII_88E1121_PHY_MSCR_REG) & MII_88E1121_PHY_MSCR_DELAY_MASK; - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) - mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | - MII_88E1121_PHY_MSCR_TX_DELAY); - else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) mscr |= MII_88E1121_PHY_MSCR_RX_DELAY; else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) mscr |= MII_88E1121_PHY_MSCR_TX_DELAY; + else + mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | + MII_88E1121_PHY_MSCR_TX_DELAY); err = phy_write(phydev, MII_88E1121_PHY_MSCR_REG, mscr); if (err < 0) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [patch 1/1] phy/marvell: fix 88e1121 support 2010-10-18 21:44 ` [patch 1/1] phy/marvell: fix 88e1121 support Arnaud Patard @ 2010-10-18 22:02 ` Cyril Chemparathy 2010-10-18 22:29 ` [patch 0/1] " Arnaud Patard 0 siblings, 1 reply; 7+ messages in thread From: Cyril Chemparathy @ 2010-10-18 22:02 UTC (permalink / raw) To: Arnaud Patard; +Cc: netdev@vger.kernel.org, David S. Miller Hi, On 10/18/2010 05:44 PM, Arnaud Patard wrote: > Commit c477d0447db08068a497e7beb892b2b2a7bff64b added support for RGMII > rx/tx delays except that it ends up clearing rx/tx delays bit for modes > differents that RGMII*ID. Due to this, ethernet is not working anymore > on my guruplug server +. This patch is fixing that. > > Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> > Index: linux-2.6/drivers/net/phy/marvell.c > =================================================================== > --- linux-2.6.orig/drivers/net/phy/marvell.c 2010-10-18 22:46:09.000000000 +0200 > +++ linux-2.6/drivers/net/phy/marvell.c 2010-10-18 23:19:14.000000000 +0200 > @@ -199,13 +199,13 @@ > mscr = phy_read(phydev, MII_88E1121_PHY_MSCR_REG) & > MII_88E1121_PHY_MSCR_DELAY_MASK; > > - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) > - mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | > - MII_88E1121_PHY_MSCR_TX_DELAY); > - else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) > + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) > mscr |= MII_88E1121_PHY_MSCR_RX_DELAY; > else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) > mscr |= MII_88E1121_PHY_MSCR_TX_DELAY; > + else > + mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | > + MII_88E1121_PHY_MSCR_TX_DELAY); > > err = phy_write(phydev, MII_88E1121_PHY_MSCR_REG, mscr); > if (err < 0) This doesn't look right. This change makes it impossible to configure the phy without interface delays, i.e., PHY_INTERFACE_MODE_RGMII ends up behaving the same as PHY_INTERFACE_MODE_RGMII_ID. I think the correct fix would be to modify guruplug's interface mode to PHY_INTERFACE_MODE_RGMII_ID if both TX and RX side delays are desired. Regards Cyril. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [patch 0/1] Re: [patch 1/1] phy/marvell: fix 88e1121 support 2010-10-18 22:02 ` Cyril Chemparathy @ 2010-10-18 22:29 ` Arnaud Patard 2010-10-18 22:29 ` Arnaud Patard 0 siblings, 1 reply; 7+ messages in thread From: Arnaud Patard @ 2010-10-18 22:29 UTC (permalink / raw) To: netdev; +Cc: David S. Miller, Cyril Chemparathy >> @@ -199,13 +199,13 @@ >> mscr = phy_read(phydev, MII_88E1121_PHY_MSCR_REG) & >> MII_88E1121_PHY_MSCR_DELAY_MASK; >> >> - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) >> - mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | >> - MII_88E1121_PHY_MSCR_TX_DELAY); >> - else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) >> + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) >> mscr |= MII_88E1121_PHY_MSCR_RX_DELAY; >> else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) >> mscr |= MII_88E1121_PHY_MSCR_TX_DELAY; >> + else >> + mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | >> + MII_88E1121_PHY_MSCR_TX_DELAY); >> >> err = phy_write(phydev, MII_88E1121_PHY_MSCR_REG, mscr); >> if (err < 0) > > This doesn't look right. This change makes it impossible to configure > the phy without interface delays, i.e., PHY_INTERFACE_MODE_RGMII ends up > behaving the same as PHY_INTERFACE_MODE_RGMII_ID. > ok. The other possibility is to modify the MII_88E1121_PHY_MSCR_REG regs only in RGMII_* case like for the 88e1111 case imho. I'm sending a patch doing that right now. Regards, Arnaud ^ permalink raw reply [flat|nested] 7+ messages in thread
* [patch 1/1] phy/marvell: fix 88e1121 support 2010-10-18 22:29 ` [patch 0/1] " Arnaud Patard @ 2010-10-18 22:29 ` Arnaud Patard 2010-10-19 10:52 ` Cyril Chemparathy 2010-10-21 11:00 ` David Miller 0 siblings, 2 replies; 7+ messages in thread From: Arnaud Patard @ 2010-10-18 22:29 UTC (permalink / raw) To: netdev; +Cc: David S. Miller, Cyril Chemparathy, Arnaud Patard [-- Attachment #1: phy_marvell_fix_modes.patch --] [-- Type: text/plain, Size: 2052 bytes --] Commit c477d0447db08068a497e7beb892b2b2a7bff64b added support for RGMII rx/tx delays except that it ends up clearing rx/tx delays bit for modes differents that RGMII*ID. Due to this, ethernet is not working anymore on my guruplug server +. This patch is fixing that. Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> Index: linux-2.6/drivers/net/phy/marvell.c =================================================================== --- linux-2.6.orig/drivers/net/phy/marvell.c 2010-10-18 22:46:09.000000000 +0200 +++ linux-2.6/drivers/net/phy/marvell.c 2010-10-19 00:20:22.000000000 +0200 @@ -196,20 +196,27 @@ MII_88E1121_PHY_MSCR_PAGE); if (err < 0) return err; - mscr = phy_read(phydev, MII_88E1121_PHY_MSCR_REG) & - MII_88E1121_PHY_MSCR_DELAY_MASK; - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) - mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | - MII_88E1121_PHY_MSCR_TX_DELAY); - else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) - mscr |= MII_88E1121_PHY_MSCR_RX_DELAY; - else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) - mscr |= MII_88E1121_PHY_MSCR_TX_DELAY; + if ((phydev->interface == PHY_INTERFACE_MODE_RGMII) || + (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) || + (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) || + (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID)) { - err = phy_write(phydev, MII_88E1121_PHY_MSCR_REG, mscr); - if (err < 0) - return err; + mscr = phy_read(phydev, MII_88E1121_PHY_MSCR_REG) & + MII_88E1121_PHY_MSCR_DELAY_MASK; + + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) + mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | + MII_88E1121_PHY_MSCR_TX_DELAY); + else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) + mscr |= MII_88E1121_PHY_MSCR_RX_DELAY; + else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) + mscr |= MII_88E1121_PHY_MSCR_TX_DELAY; + + err = phy_write(phydev, MII_88E1121_PHY_MSCR_REG, mscr); + if (err < 0) + return err; + } phy_write(phydev, MII_88E1121_PHY_PAGE, oldpage); ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [patch 1/1] phy/marvell: fix 88e1121 support 2010-10-18 22:29 ` Arnaud Patard @ 2010-10-19 10:52 ` Cyril Chemparathy 2010-10-19 11:49 ` Arnaud Patard 2010-10-21 11:00 ` David Miller 1 sibling, 1 reply; 7+ messages in thread From: Cyril Chemparathy @ 2010-10-19 10:52 UTC (permalink / raw) To: Arnaud Patard; +Cc: netdev@vger.kernel.org, David S. Miller Hi Arnaud, On 10/18/2010 06:29 PM, Arnaud Patard wrote: > Commit c477d0447db08068a497e7beb892b2b2a7bff64b added support for RGMII > rx/tx delays except that it ends up clearing rx/tx delays bit for modes > differents that RGMII*ID. Due to this, ethernet is not working anymore > on my guruplug server +. This patch is fixing that. > > Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> > Index: linux-2.6/drivers/net/phy/marvell.c > =================================================================== > --- linux-2.6.orig/drivers/net/phy/marvell.c 2010-10-18 22:46:09.000000000 +0200 > +++ linux-2.6/drivers/net/phy/marvell.c 2010-10-19 00:20:22.000000000 +0200 > @@ -196,20 +196,27 @@ > MII_88E1121_PHY_MSCR_PAGE); > if (err < 0) > return err; > - mscr = phy_read(phydev, MII_88E1121_PHY_MSCR_REG) & > - MII_88E1121_PHY_MSCR_DELAY_MASK; > > - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) > - mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | > - MII_88E1121_PHY_MSCR_TX_DELAY); > - else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) > - mscr |= MII_88E1121_PHY_MSCR_RX_DELAY; > - else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) > - mscr |= MII_88E1121_PHY_MSCR_TX_DELAY; > + if ((phydev->interface == PHY_INTERFACE_MODE_RGMII) || > + (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) || > + (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) || > + (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID)) { > > - err = phy_write(phydev, MII_88E1121_PHY_MSCR_REG, mscr); > - if (err < 0) > - return err; > + mscr = phy_read(phydev, MII_88E1121_PHY_MSCR_REG) & > + MII_88E1121_PHY_MSCR_DELAY_MASK; > + > + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) > + mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | > + MII_88E1121_PHY_MSCR_TX_DELAY); > + else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) > + mscr |= MII_88E1121_PHY_MSCR_RX_DELAY; > + else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) > + mscr |= MII_88E1121_PHY_MSCR_TX_DELAY; > + > + err = phy_write(phydev, MII_88E1121_PHY_MSCR_REG, mscr); > + if (err < 0) > + return err; > + } > > phy_write(phydev, MII_88E1121_PHY_PAGE, oldpage); That looks more correct. Just out of curiosity, what is the interface mode on your platform? Thanks Cyril. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [patch 1/1] phy/marvell: fix 88e1121 support 2010-10-19 10:52 ` Cyril Chemparathy @ 2010-10-19 11:49 ` Arnaud Patard 0 siblings, 0 replies; 7+ messages in thread From: Arnaud Patard @ 2010-10-19 11:49 UTC (permalink / raw) To: cyril; +Cc: netdev@vger.kernel.org, David S. Miller Cyril Chemparathy <cyril@ti.com> writes: > Hi Arnaud, Hi, > > On 10/18/2010 06:29 PM, Arnaud Patard wrote: >> Commit c477d0447db08068a497e7beb892b2b2a7bff64b added support for RGMII >> rx/tx delays except that it ends up clearing rx/tx delays bit for modes >> differents that RGMII*ID. Due to this, ethernet is not working anymore >> on my guruplug server +. This patch is fixing that. >> >> Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> >> Index: linux-2.6/drivers/net/phy/marvell.c >> =================================================================== >> --- linux-2.6.orig/drivers/net/phy/marvell.c 2010-10-18 22:46:09.000000000 +0200 >> +++ linux-2.6/drivers/net/phy/marvell.c 2010-10-19 00:20:22.000000000 +0200 >> @@ -196,20 +196,27 @@ >> MII_88E1121_PHY_MSCR_PAGE); >> if (err < 0) >> return err; >> - mscr = phy_read(phydev, MII_88E1121_PHY_MSCR_REG) & >> - MII_88E1121_PHY_MSCR_DELAY_MASK; >> >> - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) >> - mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | >> - MII_88E1121_PHY_MSCR_TX_DELAY); >> - else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) >> - mscr |= MII_88E1121_PHY_MSCR_RX_DELAY; >> - else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) >> - mscr |= MII_88E1121_PHY_MSCR_TX_DELAY; >> + if ((phydev->interface == PHY_INTERFACE_MODE_RGMII) || >> + (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) || >> + (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) || >> + (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID)) { >> >> - err = phy_write(phydev, MII_88E1121_PHY_MSCR_REG, mscr); >> - if (err < 0) >> - return err; >> + mscr = phy_read(phydev, MII_88E1121_PHY_MSCR_REG) & >> + MII_88E1121_PHY_MSCR_DELAY_MASK; >> + >> + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) >> + mscr |= (MII_88E1121_PHY_MSCR_RX_DELAY | >> + MII_88E1121_PHY_MSCR_TX_DELAY); >> + else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) >> + mscr |= MII_88E1121_PHY_MSCR_RX_DELAY; >> + else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) >> + mscr |= MII_88E1121_PHY_MSCR_TX_DELAY; >> + >> + err = phy_write(phydev, MII_88E1121_PHY_MSCR_REG, mscr); >> + if (err < 0) >> + return err; >> + } >> >> phy_write(phydev, MII_88E1121_PHY_PAGE, oldpage); > > That looks more correct. Just out of curiosity, what is the interface > mode on your platform? The interface is in GMII mode iirc. The device is the ethernet embedded in the Kirkwood SoC with a 88e1121 phy connected. It's handled by the mv643xx_eth driver and the marvell phy driver. Arnaud ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [patch 1/1] phy/marvell: fix 88e1121 support 2010-10-18 22:29 ` Arnaud Patard 2010-10-19 10:52 ` Cyril Chemparathy @ 2010-10-21 11:00 ` David Miller 1 sibling, 0 replies; 7+ messages in thread From: David Miller @ 2010-10-21 11:00 UTC (permalink / raw) To: arnaud.patard; +Cc: netdev, cyril From: Arnaud Patard (Rtp) <arnaud.patard@rtp-net.org> Date: Tue, 19 Oct 2010 00:29:48 +0200 > Commit c477d0447db08068a497e7beb892b2b2a7bff64b added support for RGMII > rx/tx delays except that it ends up clearing rx/tx delays bit for modes > differents that RGMII*ID. Due to this, ethernet is not working anymore > on my guruplug server +. This patch is fixing that. > > Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> Applied, thanks. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2010-10-21 10:59 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20101018214401.053486146@rtp-net.org> 2010-10-18 21:44 ` [patch 1/1] phy/marvell: fix 88e1121 support Arnaud Patard 2010-10-18 22:02 ` Cyril Chemparathy 2010-10-18 22:29 ` [patch 0/1] " Arnaud Patard 2010-10-18 22:29 ` Arnaud Patard 2010-10-19 10:52 ` Cyril Chemparathy 2010-10-19 11:49 ` Arnaud Patard 2010-10-21 11:00 ` David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).