Skip to contentSkip to conversation

phy: atheros: Use ar8035_config for AR8031

PATCH New Fabio Estevam 4 participants 13 messages Jan 5, 2016 – Jan 7, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/3 phy: atheros: Use ar8035_config for AR8031

From: Fabio Estevam <[email protected]>

Commit 08ad9b068afb88 (" ar8031: modify the config func of ar8031 to ar8021_config") selected 'ar8021_config' as the configuration function for AR8031.

The correct would be to use 'ar8035_config' instead as AR8031/AR8035 have the same programming model and even share the same phy driver in the linux kernel: drivers/net/phy/at803x.c.

Tested on a mx6qsabresd and wandboard, which now can work without any PHY setup code in the board files.

---
This is 2016.04 material.

Zhao Qiang, could you please test this on your platform?

Changes since v1:
- None

 drivers/net/phy/atheros.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/phy/atheros.c +1 -1
index d509e30..ba57b1a 100644
@@ -51,7 +51,7 @@ static struct phy_driver AR8031_driver =  {
 	.uid = 0x4dd074,
 	.mask = 0xffffffef,
 	.features = PHY_GBIT_FEATURES,
-	.config = ar8021_config,
+	.config = ar8035_config,
 	.startup = genphy_startup,
 	.shutdown = genphy_shutdown,
 };
Signature · 1 line
1.9.1
#1 lore raw

PATCH v2 2/3 mx6sabresd: Simplify the Ethernet PHY configuration

From: Fabio Estevam <[email protected]>

As per the AR8031 datasheet:

"For a reliable power on reset, suggest to keep asserting the reset low long enough (10ms) to ensure the clock is stable and clock-to-reset 1ms requirement is satisfied."

So do as suggested and also add a 100us delay after deasserting the reset line to guarantee that the PHY ID can be read correctly and the Atheros 8031 PHY driver can be loaded automatically.

This results in a simpler code.

---
This is 2016.04 material.

Changes since v1:
- None

 board/freescale/mx6sabresd/mx6sabresd.c | 36 ++-------------------------------
 1 file changed, 2 insertions(+), 34 deletions(-)
board/freescale/mx6sabresd/mx6sabresd.c +2 -34
index 581c9d5..d20953d 100644
@@ -94,8 +94,9 @@ static void setup_iomux_enet(void)
 
 	/* Reset AR8031 PHY */
 	gpio_direction_output(IMX_GPIO_NR(1, 25) , 0);
-	udelay(500);
+	mdelay(10);
 	gpio_set_value(IMX_GPIO_NR(1, 25), 1);
