From patchwork Tue Jun 16 20:37:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 242515 List-Id: U-Boot discussion From: olteanv at gmail.com (Vladimir Oltean) Date: Tue, 16 Jun 2020 23:37:17 +0300 Subject: U-Boot atheros PHY support and cubox ethernet In-Reply-To: <20200616203109.GA24893@bill-the-cat> References: <20200616195505.GA3129@bill-the-cat> <20200616201046.GZ24893@bill-the-cat> <20200616203109.GA24893@bill-the-cat> Message-ID: On Tue, 16 Jun 2020 at 23:31, Tom Rini wrote: > > On Tue, Jun 16, 2020 at 11:21:08PM +0300, Vladimir Oltean wrote: > > On Tue, 16 Jun 2020 at 23:10, Tom Rini wrote: > > > > > > On Tue, Jun 16, 2020 at 10:58:26PM +0300, Vladimir Oltean wrote: > > > > Hi Tom, > > > > > > > > On Tue, 16 Jun 2020 at 22:55, Tom Rini wrote: > > > > > > > > > > Hey all, > > > > > > > > > > In commit 4346df3392c0 ("phy: atheros: Make RGMII Tx delays actually > > > > > configurable for AR8035") we brought in changes to get in to line with > > > > > upstream linux kernel support for this PHY and in turn deal with more > > > > > "driver was wrong, DT was wrong too" changes. Now the problem I have is > > > > > that ethernet on my Hummingboard doesn't work AND as far as I can tell, > > > > > the DTB is correct and saying phy-mode = "rgmii-id" now not "rgmii". It > > > > > also looks to match what's in v5.7 for the kernel. What do I need to do > > > > > here next? Thanks! > > > > > > > > > > -- > > > > > Tom > > > > > > > > Reverting 4346df3392c0 makes your interface work? > > > > > > Yup. > > > > > > > What is the DTS path that your hummingboard uses? > > > > > > Good question. Per board/solidrun/mx6cuboxi/mx6cuboxi.c: > > > /* > > > * This is not a perfect match. Avoid dependency on the DM GPIO driver > > > * needed > > > * for accurate board detection. Hummingboard2 DT is good enough for > > > * U-Boot on > > > * all Hummingboard/Cubox-i platforms. > > > */ > > > so arch/arm/dts/imx6dl-hummingboard2-emmc-som-v15.dts is the base. But > > > the board really is the original hummingboard platform. Thanks! > > > > > > -- > > > Tom > > > > Does it work if you say PHY_INTERFACE_MODE_RGMII_ID here? > > https://gitlab.denx.de/u-boot/u-boot/-/blob/master/drivers/net/fec_mxc.c#L1232 > > No change. And to be clear, I bisect'd the issue down and at that > commit, reverting it fixes ethernet. It doesn't revert cleanly (nor > obviously to me) on master. > > -- > Tom On master, the revert would look like this: The next thing to check is to print the value of phydev->interface there. 7 is PHY_INTERFACE_MODE_RGMII, 8 is PHY_INTERFACE_MODE_RGMII_ID, 9 is PHY_INTERFACE_MODE_RGMII_RXID, 10 is PHY_INTERFACE_MODE_RGMII_TXID, You want it to be 8. Thanks, -Vladimir diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c index 13f7275d1706..5ba639e8119f 100644 --- a/drivers/net/phy/atheros.c +++ b/drivers/net/phy/atheros.c @@ -124,6 +124,7 @@ static int ar8021_config(struct phy_device *phydev) static int ar803x_delay_config(struct phy_device *phydev) { + int regval; int ret; if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID || @@ -138,6 +139,10 @@ static int ar803x_delay_config(struct phy_device *phydev) else ret = ar803x_enable_rx_delay(phydev, false); + phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05); + regval = phy_read(phydev, MDIO_DEVAD_NONE, 0x1e); + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, (regval|0x0100)); + return ret; }