+	udelay(100);
 }
 
 static iomux_v3_cfg_t const usdhc2_pads[] = {
@@ -340,39 +341,6 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
-int mx6_rgmii_rework(struct phy_device *phydev)
-{
-	unsigned short val;
-
-	/* To enable AR8031 ouput a 125MHz clk from CLK_25M */
-	phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x7);
-	phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 0x8016);
-	phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x4007);
-
-	val = phy_read(phydev, MDIO_DEVAD_NONE, 0xe);
-	val &= 0xffe3;
-	val |= 0x18;
-	phy_write(phydev, MDIO_DEVAD_NONE, 0xe, val);
-
-	/* introduce tx clock delay */
-	phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x5);
-	val = phy_read(phydev, MDIO_DEVAD_NONE, 0x1e);
-	val |= 0x0100;
-	phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, val);
-
-	return 0;
-}
-
-int board_phy_config(struct phy_device *phydev)
-{
-	mx6_rgmii_rework(phydev);
-
-	if (phydev->drv->config)
-		phydev->drv->config(phydev);
-
-	return 0;
-}
-
 #if defined(CONFIG_VIDEO_IPUV3)
 static void disable_lvds(struct display_info_t const *dev)
 {
Signature · 1 line
1.9.1
#2 lore raw

PATCH v2 2/3 mx6sabresd: Simplify the Ethernet PHY configuration

Hi Fabio,

Quoted 8 lines · Fabio Estevam

From: Fabio Estevam <[email protected]>

As per the AR8031 datasheet:

"For a reliable power on reset, suggest to keep asserting the reset low long enough (10ms) to ensure the clock is stable and clock-to-reset 1ms requirement is satisfied."

Quoted 7 lines

So do as suggested and also add a 100us delay after deasserting the reset line to guarantee that the PHY ID can be read correctly and the Atheros 8031 PHY driver can be loaded automatically.

This results in a simpler code.

#3 lore raw

PATCH v2 3/3 wandboard: Simplify the Ethernet PHY configuration

In reply to Fabio Estevam

From: Fabio Estevam <[email protected]>

As per the AR8031 datasheet:

"For a reliable power on reset, suggest to keep asserting the reset low long enough (10ms) to ensure the clock is stable and clock-to-reset 1ms requirement is satisfied."

So do as suggested and also add a 100us delay after deasserting the reset line to guarantee that the PHY ID can be read correctly and the Atheros 8031 PHY driver can be loaded automatically.

This results in a simpler code.

---
This is 2016.04 material.

Changes since v1:
- Use mdelay instead of udelay

 board/wandboard/wandboard.c | 36 ++----------------------------------
 1 file changed, 2 insertions(+), 34 deletions(-)
board/wandboard/wandboard.c +2 -34
index 0af63d2..5fb7117 100644
@@ -121,8 +121,9 @@ static void setup_iomux_enet(void)
 
 	/* Reset AR8031 PHY */
 	gpio_direction_output(ETH_PHY_RESET, 0);
-	udelay(500);
+	mdelay(10);
 	gpio_set_value(ETH_PHY_RESET, 1);
+	udelay(100);
 }
 
 static struct fsl_esdhc_cfg usdhc_cfg[2] = {
@@ -187,39 +188,6 @@ int board_mmc_init(bd_t *bis)
 	return 0;
 }
 
-static int mx6_rgmii_rework(struct phy_device *phydev)
-{
-	unsigned short val;
-
-	/* To enable AR8031 ouput a 125MHz clk from CLK_25M */
-	phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x7);
-	phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 0x8016);
-	phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x4007);
-
-	val = phy_read(phydev, MDIO_DEVAD_NONE, 0xe);
-	val &= 0xffe3;
-	val |= 0x18;
-	phy_write(phydev, MDIO_DEVAD_NONE, 0xe, val);
-
-	/* introduce tx clock delay */
-	phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x5);
-	val = phy_read(phydev, MDIO_DEVAD_NONE, 0x1e);
-	val |= 0x0100;
-	phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, val);
-
-	return 0;
-}
-
-int board_phy_config(struct phy_device *phydev)
-{
-	mx6_rgmii_rework(phydev);
-
-	if (phydev->drv->config)
-		phydev->drv->config(phydev);
-
-	return 0;
-}
-
 #if defined(CONFIG_VIDEO_IPUV3)
 struct i2c_pads_info mx6q_i2c2_pad_info = {
 	.scl = {
Signature · 1 line
1.9.1
#4 lore raw

PATCH v2 3/3 wandboard: Simplify the Ethernet PHY configuration

Hi Fabio,

Quoted 8 lines · Fabio Estevam

From: Fabio Estevam <[email protected]>

As per the AR8031 datasheet:

"For a reliable power on reset, suggest to keep asserting the reset low long enough (10ms) to ensure the clock is stable and clock-to-reset 1ms requirement is satisfied."

Quoted 7 lines

So do as suggested and also add a 100us delay after deasserting the reset line to guarantee that the PHY ID can be read correctly and the Atheros 8031 PHY driver can be loaded automatically.

This results in a simpler code.

#5 lore raw

PATCH v2 3/3 wandboard: Simplify the Ethernet PHY configuration

In reply to Fabio Estevam
Quoted 8 lines · Fabio Estevam

From: Fabio Estevam <[email protected]>

As per the AR8031 datasheet:

"For a reliable power on reset, suggest to keep asserting the reset low long enough (10ms) to ensure the clock is stable and clock-to-reset 1ms requirement is satisfied."

Quoted 8 lines

So do as suggested and also add a 100us delay after deasserting the reset line to guarantee that the PHY ID can be read correctly and the Atheros 8031 PHY driver can be loaded automatically.

This results in a simpler code.

---

Applied (fix) to u-boot-imx, thanks !

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
#6 lore raw

PATCH v2 1/3 phy: atheros: Use ar8035_config for AR8031

In reply to Fabio Estevam
Quoted 6 lines · Fabio Estevam

From: Fabio Estevam <[email protected]>

Commit 08ad9b068afb88 (" ar8031: modify the config func of ar8031 to ar8021_config") selected 'ar8021_config' as the configuration function for AR8031.

Quoted 8 lines

The correct would be to use 'ar8035_config' instead as AR8031/AR8035 have the same programming model and even share the same phy driver in the linux kernel: drivers/net/phy/at803x.c.

Tested on a mx6qsabresd and wandboard, which now can work without any PHY setup code in the board files.

#7 lore raw

PATCH v2 1/3 phy: atheros: Use ar8035_config for AR8031

In reply to Fabio Estevam
Quoted 19 lines · Fabio Estevam

-----Original Message-----
From: Fabio Estevam [mailto:festevam at gmail.com]
Sent: Wednesday, January 06, 2016 3:03 AM
To: sbabic at denx.de
Cc: joe.hershberger at ni.com; B45475 at freescale.com; yorksun at freescale.com; troy.kisky at boundarydevices.com; u-boot at lists.denx.de; Fabio Estevam <[email protected]>
Subject: [PATCH v2 1/3] phy: atheros: Use ar8035_config for AR8031

From: Fabio Estevam <[email protected]>

Commit 08ad9b068afb88 (" ar8031: modify the config func of ar8031 to ar8021_config") selected 'ar8021_config' as the configuration function for AR8031.

The correct would be to use 'ar8035_config' instead as AR8031/AR8035 have the same programming model and even share the same phy driver in the linux
kernel: drivers/net/phy/at803x.c.

Quoted 8 lines

Tested on a mx6qsabresd and wandboard, which now can work without any PHY setup code in the board files.

---
This is 2016.04 material.

Zhao Qiang, could you please test this on your platform?

Yes, have tested, it can work on my platform.

Quoted 21 lines

Changes since v1:
- None

 drivers/net/phy/atheros.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/phy/atheros.c index renamed from drivers/net/phy/atheros.c +0 -0

d509e30..ba57b1a 100644

drivers/net/phy/atheros.c +1 -2
@@ -51,7 +51,7 @@ static struct phy_driver AR8031_driver =  {
 	.uid = 0x4dd074,
 	.mask = 0xffffffef,
 	.features = PHY_GBIT_FEATURES,
-	.config = ar8021_config,
+	.config = ar8035_config,
 	.startup = genphy_startup,
 	.shutdown = genphy_shutdown,
 };
--
Quoted 1 line

1.9.1

Best Regards
Zhao Qiang

#8 lore raw

PATCH v2 1/3 phy: atheros: Use ar8035_config for AR8031

Quoted 24 lines · Qiang Zhao
Quoted 22 lines · Fabio Estevam

-----Original Message-----
From: Fabio Estevam [mailto:festevam at gmail.com]
Sent: Wednesday, January 06, 2016 3:03 AM
To: sbabic at denx.de
Cc: joe.hershberger at ni.com; B45475 at freescale.com; yorksun at freescale.com; troy.kisky at boundarydevices.com; u-boot at lists.denx.de; Fabio Estevam <[email protected]>
Subject: [PATCH v2 1/3] phy: atheros: Use ar8035_config for AR8031

From: Fabio Estevam <[email protected]>

Commit 08ad9b068afb88 (" ar8031: modify the config func of ar8031 to ar8021_config") selected 'ar8021_config' as the configuration function for AR8031.

The correct would be to use 'ar8035_config' instead as AR8031/AR8035 have the same programming model and even share the same phy driver in the linux
kernel: drivers/net/phy/at803x.c.

Tested on a mx6qsabresd and wandboard, which now can work without any PHY setup code in the board files.

Quoted 7 lines
Quoted 5 lines

---
This is 2016.04 material.

Zhao Qiang, could you please test this on your platform?

Yes, have tested, it can work on my platform.

Excellent, thanks for testing, Zhao.

Stefano,

With Zhao's test I think it is safe to add this for 2016.01. What do you think?

#9 lore raw

PATCH v2 1/3 phy: atheros: Use ar8035_config for AR8031

Hi Fabio,

Quoted 31 lines · Fabio Estevam
Quoted 30 lines · Qiang Zhao
Quoted 27 lines · Fabio Estevam

-----Original Message-----
From: Fabio Estevam [mailto:festevam at gmail.com]
Sent: Wednesday, January 06, 2016 3:03 AM
To: sbabic at denx.de
Cc: joe.hershberger at ni.com; B45475 at freescale.com; yorksun at freescale.com; troy.kisky at boundarydevices.com; u-boot at lists.denx.de; Fabio Estevam <[email protected]>
Subject: [PATCH v2 1/3] phy: atheros: Use ar8035_config for AR8031

From: Fabio Estevam <[email protected]>

Commit 08ad9b068afb88 (" ar8031: modify the config func of ar8031 to ar8021_config") selected 'ar8021_config' as the configuration function for AR8031.

The correct would be to use 'ar8035_config' instead as AR8031/AR8035 have the same programming model and even share the same phy driver in the linux
kernel: drivers/net/phy/at803x.c.

Tested on a mx6qsabresd and wandboard, which now can work without any PHY setup code in the board files.

---
This is 2016.04 material.

Zhao Qiang, could you please test this on your platform?

Quoted 8 lines
Quoted 1 line

Yes, have tested, it can work on my platform.

Excellent, thanks for testing, Zhao.

Stefano,

With Zhao's test I think it is safe to add this for 2016.01. What do you think?

Agree, I pick it up.

Regards,
Stefano

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
#10 lore raw

PATCH v2 1/3 phy: atheros: Use ar8035_config for AR8031

In reply to Fabio Estevam
Quoted 19 lines · Fabio Estevam

-----Original Message-----
From: Fabio Estevam [mailto:festevam at gmail.com]
Sent: Wednesday, January 06, 2016 3:03 AM
To: sbabic at denx.de
Cc: joe.hershberger at ni.com; B45475 at freescale.com; yorksun at freescale.com; troy.kisky at boundarydevices.com; u-boot at lists.denx.de; Fabio Estevam <[email protected]>
Subject: [PATCH v2 1/3] phy: atheros: Use ar8035_config for AR8031

From: Fabio Estevam <[email protected]>

Commit 08ad9b068afb88 (" ar8031: modify the config func of ar8031 to ar8021_config") selected 'ar8021_config' as the configuration function for AR8031.

The correct would be to use 'ar8035_config' instead as AR8031/AR8035 have the same programming model and even share the same phy driver in the linux
kernel: drivers/net/phy/at803x.c.

Quoted 8 lines

Tested on a mx6qsabresd and wandboard, which now can work without any PHY setup code in the board files.

---
This is 2016.04 material.

Zhao Qiang, could you please test this on your platform?

Yes, have tested, it can work on my platform.

Quoted 21 lines

Changes since v1:
- None

 drivers/net/phy/atheros.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/phy/atheros.c index renamed from drivers/net/phy/atheros.c +0 -0

d509e30..ba57b1a 100644

drivers/net/phy/atheros.c +1 -2
@@ -51,7 +51,7 @@ static struct phy_driver AR8031_driver =  {
 	.uid = 0x4dd074,
 	.mask = 0xffffffef,
 	.features = PHY_GBIT_FEATURES,
-	.config = ar8021_config,
+	.config = ar8035_config,
 	.startup = genphy_startup,
 	.shutdown = genphy_shutdown,
 };
--
Quoted 1 line

1.9.1

Best Regards
Zhao Qiang

#11 lore raw

PATCH v2 1/3 phy: atheros: Use ar8035_config for AR8031

In reply to Fabio Estevam
Quoted 19 lines · Fabio Estevam

-----Original Message-----
From: Fabio Estevam [mailto:festevam at gmail.com]
Sent: Wednesday, January 06, 2016 3:03 AM
To: sbabic at denx.de
Cc: joe.hershberger at ni.com; B45475 at freescale.com; yorksun at freescale.com; troy.kisky at boundarydevices.com; u-boot at lists.denx.de; Fabio Estevam <[email protected]>
Subject: [PATCH v2 1/3] phy: atheros: Use ar8035_config for AR8031

From: Fabio Estevam <[email protected]>

Commit 08ad9b068afb88 (" ar8031: modify the config func of ar8031 to ar8021_config") selected 'ar8021_config' as the configuration function for AR8031.

The correct would be to use 'ar8035_config' instead as AR8031/AR8035 have the same programming model and even share the same phy driver in the linux
kernel: drivers/net/phy/at803x.c.

Quoted 8 lines

Tested on a mx6qsabresd and wandboard, which now can work without any PHY setup code in the board files.

---
This is 2016.04 material.

Zhao Qiang, could you please test this on your platform?

Yes, have tested, it can work on my platform.

Quoted 22 lines

Changes since v1:
- None

 drivers/net/phy/atheros.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/phy/atheros.c index renamed from drivers/net/phy/atheros.c +0 -0

d509e30..ba57b1a 100644

drivers/net/phy/atheros.c +1 -2
@@ -51,7 +51,7 @@ static struct phy_driver AR8031_driver =  {
 	.uid = 0x4dd074,
 	.mask = 0xffffffef,
 	.features = PHY_GBIT_FEATURES,
-	.config = ar8021_config,
+	.config = ar8035_config,
 	.startup = genphy_startup,
 	.shutdown = genphy_shutdown,
 };
--

1.9.1

#12 lore raw

PATCH v2 1/3 phy: atheros: Use ar8035_config for AR8031

In reply to Fabio Estevam
Quoted 31 lines · Fabio Estevam

From: Fabio Estevam <[email protected]>

Commit 08ad9b068afb88 (" ar8031: modify the config func of ar8031 to ar8021_config") selected 'ar8021_config' as the configuration function for AR8031.

The correct would be to use 'ar8035_config' instead as AR8031/AR8035 have the same programming model and even share the same phy driver in the linux kernel: drivers/net/phy/at803x.c.

Tested on a mx6qsabresd and wandboard, which now can work without any PHY setup code in the board files.

---
This is 2016.04 material.

Zhao Qiang, could you please test this on your platform?

Changes since v1:
- None

 drivers/net/phy/atheros.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/phy/atheros.c +0 -0
index d509e30..ba57b1a 100644

drivers/net/phy/atheros.c static struct phy_driver AR8031_driver = { · line 57

Quoted 8 lines
drivers/net/phy/atheros.c +1 -1
@@ -51,7 +51,7 @@ static struct phy_driver AR8031_driver =  {
 	.uid = 0x4dd074,
 	.mask = 0xffffffef,
 	.features = PHY_GBIT_FEATURES,
-	.config = ar8021_config,
+	.config = ar8035_config,
 	.startup = genphy_startup,
 	.shutdown = genphy_shutdown,
 };

Applied (fix) to u-boot-imx, thanks !

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================