* [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings
@ 2019-10-26 0:26 Michael Walle
2019-10-26 0:26 ` [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions Michael Walle
` (10 more replies)
0 siblings, 11 replies; 40+ messages in thread
From: Michael Walle @ 2019-10-26 0:26 UTC (permalink / raw)
To: u-boot
This series cleans up the Atheros PHY AR803x PHY driver and adds a
device tree binding for the most commonly used PHY settings like clock
output.
If you're a board maintainer you're getting this mail because you probably
use an AR803x PHY on your board. Please have a look at your board specific
code and see if you can use the device tree bindings instead. Let me know,
if something is missing.
Michael Walle (9):
phy: atheros: introduce debug read and write functions
phy: atheros: move delay config to common function
phy: atheros: ar8035: remove extra delay config
phy: atheros: ar8035: use phy_{read|write}_mmd()
phy: atheros: don't overwrite debug register values
phy: atheros: fix delay configuration
phy: atheros: Add device tree bindings and config
phy: atheros: ar8035: remove static clock config
phy: atheros: consolidate {ar8031|ar8035}_config()
doc/device-tree-bindings/net/phy/atheros.txt | 22 ++
drivers/net/phy/atheros.c | 262 +++++++++++++++----
2 files changed, 240 insertions(+), 44 deletions(-)
create mode 100644 doc/device-tree-bindings/net/phy/atheros.txt
Cc: Joe Hershberger <joe.hershberger@ni.com>
Cc: Fabio Estevam <fabio.estevam@nxp.com>
Cc: Adam Ford <aford173@gmail.com>
Cc: Otavio Salvador <otavio@ossystems.com.br>
Cc: Ian Ray <ian.ray@ge.com>
Cc: Jason Liu <jason.hui.liu@nxp.com>
Cc: Ye Li <ye.li@nxp.com>
Cc: Uri Mashiach <uri.mashiach@compulab.co.il>
Cc: Nikita Kiryanov <nikita@compulab.co.il>
Cc: Lukasz Majewski <lukma@denx.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Vanessa Maegima <vanessa.maegima@nxp.com>
Cc: Eric Bénard <eric@eukrea.com>
--
2.20.1
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
@ 2019-10-26 0:26 ` Michael Walle
2019-11-30 1:11 ` Joe Hershberger
2019-12-05 15:55 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 2/9] phy: atheros: move delay config to common function Michael Walle
` (9 subsequent siblings)
10 siblings, 2 replies; 40+ messages in thread
From: Michael Walle @ 2019-10-26 0:26 UTC (permalink / raw)
To: u-boot
Provide functions to read and write the Atheros debug registers.
Signed-off-by: Michael Walle <michael@walle.cc>
---
drivers/net/phy/atheros.c | 72 ++++++++++++++++++++++++++++-----------
1 file changed, 53 insertions(+), 19 deletions(-)
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index 3783d155e7..b25aa02108 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -17,11 +17,52 @@
#define AR803x_DEBUG_REG_0 0x0
#define AR803x_RGMII_RX_CLK_DLY 0x8000
+static int ar803x_debug_reg_read(struct phy_device *phydev, u16 reg)
+{
+ int ret;
+
+ ret = phy_write(phydev, MDIO_DEVAD_NONE, AR803x_PHY_DEBUG_ADDR_REG,
+ reg);
+ if (ret < 0)
+ return ret;
+
+ return phy_read(phydev, MDIO_DEVAD_NONE, AR803x_PHY_DEBUG_DATA_REG);
+}
+
+static int ar803x_debug_reg_write(struct phy_device *phydev, u16 reg, u16 val)
+{
+ int ret;
+
+ ret = phy_write(phydev, MDIO_DEVAD_NONE, AR803x_PHY_DEBUG_ADDR_REG,
+ reg);
+ if (ret < 0)
+ return ret;
+
+ return phy_write(phydev, MDIO_DEVAD_NONE, AR803x_PHY_DEBUG_DATA_REG,
+ val);
+}
+
+static int ar803x_debug_reg_mask(struct phy_device *phydev, u16 reg,
+ u16 clear, u16 set)
+{
+ int val;
+
+ val = ar803x_debug_reg_read(phydev, reg);
+ if (val < 0)
+ return val;
+
+ val &= 0xffff;
+ val &= ~clear;
+ val |= set;
+
+ return phy_write(phydev, MDIO_DEVAD_NONE, AR803x_PHY_DEBUG_DATA_REG,
+ val);
+}
+
static int ar8021_config(struct phy_device *phydev)
{
phy_write(phydev, MDIO_DEVAD_NONE, 0x00, 0x1200);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05);
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x3D47);
+ ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_5, 0x3D47);
phydev->supported = phydev->drv->features;
return 0;
@@ -31,18 +72,14 @@ static int ar8031_config(struct phy_device *phydev)
{
if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID ||
phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {
- phy_write(phydev, MDIO_DEVAD_NONE, AR803x_PHY_DEBUG_ADDR_REG,
- AR803x_DEBUG_REG_5);
- phy_write(phydev, MDIO_DEVAD_NONE, AR803x_PHY_DEBUG_DATA_REG,
- AR803x_RGMII_TX_CLK_DLY);
+ ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_5,
+ AR803x_RGMII_TX_CLK_DLY);
}
if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID ||
phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {
- phy_write(phydev, MDIO_DEVAD_NONE, AR803x_PHY_DEBUG_ADDR_REG,
- AR803x_DEBUG_REG_0);
- phy_write(phydev, MDIO_DEVAD_NONE, AR803x_PHY_DEBUG_DATA_REG,
- AR803x_RGMII_RX_CLK_DLY);
+ ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_0,
+ AR803x_RGMII_RX_CLK_DLY);
}
phydev->supported = phydev->drv->features;
@@ -63,24 +100,21 @@ static int ar8035_config(struct phy_device *phydev)
regval = phy_read(phydev, MDIO_DEVAD_NONE, 0xe);
phy_write(phydev, MDIO_DEVAD_NONE, 0xe, (regval|0x0018));
- 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));
+ ar803x_debug_reg_mask(phydev, AR803x_DEBUG_REG_5,
+ 0, AR803x_RGMII_TX_CLK_DLY);
if ((phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) ||
(phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID)) {
- /* select debug reg 5 */
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1D, 0x5);
/* enable tx delay */
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1E, 0x0100);
+ ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_5,
+ AR803x_RGMII_TX_CLK_DLY);
}
if ((phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) ||
(phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID)) {
- /* select debug reg 0 */
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1D, 0x0);
/* enable rx delay */
- phy_write(phydev, MDIO_DEVAD_NONE, 0x1E, 0x8000);
+ ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_0,
+ AR803x_RGMII_RX_CLK_DLY);
}
phydev->supported = phydev->drv->features;
--
2.20.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 2/9] phy: atheros: move delay config to common function
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
2019-10-26 0:26 ` [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions Michael Walle
@ 2019-10-26 0:26 ` Michael Walle
2019-11-30 1:13 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 3/9] phy: atheros: ar8035: remove extra delay config Michael Walle
` (8 subsequent siblings)
10 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-10-26 0:26 UTC (permalink / raw)
To: u-boot
Signed-off-by: Michael Walle <michael@walle.cc>
---
drivers/net/phy/atheros.c | 44 +++++++++++++++++++++++----------------
1 file changed, 26 insertions(+), 18 deletions(-)
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index b25aa02108..402998c8d5 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -68,20 +68,37 @@ static int ar8021_config(struct phy_device *phydev)
return 0;
}
-static int ar8031_config(struct phy_device *phydev)
+static int ar803x_delay_config(struct phy_device *phydev)
{
+ int ret;
+
if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID ||
phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {
- ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_5,
- AR803x_RGMII_TX_CLK_DLY);
+ ret = ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_5,
+ AR803x_RGMII_TX_CLK_DLY);
+ if (ret < 0)
+ return ret;
}
if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID ||
phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {
- ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_0,
- AR803x_RGMII_RX_CLK_DLY);
+ ret = ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_0,
+ AR803x_RGMII_RX_CLK_DLY);
+ if (ret < 0)
+ return ret;
}
+ return 0;
+}
+
+static int ar8031_config(struct phy_device *phydev)
+{
+ int ret;
+
+ ret = ar803x_delay_config(phydev);
+ if (ret < 0)
+ return ret;
+
phydev->supported = phydev->drv->features;
genphy_config_aneg(phydev);
@@ -92,6 +109,7 @@ static int ar8031_config(struct phy_device *phydev)
static int ar8035_config(struct phy_device *phydev)
{
+ int ret;
int regval;
phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x0007);
@@ -103,19 +121,9 @@ static int ar8035_config(struct phy_device *phydev)
ar803x_debug_reg_mask(phydev, AR803x_DEBUG_REG_5,
0, AR803x_RGMII_TX_CLK_DLY);
- if ((phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) ||
- (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID)) {
- /* enable tx delay */
- ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_5,
- AR803x_RGMII_TX_CLK_DLY);
- }
-
- if ((phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) ||
- (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID)) {
- /* enable rx delay */
- ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_0,
- AR803x_RGMII_RX_CLK_DLY);
- }
+ ret = ar803x_delay_config(phydev);
+ if (ret < 0)
+ return ret;
phydev->supported = phydev->drv->features;
--
2.20.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 3/9] phy: atheros: ar8035: remove extra delay config
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
2019-10-26 0:26 ` [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions Michael Walle
2019-10-26 0:26 ` [U-Boot] [PATCH 2/9] phy: atheros: move delay config to common function Michael Walle
@ 2019-10-26 0:26 ` Michael Walle
2019-11-30 1:13 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 4/9] phy: atheros: ar8035: use phy_{read|write}_mmd() Michael Walle
` (7 subsequent siblings)
10 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-10-26 0:26 UTC (permalink / raw)
To: u-boot
Remove the hard-coded delay configuration. The AR8035 config() always
enabled the TX delay mode, although it will be set according to the PHY
interface mode, too.
If bisecting shows that this commit breaks your board you probably have
a wrong PHY interface mode. You probably want the
PHY_INTERFACE_MODE_RGMII_TXID or PHY_INTERFACE_MODE_RGMII_ID mode.
Signed-off-by: Michael Walle <michael@walle.cc>
---
drivers/net/phy/atheros.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index 402998c8d5..629c6b192a 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -118,9 +118,6 @@ static int ar8035_config(struct phy_device *phydev)
regval = phy_read(phydev, MDIO_DEVAD_NONE, 0xe);
phy_write(phydev, MDIO_DEVAD_NONE, 0xe, (regval|0x0018));
- ar803x_debug_reg_mask(phydev, AR803x_DEBUG_REG_5,
- 0, AR803x_RGMII_TX_CLK_DLY);
-
ret = ar803x_delay_config(phydev);
if (ret < 0)
return ret;
--
2.20.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 4/9] phy: atheros: ar8035: use phy_{read|write}_mmd()
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
` (2 preceding siblings ...)
2019-10-26 0:26 ` [U-Boot] [PATCH 3/9] phy: atheros: ar8035: remove extra delay config Michael Walle
@ 2019-10-26 0:26 ` Michael Walle
2019-11-30 1:14 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 5/9] phy: atheros: don't overwrite debug register values Michael Walle
` (6 subsequent siblings)
10 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-10-26 0:26 UTC (permalink / raw)
To: u-boot
Signed-off-by: Michael Walle <michael@walle.cc>
---
drivers/net/phy/atheros.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index 629c6b192a..113374f03f 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -110,13 +110,12 @@ static int ar8031_config(struct phy_device *phydev)
static int ar8035_config(struct phy_device *phydev)
{
int ret;
- int regval;
- phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x0007);
- phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 0x8016);
- phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x4007);
- regval = phy_read(phydev, MDIO_DEVAD_NONE, 0xe);
- phy_write(phydev, MDIO_DEVAD_NONE, 0xe, (regval|0x0018));
+ ret = phy_read_mmd(phydev, 7, 0x8016);
+ if (ret < 0)
+ return ret;
+ ret |= 0x0018;
+ phy_write_mmd(phydev, 7, 0x8016, ret);
ret = ar803x_delay_config(phydev);
if (ret < 0)
--
2.20.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 5/9] phy: atheros: don't overwrite debug register values
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
` (3 preceding siblings ...)
2019-10-26 0:26 ` [U-Boot] [PATCH 4/9] phy: atheros: ar8035: use phy_{read|write}_mmd() Michael Walle
@ 2019-10-26 0:26 ` Michael Walle
2019-11-30 1:15 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 6/9] phy: atheros: fix delay configuration Michael Walle
` (5 subsequent siblings)
10 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-10-26 0:26 UTC (permalink / raw)
To: u-boot
Instead of doing a hard write, do a read-modify-write.
Signed-off-by: Michael Walle <michael@walle.cc>
---
drivers/net/phy/atheros.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index 113374f03f..4b7a1fb9c4 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -12,10 +12,10 @@
#define AR803x_PHY_DEBUG_DATA_REG 0x1e
#define AR803x_DEBUG_REG_5 0x5
-#define AR803x_RGMII_TX_CLK_DLY 0x100
+#define AR803x_RGMII_TX_CLK_DLY BIT(8)
#define AR803x_DEBUG_REG_0 0x0
-#define AR803x_RGMII_RX_CLK_DLY 0x8000
+#define AR803x_RGMII_RX_CLK_DLY BIT(15)
static int ar803x_debug_reg_read(struct phy_device *phydev, u16 reg)
{
@@ -74,16 +74,16 @@ static int ar803x_delay_config(struct phy_device *phydev)
if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID ||
phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {
- ret = ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_5,
- AR803x_RGMII_TX_CLK_DLY);
+ ret = ar803x_debug_reg_mask(phydev, AR803x_DEBUG_REG_5,
+ 0, AR803x_RGMII_TX_CLK_DLY);
if (ret < 0)
return ret;
}
if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID ||
phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {
- ret = ar803x_debug_reg_write(phydev, AR803x_DEBUG_REG_0,
- AR803x_RGMII_RX_CLK_DLY);
+ ret = ar803x_debug_reg_mask(phydev, AR803x_DEBUG_REG_0,
+ 0, AR803x_RGMII_RX_CLK_DLY);
if (ret < 0)
return ret;
}
--
2.20.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 6/9] phy: atheros: fix delay configuration
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
` (4 preceding siblings ...)
2019-10-26 0:26 ` [U-Boot] [PATCH 5/9] phy: atheros: don't overwrite debug register values Michael Walle
@ 2019-10-26 0:26 ` Michael Walle
2019-10-28 16:25 ` Vladimir Oltean
2019-11-30 1:17 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 7/9] phy: atheros: Add device tree bindings and config Michael Walle
` (4 subsequent siblings)
10 siblings, 2 replies; 40+ messages in thread
From: Michael Walle @ 2019-10-26 0:26 UTC (permalink / raw)
To: u-boot
The delay_config() code could only set the delay bit. Thus, it could
only enable the delay mode, but not disable it. To make things worse,
the RX delay mode is enabled by default after a hardware reset, so it
could never be disabled. Fix this, by always setting or clearing the
bits. This is also how the linux kernel configures the PHY.
If bisecting shows that this commit breaks your board you probably have
a wrong PHY interface mode. You probably want the
PHY_INTERFACE_MODE_RGMII_RXID or PHY_INTERFACE_MODE_RGMII_ID mode.
Signed-off-by: Michael Walle <michael@walle.cc>
---
drivers/net/phy/atheros.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index 4b7a1fb9c4..8bf26626ff 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -78,6 +78,11 @@ static int ar803x_delay_config(struct phy_device *phydev)
0, AR803x_RGMII_TX_CLK_DLY);
if (ret < 0)
return ret;
+ } else {
+ ret = ar803x_debug_reg_mask(phydev, AR803x_DEBUG_REG_5,
+ AR803x_RGMII_TX_CLK_DLY, 0);
+ if (ret < 0)
+ return ret;
}
if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID ||
@@ -86,6 +91,11 @@ static int ar803x_delay_config(struct phy_device *phydev)
0, AR803x_RGMII_RX_CLK_DLY);
if (ret < 0)
return ret;
+ } else {
+ ret = ar803x_debug_reg_mask(phydev, AR803x_DEBUG_REG_0,
+ AR803x_RGMII_RX_CLK_DLY, 0);
+ if (ret < 0)
+ return ret;
}
return 0;
--
2.20.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 7/9] phy: atheros: Add device tree bindings and config
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
` (5 preceding siblings ...)
2019-10-26 0:26 ` [U-Boot] [PATCH 6/9] phy: atheros: fix delay configuration Michael Walle
@ 2019-10-26 0:26 ` Michael Walle
2019-11-30 1:18 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 8/9] phy: atheros: ar8035: remove static clock config Michael Walle
` (3 subsequent siblings)
10 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-10-26 0:26 UTC (permalink / raw)
To: u-boot
Add support for configuring the CLK_25M pin as well as the RGMII I/O
voltage by the device tree.
By default the AT803x PHYs outputs the 25MHz clock of the XTAL input.
But this output can also be changed by software to other frequencies.
This commit introduces a generic way to configure this output.
Also the PHY supports different RGMII I/O voltages: 1.5V, 1.8V and 2.5V.
An internal LDO is able to provide 1.5V (default) and 1.8V. The 2.5V
option needs an external supply voltage. This commit adds support to
switch the internal LDO to 1.8V.
Signed-off-by: Michael Walle <michael@walle.cc>
---
doc/device-tree-bindings/net/phy/atheros.txt | 22 +++
drivers/net/phy/atheros.c | 160 ++++++++++++++++++-
2 files changed, 180 insertions(+), 2 deletions(-)
create mode 100644 doc/device-tree-bindings/net/phy/atheros.txt
diff --git a/doc/device-tree-bindings/net/phy/atheros.txt b/doc/device-tree-bindings/net/phy/atheros.txt
new file mode 100644
index 0000000000..112250114f
--- /dev/null
+++ b/doc/device-tree-bindings/net/phy/atheros.txt
@@ -0,0 +1,22 @@
+* Atheros PHY Device Tree binding
+
+Required properties:
+- reg: PHY address
+
+Optional properties:
+- atheros,clk-out-frequency: Clock frequency of the CLK_25M pin in Hz.
+ Either 25000000, 50000000, 62500000 or 125000000.
+- atheros,clk-out-strength: Clock output buffer driver strength.
+ Either "full", "half" or "quarter".
+- atheros,keep-pll-enabled: Keep the PLL running if no link is present.
+ Don't go into hibernation mode.
+- atheros,rgmii-io-1v8: Use 1.8V as RGMII I/O voltage, the default is 1.5V.
+
+Example:
+
+ ethernet-phy at 0 {
+ reg = <0>;
+ atheros-clk-out-frequency = <125000000>;
+ atheros,keep-pll-enabled;
+ atheros,rgmii-io-1v8;
+ };
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index 8bf26626ff..1c8c9b4e75 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -4,6 +4,7 @@
*
* Copyright 2011, 2013 Freescale Semiconductor, Inc.
* author Andy Fleming
+ * Copyright (c) 2019 Michael Walle <michael@walle.cc>
*/
#include <common.h>
#include <phy.h>
@@ -11,11 +12,41 @@
#define AR803x_PHY_DEBUG_ADDR_REG 0x1d
#define AR803x_PHY_DEBUG_DATA_REG 0x1e
+/* Debug registers */
+#define AR803x_DEBUG_REG_0 0x0
+#define AR803x_RGMII_RX_CLK_DLY BIT(15)
+
#define AR803x_DEBUG_REG_5 0x5
#define AR803x_RGMII_TX_CLK_DLY BIT(8)
-#define AR803x_DEBUG_REG_0 0x0
-#define AR803x_RGMII_RX_CLK_DLY BIT(15)
+#define AR803x_DEBUG_REG_1F 0x1f
+#define AR803x_PLL_ON BIT(2)
+#define AR803x_RGMII_1V8 BIT(3)
+
+/* MMD registers */
+#define AR803x_MMD7_CLK25M 0x8016
+#define AR803x_CLK_OUT_25MHZ_XTAL (0 << 2)
+#define AR803x_CLK_OUT_25MHZ_DSP (1 << 2)
+#define AR803x_CLK_OUT_50MHZ_PLL (2 << 2)
+#define AR803x_CLK_OUT_50MHZ_DSP (3 << 2)
+#define AR803x_CLK_OUT_62_5MHZ_PLL (4 << 2)
+#define AR803x_CLK_OUT_62_5MHZ_DSP (5 << 2)
+#define AR803x_CLK_OUT_125MHZ_PLL (6 << 2)
+#define AR803x_CLK_OUT_125MHZ_DSP (7 << 2)
+#define AR803x_CLK_OUT_MASK (7 << 2)
+
+#define AR803x_CLK_OUT_STRENGTH_FULL (0 << 6)
+#define AR803x_CLK_OUT_STRENGTH_HALF (1 << 6)
+#define AR803x_CLK_OUT_STRENGTH_QUARTER (2 << 6)
+#define AR803x_CLK_OUT_STRENGTH_MASK (3 << 6)
+
+struct ar803x_priv {
+ int flags;
+#define AR803x_FLAG_KEEP_PLL_ENABLED BIT(0) /* don't turn off internal PLL */
+#define AR803x_FLAG_RGMII_1V8 BIT(1) /* use 1.8V RGMII I/O voltage */
+ u16 clk_25m_reg;
+ u16 clk_25m_mask;
+};
static int ar803x_debug_reg_read(struct phy_device *phydev, u16 reg)
{
@@ -101,14 +132,131 @@ static int ar803x_delay_config(struct phy_device *phydev)
return 0;
}
+static int ar803x_regs_config(struct phy_device *phydev)
+{
+ struct ar803x_priv *priv = phydev->priv;
+ u16 set = 0, clear = 0;
+ int val;
+ int ret;
+
+ /* no configuration available */
+ if (!priv)
+ return 0;
+
+ if (priv->flags & AR803x_FLAG_KEEP_PLL_ENABLED)
+ set |= AR803x_PLL_ON;
+ else
+ clear |= AR803x_PLL_ON;
+
+ if (priv->flags & AR803x_FLAG_RGMII_1V8)
+ set |= AR803x_RGMII_1V8;
+ else
+ clear |= AR803x_RGMII_1V8;
+
+ ret = ar803x_debug_reg_mask(phydev, AR803x_DEBUG_REG_1F, clear, set);
+ if (ret < 0)
+ return ret;
+
+ /* save the write access if the mask is empty */
+ if (priv->clk_25m_mask) {
+ val = phy_read_mmd(phydev, 7, AR803x_MMD7_CLK25M);
+ if (val < 0)
+ return val;
+ val &= ~priv->clk_25m_mask;
+ val |= priv->clk_25m_reg;
+ ret = phy_write_mmd(phydev, 7, AR803x_MMD7_CLK25M, val);
+ if (ret < 0)
+ return ret;
+ }
+
+ return 0;
+}
+
+static int ar803x_of_init(struct phy_device *phydev)
+{
+#if defined(CONFIG_DM_ETH)
+ struct ar803x_priv *priv;
+ ofnode node;
+ const char *strength;
+ u32 freq;
+
+ priv = malloc(sizeof(*priv));
+ if (!priv)
+ return -ENOMEM;
+ memset(priv, 0, sizeof(*priv));
+
+ phydev->priv = priv;
+
+ node = phy_get_ofnode(phydev);
+ if (!ofnode_valid(node))
+ return -EINVAL;
+
+ if (ofnode_read_bool(node, "atheros,keep-pll-enabled"))
+ priv->flags |= AR803x_FLAG_KEEP_PLL_ENABLED;
+ if (ofnode_read_bool(node, "atheros,rgmii-io-1v8"))
+ priv->flags |= AR803x_FLAG_RGMII_1V8;
+
+ /*
+ * Get the CLK_OUT frequency from the device tree. Only XTAL and PLL
+ * sources are supported right now. There is also the possibilty to use
+ * the DSP as frequency reference, this is used for synchronous
+ * ethernet.
+ */
+ freq = ofnode_read_u32_default(node, "atheros,clk-out-frequency", 0);
+ if (freq) {
+ priv->clk_25m_mask |= AR803x_CLK_OUT_MASK;
+ if (freq == 25000000) {
+ priv->clk_25m_reg |= AR803x_CLK_OUT_25MHZ_XTAL;
+ } else if (freq == 50000000) {
+ priv->clk_25m_reg |= AR803x_CLK_OUT_50MHZ_PLL;
+ } else if (freq == 62500000) {
+ priv->clk_25m_reg |= AR803x_CLK_OUT_62_5MHZ_PLL;
+ } else if (freq == 125000000) {
+ priv->clk_25m_reg |= AR803x_CLK_OUT_125MHZ_PLL;
+ } else {
+ dev_err(phydev->dev,
+ "invalid atheros,clk-out-frequency\n");
+ free(priv);
+ return -EINVAL;
+ }
+ }
+
+ strength = ofnode_read_string(node, "atheros,clk-out-strength");
+ if (strength) {
+ priv->clk_25m_mask |= AR803x_CLK_OUT_STRENGTH_MASK;
+ if (!strcmp(strength, "full")) {
+ priv->clk_25m_reg |= AR803x_CLK_OUT_STRENGTH_FULL;
+ } else if (!strcmp(strength, "half")) {
+ priv->clk_25m_reg |= AR803x_CLK_OUT_STRENGTH_HALF;
+ } else if (!strcmp(strength, "quarter")) {
+ priv->clk_25m_reg |= AR803x_CLK_OUT_STRENGTH_QUARTER;
+ } else {
+ dev_err(phydev->dev, "invalid atheros,strength\n");
+ free(priv);
+ return -EINVAL;
+ }
+ }
+#endif
+
+ return 0;
+}
+
static int ar8031_config(struct phy_device *phydev)
{
int ret;
+ ret = ar803x_of_init(phydev);
+ if (ret < 0)
+ return ret;
+
ret = ar803x_delay_config(phydev);
if (ret < 0)
return ret;
+ ret = ar803x_regs_config(phydev);
+ if (ret < 0)
+ return ret;
+
phydev->supported = phydev->drv->features;
genphy_config_aneg(phydev);
@@ -121,6 +269,10 @@ static int ar8035_config(struct phy_device *phydev)
{
int ret;
+ ret = ar803x_of_init(phydev);
+ if (ret < 0)
+ return ret;
+
ret = phy_read_mmd(phydev, 7, 0x8016);
if (ret < 0)
return ret;
@@ -131,6 +283,10 @@ static int ar8035_config(struct phy_device *phydev)
if (ret < 0)
return ret;
+ ret = ar803x_regs_config(phydev);
+ if (ret < 0)
+ return ret;
+
phydev->supported = phydev->drv->features;
genphy_config_aneg(phydev);
--
2.20.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 8/9] phy: atheros: ar8035: remove static clock config
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
` (6 preceding siblings ...)
2019-10-26 0:26 ` [U-Boot] [PATCH 7/9] phy: atheros: Add device tree bindings and config Michael Walle
@ 2019-10-26 0:26 ` Michael Walle
2019-11-30 1:18 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 9/9] phy: atheros: consolidate {ar8031|ar8035}_config() Michael Walle
` (2 subsequent siblings)
10 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-10-26 0:26 UTC (permalink / raw)
To: u-boot
We can configure the clock output in the device tree. Disable the
hardcoded one in here. This is highly board-specific and should have
never been enabled in the PHY driver.
If bisecting shows that this commit breaks your board it probably
depends on the clock output of your Atheros AR8035 PHY. Please have a
look at doc/device-tree-bindings/net/phy/atheros.txt. You need to set
"clk-out-frequency = <125000000>" because that value was the hardcoded
value until this commit.
Signed-off-by: Michael Walle <michael@walle.cc>
---
drivers/net/phy/atheros.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index 1c8c9b4e75..91fcbf912a 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -273,12 +273,6 @@ static int ar8035_config(struct phy_device *phydev)
if (ret < 0)
return ret;
- ret = phy_read_mmd(phydev, 7, 0x8016);
- if (ret < 0)
- return ret;
- ret |= 0x0018;
- phy_write_mmd(phydev, 7, 0x8016, ret);
-
ret = ar803x_delay_config(phydev);
if (ret < 0)
return ret;
--
2.20.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 9/9] phy: atheros: consolidate {ar8031|ar8035}_config()
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
` (7 preceding siblings ...)
2019-10-26 0:26 ` [U-Boot] [PATCH 8/9] phy: atheros: ar8035: remove static clock config Michael Walle
@ 2019-10-26 0:26 ` Michael Walle
2019-11-30 1:19 ` Joe Hershberger
2019-10-26 3:20 ` [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Adam Ford
2019-10-27 20:37 ` [U-Boot] [PATCH] phy: atheros: add some debug output Michael Walle
10 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-10-26 0:26 UTC (permalink / raw)
To: u-boot
The two functions are now exactly the same, remove one of them.
Signed-off-by: Michael Walle <michael@walle.cc>
---
drivers/net/phy/atheros.c | 30 +++---------------------------
1 file changed, 3 insertions(+), 27 deletions(-)
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index 91fcbf912a..922dc91835 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -241,31 +241,7 @@ static int ar803x_of_init(struct phy_device *phydev)
return 0;
}
-static int ar8031_config(struct phy_device *phydev)
-{
- int ret;
-
- ret = ar803x_of_init(phydev);
- if (ret < 0)
- return ret;
-
- ret = ar803x_delay_config(phydev);
- if (ret < 0)
- return ret;
-
- ret = ar803x_regs_config(phydev);
- if (ret < 0)
- return ret;
-
- phydev->supported = phydev->drv->features;
-
- genphy_config_aneg(phydev);
- genphy_restart_aneg(phydev);
-
- return 0;
-}
-
-static int ar8035_config(struct phy_device *phydev)
+static int ar803x_config(struct phy_device *phydev)
{
int ret;
@@ -304,7 +280,7 @@ static struct phy_driver AR8031_driver = {
.uid = 0x4dd074,
.mask = 0xffffffef,
.features = PHY_GBIT_FEATURES,
- .config = ar8031_config,
+ .config = ar803x_config,
.startup = genphy_startup,
.shutdown = genphy_shutdown,
};
@@ -314,7 +290,7 @@ static struct phy_driver AR8035_driver = {
.uid = 0x4dd072,
.mask = 0xffffffef,
.features = PHY_GBIT_FEATURES,
- .config = ar8035_config,
+ .config = ar803x_config,
.startup = genphy_startup,
.shutdown = genphy_shutdown,
};
--
2.20.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
` (8 preceding siblings ...)
2019-10-26 0:26 ` [U-Boot] [PATCH 9/9] phy: atheros: consolidate {ar8031|ar8035}_config() Michael Walle
@ 2019-10-26 3:20 ` Adam Ford
2019-10-26 3:28 ` Adam Ford
2019-10-27 20:37 ` [U-Boot] [PATCH] phy: atheros: add some debug output Michael Walle
10 siblings, 1 reply; 40+ messages in thread
From: Adam Ford @ 2019-10-26 3:20 UTC (permalink / raw)
To: u-boot
On Fri, Oct 25, 2019 at 7:27 PM Michael Walle <michael@walle.cc> wrote:
>
> This series cleans up the Atheros PHY AR803x PHY driver and adds a
> device tree binding for the most commonly used PHY settings like clock
> output.
>
> If you're a board maintainer you're getting this mail because you probably
> use an AR803x PHY on your board. Please have a look at your board specific
> code and see if you can use the device tree bindings instead. Let me know,
> if something is missing.
Thank you for this!
I was able to remove board_phy_config and the supporting
ar8031_phy_fixup functions to a total of nearly 30 lines of code.
For the whole series...
Tested-by: Adam Ford <aford173@gmail.com> # imx6q_logic
>
> Michael Walle (9):
> phy: atheros: introduce debug read and write functions
> phy: atheros: move delay config to common function
> phy: atheros: ar8035: remove extra delay config
> phy: atheros: ar8035: use phy_{read|write}_mmd()
> phy: atheros: don't overwrite debug register values
> phy: atheros: fix delay configuration
> phy: atheros: Add device tree bindings and config
> phy: atheros: ar8035: remove static clock config
> phy: atheros: consolidate {ar8031|ar8035}_config()
>
> doc/device-tree-bindings/net/phy/atheros.txt | 22 ++
> drivers/net/phy/atheros.c | 262 +++++++++++++++----
> 2 files changed, 240 insertions(+), 44 deletions(-)
> create mode 100644 doc/device-tree-bindings/net/phy/atheros.txt
>
> Cc: Joe Hershberger <joe.hershberger@ni.com>
> Cc: Fabio Estevam <fabio.estevam@nxp.com>
> Cc: Adam Ford <aford173@gmail.com>
> Cc: Otavio Salvador <otavio@ossystems.com.br>
> Cc: Ian Ray <ian.ray@ge.com>
> Cc: Jason Liu <jason.hui.liu@nxp.com>
> Cc: Ye Li <ye.li@nxp.com>
> Cc: Uri Mashiach <uri.mashiach@compulab.co.il>
> Cc: Nikita Kiryanov <nikita@compulab.co.il>
> Cc: Lukasz Majewski <lukma@denx.de>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Vanessa Maegima <vanessa.maegima@nxp.com>
> Cc: Eric Bénard <eric@eukrea.com>
> --
> 2.20.1
>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings
2019-10-26 3:20 ` [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Adam Ford
@ 2019-10-26 3:28 ` Adam Ford
2019-10-26 8:56 ` Michael Walle
0 siblings, 1 reply; 40+ messages in thread
From: Adam Ford @ 2019-10-26 3:28 UTC (permalink / raw)
To: u-boot
On Fri, Oct 25, 2019 at 10:20 PM Adam Ford <aford173@gmail.com> wrote:
>
> On Fri, Oct 25, 2019 at 7:27 PM Michael Walle <michael@walle.cc> wrote:
> >
> > This series cleans up the Atheros PHY AR803x PHY driver and adds a
> > device tree binding for the most commonly used PHY settings like clock
> > output.
> >
> > If you're a board maintainer you're getting this mail because you probably
> > use an AR803x PHY on your board. Please have a look at your board specific
> > code and see if you can use the device tree bindings instead. Let me know,
> > if something is missing.
>
> Thank you for this!
>
> I was able to remove board_phy_config and the supporting
> ar8031_phy_fixup functions to a total of nearly 30 lines of code.
Please disregard my comment. From a cold boot, I cannot remove these lines.
adam
>
> For the whole series...
> Tested-by: Adam Ford <aford173@gmail.com> # imx6q_logic
> >
> > Michael Walle (9):
> > phy: atheros: introduce debug read and write functions
> > phy: atheros: move delay config to common function
> > phy: atheros: ar8035: remove extra delay config
> > phy: atheros: ar8035: use phy_{read|write}_mmd()
> > phy: atheros: don't overwrite debug register values
> > phy: atheros: fix delay configuration
> > phy: atheros: Add device tree bindings and config
> > phy: atheros: ar8035: remove static clock config
> > phy: atheros: consolidate {ar8031|ar8035}_config()
> >
> > doc/device-tree-bindings/net/phy/atheros.txt | 22 ++
> > drivers/net/phy/atheros.c | 262 +++++++++++++++----
> > 2 files changed, 240 insertions(+), 44 deletions(-)
> > create mode 100644 doc/device-tree-bindings/net/phy/atheros.txt
> >
> > Cc: Joe Hershberger <joe.hershberger@ni.com>
> > Cc: Fabio Estevam <fabio.estevam@nxp.com>
> > Cc: Adam Ford <aford173@gmail.com>
> > Cc: Otavio Salvador <otavio@ossystems.com.br>
> > Cc: Ian Ray <ian.ray@ge.com>
> > Cc: Jason Liu <jason.hui.liu@nxp.com>
> > Cc: Ye Li <ye.li@nxp.com>
> > Cc: Uri Mashiach <uri.mashiach@compulab.co.il>
> > Cc: Nikita Kiryanov <nikita@compulab.co.il>
> > Cc: Lukasz Majewski <lukma@denx.de>
> > Cc: Fabio Estevam <festevam@gmail.com>
> > Cc: Vanessa Maegima <vanessa.maegima@nxp.com>
> > Cc: Eric Bénard <eric@eukrea.com>
> > --
> > 2.20.1
> >
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings
2019-10-26 3:28 ` Adam Ford
@ 2019-10-26 8:56 ` Michael Walle
2019-10-26 21:03 ` Adam Ford
0 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-10-26 8:56 UTC (permalink / raw)
To: u-boot
Hi Adam,
Am 2019-10-26 05:28, schrieb Adam Ford:
> On Fri, Oct 25, 2019 at 10:20 PM Adam Ford <aford173@gmail.com> wrote:
>>
>> On Fri, Oct 25, 2019 at 7:27 PM Michael Walle <michael@walle.cc>
>> wrote:
>> >
>> > This series cleans up the Atheros PHY AR803x PHY driver and adds a
>> > device tree binding for the most commonly used PHY settings like clock
>> > output.
>> >
>> > If you're a board maintainer you're getting this mail because you probably
>> > use an AR803x PHY on your board. Please have a look at your board specific
>> > code and see if you can use the device tree bindings instead. Let me know,
>> > if something is missing.
>>
>> Thank you for this!
>>
>> I was able to remove board_phy_config and the supporting
>> ar8031_phy_fixup functions to a total of nearly 30 lines of code.
>
> Please disregard my comment. From a cold boot, I cannot remove these
> lines.
Thank you for testing though. I guess your network drivers needs
something like that:
https://patchwork.ozlabs.org/patch/1184523/
So here is a cheap shot (very hacky, doesn't work with
CONFIG_FEC_MXC_PHYADDR, completely untested, not even compiled ;). Could
you try that? I need to add some debug messages to the Atheros PHY
driver, so one could see if the device tree binding is working
correctly.
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -1264,7 +1264,7 @@ static const struct eth_ops fecmxc_ops = {
.read_rom_hwaddr = fecmxc_read_rom_hwaddr,
};
-static int device_get_phy_addr(struct udevice *dev)
+static int device_get_phy_addr(struct udevice *dev, struct ofnode
*phy_node)
{
struct ofnode_phandle_args phandle_args;
int reg;
@@ -1276,6 +1276,7 @@ static int device_get_phy_addr(struct udevice
*dev)
}
reg = ofnode_read_u32_default(phandle_args.node, "reg", 0);
+ phy_node = &phandle_args.node;
return reg;
}
@@ -1284,8 +1285,9 @@ static int fec_phy_init(struct fec_priv *priv,
struct udevice *dev)
{
struct phy_device *phydev;
int addr;
+ ofnode *phy_node;
- addr = device_get_phy_addr(dev);
+ addr = device_get_phy_addr(dev, &phy_node);
#ifdef CONFIG_FEC_MXC_PHYADDR
addr = CONFIG_FEC_MXC_PHYADDR;
#endif
@@ -1294,6 +1296,7 @@ static int fec_phy_init(struct fec_priv *priv,
struct udevice *dev)
if (!phydev)
return -ENODEV;
+ phydev->node = phy_node;
priv->phydev = phydev;
phy_config(phydev);
-michael
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings
2019-10-26 8:56 ` Michael Walle
@ 2019-10-26 21:03 ` Adam Ford
0 siblings, 0 replies; 40+ messages in thread
From: Adam Ford @ 2019-10-26 21:03 UTC (permalink / raw)
To: u-boot
On Sat, Oct 26, 2019 at 3:57 AM Michael Walle <michael@walle.cc> wrote:
>
> Hi Adam,
>
> Am 2019-10-26 05:28, schrieb Adam Ford:
> > On Fri, Oct 25, 2019 at 10:20 PM Adam Ford <aford173@gmail.com> wrote:
> >>
> >> On Fri, Oct 25, 2019 at 7:27 PM Michael Walle <michael@walle.cc>
> >> wrote:
> >> >
> >> > This series cleans up the Atheros PHY AR803x PHY driver and adds a
> >> > device tree binding for the most commonly used PHY settings like clock
> >> > output.
> >> >
> >> > If you're a board maintainer you're getting this mail because you probably
> >> > use an AR803x PHY on your board. Please have a look at your board specific
> >> > code and see if you can use the device tree bindings instead. Let me know,
> >> > if something is missing.
> >>
> >> Thank you for this!
> >>
> >> I was able to remove board_phy_config and the supporting
> >> ar8031_phy_fixup functions to a total of nearly 30 lines of code.
> >
> > Please disregard my comment. From a cold boot, I cannot remove these
> > lines.
>
> Thank you for testing though. I guess your network drivers needs
> something like that:
> https://patchwork.ozlabs.org/patch/1184523/
I tried with the 2nd series also applied with no luck either on my i.MX6Q.
>
> So here is a cheap shot (very hacky, doesn't work with
> CONFIG_FEC_MXC_PHYADDR, completely untested, not even compiled ;). Could
> you try that? I need to add some debug messages to the Atheros PHY
> driver, so one could see if the device tree binding is working
> correctly.
I will look at the following stuff when I have more time.
>
> --- a/drivers/net/fec_mxc.c
> +++ b/drivers/net/fec_mxc.c
> @@ -1264,7 +1264,7 @@ static const struct eth_ops fecmxc_ops = {
> .read_rom_hwaddr = fecmxc_read_rom_hwaddr,
> };
>
> -static int device_get_phy_addr(struct udevice *dev)
> +static int device_get_phy_addr(struct udevice *dev, struct ofnode
> *phy_node)
> {
> struct ofnode_phandle_args phandle_args;
> int reg;
> @@ -1276,6 +1276,7 @@ static int device_get_phy_addr(struct udevice
> *dev)
> }
>
> reg = ofnode_read_u32_default(phandle_args.node, "reg", 0);
> + phy_node = &phandle_args.node;
>
> return reg;
> }
> @@ -1284,8 +1285,9 @@ static int fec_phy_init(struct fec_priv *priv,
> struct udevice *dev)
> {
> struct phy_device *phydev;
> int addr;
> + ofnode *phy_node;
>
> - addr = device_get_phy_addr(dev);
> + addr = device_get_phy_addr(dev, &phy_node);
> #ifdef CONFIG_FEC_MXC_PHYADDR
> addr = CONFIG_FEC_MXC_PHYADDR;
> #endif
> @@ -1294,6 +1296,7 @@ static int fec_phy_init(struct fec_priv *priv,
> struct udevice *dev)
> if (!phydev)
> return -ENODEV;
>
> + phydev->node = phy_node;
> priv->phydev = phydev;
> phy_config(phydev);
>
>
> -michael
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH] phy: atheros: add some debug output
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
` (9 preceding siblings ...)
2019-10-26 3:20 ` [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Adam Ford
@ 2019-10-27 20:37 ` Michael Walle
2019-11-30 1:11 ` Joe Hershberger
2019-12-09 16:15 ` Joe Hershberger
10 siblings, 2 replies; 40+ messages in thread
From: Michael Walle @ 2019-10-27 20:37 UTC (permalink / raw)
To: u-boot
The network driver has to set the PHY node correctly. If that is not the
case, ar803x_of_init() will fail. Add some debugging output.
If the device tree binding is not working for you have a look at the
ar803x_of_init: found PHY node: phy at 0
output. In the case above "phy at 0" is the phy node in the device tree. If
instead the node of your network device is displayed, you have to set
the phydev->node property in your network device driver. For example,
the following patch adds it to the fsl_enetc driver:
https://patchwork.ozlabs.org/patch/1184523/
Signed-off-by: Michael Walle <michael@walle.cc>
---
drivers/net/phy/atheros.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index 922dc91835..f68e5f2cab 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -191,6 +191,8 @@ static int ar803x_of_init(struct phy_device *phydev)
if (!ofnode_valid(node))
return -EINVAL;
+ debug("%s: found PHY node: %s\n", __func__, ofnode_get_name(node));
+
if (ofnode_read_bool(node, "atheros,keep-pll-enabled"))
priv->flags |= AR803x_FLAG_KEEP_PLL_ENABLED;
if (ofnode_read_bool(node, "atheros,rgmii-io-1v8"))
@@ -236,6 +238,9 @@ static int ar803x_of_init(struct phy_device *phydev)
return -EINVAL;
}
}
+
+ debug("%s: flags=%x clk_25m_reg=%04x\n", __func__, priv->flags,
+ priv->clk_25m_reg);
#endif
return 0;
--
2.20.1
^ permalink raw reply related [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 6/9] phy: atheros: fix delay configuration
2019-10-26 0:26 ` [U-Boot] [PATCH 6/9] phy: atheros: fix delay configuration Michael Walle
@ 2019-10-28 16:25 ` Vladimir Oltean
2019-11-30 1:17 ` Joe Hershberger
1 sibling, 0 replies; 40+ messages in thread
From: Vladimir Oltean @ 2019-10-28 16:25 UTC (permalink / raw)
To: u-boot
On Sat, 26 Oct 2019 at 03:31, Michael Walle <michael@walle.cc> wrote:
>
> The delay_config() code could only set the delay bit. Thus, it could
> only enable the delay mode, but not disable it. To make things worse,
> the RX delay mode is enabled by default after a hardware reset, so it
> could never be disabled. Fix this, by always setting or clearing the
> bits. This is also how the linux kernel configures the PHY.
>
> If bisecting shows that this commit breaks your board you probably have
> a wrong PHY interface mode. You probably want the
> PHY_INTERFACE_MODE_RGMII_RXID or PHY_INTERFACE_MODE_RGMII_ID mode.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
> ---
> drivers/net/phy/atheros.c | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
> index 4b7a1fb9c4..8bf26626ff 100644
> --- a/drivers/net/phy/atheros.c
> +++ b/drivers/net/phy/atheros.c
> @@ -78,6 +78,11 @@ static int ar803x_delay_config(struct phy_device *phydev)
> 0, AR803x_RGMII_TX_CLK_DLY);
> if (ret < 0)
> return ret;
> + } else {
> + ret = ar803x_debug_reg_mask(phydev, AR803x_DEBUG_REG_5,
> + AR803x_RGMII_TX_CLK_DLY, 0);
> + if (ret < 0)
> + return ret;
> }
>
> if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID ||
> @@ -86,6 +91,11 @@ static int ar803x_delay_config(struct phy_device *phydev)
> 0, AR803x_RGMII_RX_CLK_DLY);
> if (ret < 0)
> return ret;
> + } else {
> + ret = ar803x_debug_reg_mask(phydev, AR803x_DEBUG_REG_0,
> + AR803x_RGMII_RX_CLK_DLY, 0);
> + if (ret < 0)
> + return ret;
> }
>
> return 0;
> --
> 2.20.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
Hi Michael,
Are you aware of this discussion thread?
https://www.mail-archive.com/u-boot at lists.denx.de/msg326821.html
Thanks,
-Vladimir
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH] phy: atheros: add some debug output
2019-10-27 20:37 ` [U-Boot] [PATCH] phy: atheros: add some debug output Michael Walle
@ 2019-11-30 1:11 ` Joe Hershberger
2019-12-09 16:15 ` Joe Hershberger
1 sibling, 0 replies; 40+ messages in thread
From: Joe Hershberger @ 2019-11-30 1:11 UTC (permalink / raw)
To: u-boot
On Sun, Oct 27, 2019 at 3:38 PM Michael Walle <michael@walle.cc> wrote:
>
> The network driver has to set the PHY node correctly. If that is not the
> case, ar803x_of_init() will fail. Add some debugging output.
>
> If the device tree binding is not working for you have a look at the
> ar803x_of_init: found PHY node: phy at 0
> output. In the case above "phy at 0" is the phy node in the device tree. If
> instead the node of your network device is displayed, you have to set
> the phydev->node property in your network device driver. For example,
> the following patch adds it to the fsl_enetc driver:
> https://patchwork.ozlabs.org/patch/1184523/
>
> Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-10-26 0:26 ` [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions Michael Walle
@ 2019-11-30 1:11 ` Joe Hershberger
2019-12-05 23:03 ` Michael Walle
2019-12-05 23:03 ` Michael Walle
2019-12-05 15:55 ` Joe Hershberger
1 sibling, 2 replies; 40+ messages in thread
From: Joe Hershberger @ 2019-11-30 1:11 UTC (permalink / raw)
To: u-boot
On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
>
> Provide functions to read and write the Atheros debug registers.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 2/9] phy: atheros: move delay config to common function
2019-10-26 0:26 ` [U-Boot] [PATCH 2/9] phy: atheros: move delay config to common function Michael Walle
@ 2019-11-30 1:13 ` Joe Hershberger
0 siblings, 0 replies; 40+ messages in thread
From: Joe Hershberger @ 2019-11-30 1:13 UTC (permalink / raw)
To: u-boot
On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
>
> Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 3/9] phy: atheros: ar8035: remove extra delay config
2019-10-26 0:26 ` [U-Boot] [PATCH 3/9] phy: atheros: ar8035: remove extra delay config Michael Walle
@ 2019-11-30 1:13 ` Joe Hershberger
0 siblings, 0 replies; 40+ messages in thread
From: Joe Hershberger @ 2019-11-30 1:13 UTC (permalink / raw)
To: u-boot
On Fri, Oct 25, 2019 at 7:29 PM Michael Walle <michael@walle.cc> wrote:
>
> Remove the hard-coded delay configuration. The AR8035 config() always
> enabled the TX delay mode, although it will be set according to the PHY
> interface mode, too.
>
> If bisecting shows that this commit breaks your board you probably have
> a wrong PHY interface mode. You probably want the
> PHY_INTERFACE_MODE_RGMII_TXID or PHY_INTERFACE_MODE_RGMII_ID mode.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 4/9] phy: atheros: ar8035: use phy_{read|write}_mmd()
2019-10-26 0:26 ` [U-Boot] [PATCH 4/9] phy: atheros: ar8035: use phy_{read|write}_mmd() Michael Walle
@ 2019-11-30 1:14 ` Joe Hershberger
0 siblings, 0 replies; 40+ messages in thread
From: Joe Hershberger @ 2019-11-30 1:14 UTC (permalink / raw)
To: u-boot
On Fri, Oct 25, 2019 at 7:31 PM Michael Walle <michael@walle.cc> wrote:
>
> Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 5/9] phy: atheros: don't overwrite debug register values
2019-10-26 0:26 ` [U-Boot] [PATCH 5/9] phy: atheros: don't overwrite debug register values Michael Walle
@ 2019-11-30 1:15 ` Joe Hershberger
0 siblings, 0 replies; 40+ messages in thread
From: Joe Hershberger @ 2019-11-30 1:15 UTC (permalink / raw)
To: u-boot
On Fri, Oct 25, 2019 at 7:30 PM Michael Walle <michael@walle.cc> wrote:
>
> Instead of doing a hard write, do a read-modify-write.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 6/9] phy: atheros: fix delay configuration
2019-10-26 0:26 ` [U-Boot] [PATCH 6/9] phy: atheros: fix delay configuration Michael Walle
2019-10-28 16:25 ` Vladimir Oltean
@ 2019-11-30 1:17 ` Joe Hershberger
1 sibling, 0 replies; 40+ messages in thread
From: Joe Hershberger @ 2019-11-30 1:17 UTC (permalink / raw)
To: u-boot
On Fri, Oct 25, 2019 at 7:30 PM Michael Walle <michael@walle.cc> wrote:
>
> The delay_config() code could only set the delay bit. Thus, it could
> only enable the delay mode, but not disable it. To make things worse,
> the RX delay mode is enabled by default after a hardware reset, so it
> could never be disabled. Fix this, by always setting or clearing the
> bits. This is also how the linux kernel configures the PHY.
>
> If bisecting shows that this commit breaks your board you probably have
> a wrong PHY interface mode. You probably want the
> PHY_INTERFACE_MODE_RGMII_RXID or PHY_INTERFACE_MODE_RGMII_ID mode.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
Either the offending dts's are already updated or they will be when
this breaks them. It's been 6 months.
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 7/9] phy: atheros: Add device tree bindings and config
2019-10-26 0:26 ` [U-Boot] [PATCH 7/9] phy: atheros: Add device tree bindings and config Michael Walle
@ 2019-11-30 1:18 ` Joe Hershberger
0 siblings, 0 replies; 40+ messages in thread
From: Joe Hershberger @ 2019-11-30 1:18 UTC (permalink / raw)
To: u-boot
On Fri, Oct 25, 2019 at 7:29 PM Michael Walle <michael@walle.cc> wrote:
>
> Add support for configuring the CLK_25M pin as well as the RGMII I/O
> voltage by the device tree.
>
> By default the AT803x PHYs outputs the 25MHz clock of the XTAL input.
> But this output can also be changed by software to other frequencies.
> This commit introduces a generic way to configure this output.
>
> Also the PHY supports different RGMII I/O voltages: 1.5V, 1.8V and 2.5V.
> An internal LDO is able to provide 1.5V (default) and 1.8V. The 2.5V
> option needs an external supply voltage. This commit adds support to
> switch the internal LDO to 1.8V.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 8/9] phy: atheros: ar8035: remove static clock config
2019-10-26 0:26 ` [U-Boot] [PATCH 8/9] phy: atheros: ar8035: remove static clock config Michael Walle
@ 2019-11-30 1:18 ` Joe Hershberger
0 siblings, 0 replies; 40+ messages in thread
From: Joe Hershberger @ 2019-11-30 1:18 UTC (permalink / raw)
To: u-boot
On Fri, Oct 25, 2019 at 7:29 PM Michael Walle <michael@walle.cc> wrote:
>
> We can configure the clock output in the device tree. Disable the
> hardcoded one in here. This is highly board-specific and should have
> never been enabled in the PHY driver.
>
> If bisecting shows that this commit breaks your board it probably
> depends on the clock output of your Atheros AR8035 PHY. Please have a
> look at doc/device-tree-bindings/net/phy/atheros.txt. You need to set
> "clk-out-frequency = <125000000>" because that value was the hardcoded
> value until this commit.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 9/9] phy: atheros: consolidate {ar8031|ar8035}_config()
2019-10-26 0:26 ` [U-Boot] [PATCH 9/9] phy: atheros: consolidate {ar8031|ar8035}_config() Michael Walle
@ 2019-11-30 1:19 ` Joe Hershberger
0 siblings, 0 replies; 40+ messages in thread
From: Joe Hershberger @ 2019-11-30 1:19 UTC (permalink / raw)
To: u-boot
On Fri, Oct 25, 2019 at 7:29 PM Michael Walle <michael@walle.cc> wrote:
>
> The two functions are now exactly the same, remove one of them.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-10-26 0:26 ` [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions Michael Walle
2019-11-30 1:11 ` Joe Hershberger
@ 2019-12-05 15:55 ` Joe Hershberger
2019-12-05 23:27 ` Michael Walle
1 sibling, 1 reply; 40+ messages in thread
From: Joe Hershberger @ 2019-12-05 15:55 UTC (permalink / raw)
To: u-boot
Hi Michael,
On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
>
> Provide functions to read and write the Atheros debug registers.
>
> Signed-off-by: Michael Walle <michael@walle.cc>
This series is adding too much size to several of the boards' SPL it seems.
https://travis-ci.org/jhershbe/u-boot/builds/620804934
Please address this and resend.
Thanks,
-Joe
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-11-30 1:11 ` Joe Hershberger
@ 2019-12-05 23:03 ` Michael Walle
2019-12-05 23:03 ` Michael Walle
1 sibling, 0 replies; 40+ messages in thread
From: Michael Walle @ 2019-12-05 23:03 UTC (permalink / raw)
To: u-boot
Am 2019-11-30 02:11, schrieb Joe Hershberger:
> On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
>>
>> Provide functions to read and write the Atheros debug registers.
>>
>> Signed-off-by: Michael Walle <michael@walle.cc>
>
> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Sorry this was superseeded by
https://patchwork.ozlabs.org/project/uboot/list/?series=146771
Unfortunately, I've forgot to add the mailinglist to the original
series. So it never ended up in the patchwork system :(
-michael
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-11-30 1:11 ` Joe Hershberger
2019-12-05 23:03 ` Michael Walle
@ 2019-12-05 23:03 ` Michael Walle
1 sibling, 0 replies; 40+ messages in thread
From: Michael Walle @ 2019-12-05 23:03 UTC (permalink / raw)
To: u-boot
Am 2019-11-30 02:11, schrieb Joe Hershberger:
> On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
>>
>> Provide functions to read and write the Atheros debug registers.
>>
>> Signed-off-by: Michael Walle <michael@walle.cc>
>
> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Sorry this series superseeded by
https://patchwork.ozlabs.org/project/uboot/list/?series=146771
Unfortunately, I've forgot to add the mailinglist to the original
series. So it never ended up in the patchwork system :(
-michael
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-12-05 15:55 ` Joe Hershberger
@ 2019-12-05 23:27 ` Michael Walle
2019-12-05 23:58 ` Tom Rini
0 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-12-05 23:27 UTC (permalink / raw)
To: u-boot
Hi Joe, Hi Tom,
Am 2019-12-05 16:55, schrieb Joe Hershberger:
> Hi Michael,
>
> On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
>>
>> Provide functions to read and write the Atheros debug registers.
>>
>> Signed-off-by: Michael Walle <michael@walle.cc>
>
> This series is adding too much size to several of the boards' SPL it
> seems.
>
> https://travis-ci.org/jhershbe/u-boot/builds/620804934
>
> Please address this and resend.
So first of all, this was the old series. There was a v2 series, but
unfortunately, I've forgot to add the mailing to the recipients, so it
never ended up in the patchwork system. sorry :(
I've resend the v2 series here:
https://patchwork.ozlabs.org/project/uboot/list/?series=146771
Now coming to the real problem here. The sizes, or like some boards
handle
the SPL stuff. Btw. I could not reproduce it on the
am335x_boneblack_vboot
board with a gcc-8. I've seen the travis ci job uses the gcc-7 so this
also
depends on the gcc. gcc-8 seems to produce smaller code, because on the
am335x_evm the overflow was only by some 100 bytes.
So taking the am335x_evm board for example. It has the following options
set:
CONFIG_DM_ETH=y
CONFIG_SPL_NET_SUPPORT=y
CONFIG_PHY_ATHEROS=y (this one is set in the config.h!)
So adding a new binding for the phy obviously increases the code size.
But
the hard question is, how could that be fixed. IMHO the board has wrong
settings. I really don't know how that could be "fixed" other than not
applying this series. Well, we could make the additions conditional and
introduce a new Kconfig setting, but that is a relly ugly hack and won't
last long, would it? Doh!
-michael
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-12-05 23:27 ` Michael Walle
@ 2019-12-05 23:58 ` Tom Rini
2019-12-06 0:39 ` Michael Walle
` (2 more replies)
0 siblings, 3 replies; 40+ messages in thread
From: Tom Rini @ 2019-12-05 23:58 UTC (permalink / raw)
To: u-boot
On Fri, Dec 06, 2019 at 12:27:39AM +0100, Michael Walle wrote:
> Hi Joe, Hi Tom,
>
> Am 2019-12-05 16:55, schrieb Joe Hershberger:
> > Hi Michael,
> >
> > On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
> > >
> > > Provide functions to read and write the Atheros debug registers.
> > >
> > > Signed-off-by: Michael Walle <michael@walle.cc>
> >
> > This series is adding too much size to several of the boards' SPL it
> > seems.
> >
> > https://travis-ci.org/jhershbe/u-boot/builds/620804934
> >
> > Please address this and resend.
>
> So first of all, this was the old series. There was a v2 series, but
> unfortunately, I've forgot to add the mailing to the recipients, so it
> never ended up in the patchwork system. sorry :(
>
> I've resend the v2 series here:
> https://patchwork.ozlabs.org/project/uboot/list/?series=146771
>
> Now coming to the real problem here. The sizes, or like some boards handle
> the SPL stuff. Btw. I could not reproduce it on the am335x_boneblack_vboot
> board with a gcc-8. I've seen the travis ci job uses the gcc-7 so this also
> depends on the gcc. gcc-8 seems to produce smaller code, because on the
> am335x_evm the overflow was only by some 100 bytes.
>
> So taking the am335x_evm board for example. It has the following options
> set:
> CONFIG_DM_ETH=y
> CONFIG_SPL_NET_SUPPORT=y
> CONFIG_PHY_ATHEROS=y (this one is set in the config.h!)
>
> So adding a new binding for the phy obviously increases the code size. But
> the hard question is, how could that be fixed. IMHO the board has wrong
> settings. I really don't know how that could be "fixed" other than not
> applying this series. Well, we could make the additions conditional and
> introduce a new Kconfig setting, but that is a relly ugly hack and won't
> last long, would it? Doh!
So, the gcc-7 from kernel.org is the min required and must work
toolchain. Maybe once gcc-9 is mature enough for people to have made
stand-alone toolchains for it we'll move up to that but gcc-8 for
everyone ends up being too hard. For the boneblack_vboot config, we
could just drop SPL networking, it's not super critical to that
particular example. But am335x_evm is the kitchen-sink EVM and it is
used and supported there.
That said, looking over the u-boot-spl.map, it looks like nfs stuff
doesn't get discarded for some reason, I'm going to look in to that.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20191205/7c8cfeb4/attachment.sig>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-12-05 23:58 ` Tom Rini
@ 2019-12-06 0:39 ` Michael Walle
2019-12-06 4:08 ` Tom Rini
2019-12-06 0:53 ` Michael Walle
2019-12-09 18:42 ` Michael Walle
2 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-12-06 0:39 UTC (permalink / raw)
To: u-boot
Hi Tom,
Am 2019-12-06 00:58, schrieb Tom Rini:
> On Fri, Dec 06, 2019 at 12:27:39AM +0100, Michael Walle wrote:
>> Hi Joe, Hi Tom,
>>
>> Am 2019-12-05 16:55, schrieb Joe Hershberger:
>> > Hi Michael,
>> >
>> > On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
>> > >
>> > > Provide functions to read and write the Atheros debug registers.
>> > >
>> > > Signed-off-by: Michael Walle <michael@walle.cc>
>> >
>> > This series is adding too much size to several of the boards' SPL it
>> > seems.
>> >
>> > https://travis-ci.org/jhershbe/u-boot/builds/620804934
>> >
>> > Please address this and resend.
>>
>> So first of all, this was the old series. There was a v2 series, but
>> unfortunately, I've forgot to add the mailing to the recipients, so it
>> never ended up in the patchwork system. sorry :(
>>
>> I've resend the v2 series here:
>> https://patchwork.ozlabs.org/project/uboot/list/?series=146771
>>
>> Now coming to the real problem here. The sizes, or like some boards
>> handle
>> the SPL stuff. Btw. I could not reproduce it on the
>> am335x_boneblack_vboot
>> board with a gcc-8. I've seen the travis ci job uses the gcc-7 so this
>> also
>> depends on the gcc. gcc-8 seems to produce smaller code, because on
>> the
>> am335x_evm the overflow was only by some 100 bytes.
>>
>> So taking the am335x_evm board for example. It has the following
>> options
>> set:
>> CONFIG_DM_ETH=y
>> CONFIG_SPL_NET_SUPPORT=y
>> CONFIG_PHY_ATHEROS=y (this one is set in the config.h!)
>>
>> So adding a new binding for the phy obviously increases the code size.
>> But
>> the hard question is, how could that be fixed. IMHO the board has
>> wrong
>> settings. I really don't know how that could be "fixed" other than not
>> applying this series. Well, we could make the additions conditional
>> and
>> introduce a new Kconfig setting, but that is a relly ugly hack and
>> won't
>> last long, would it? Doh!
>
> So, the gcc-7 from kernel.org is the min required and must work
> toolchain.
Ok.
> Maybe once gcc-9 is mature enough for people to have made
> stand-alone toolchains for it we'll move up to that but gcc-8 for
> everyone ends up being too hard. For the boneblack_vboot config, we
> could just drop SPL networking, it's not super critical to that
> particular example. But am335x_evm is the kitchen-sink EVM and it is
> used and supported there.
>
> That said, looking over the u-boot-spl.map, it looks like nfs stuff
> doesn't get discarded for some reason, I'm going to look in to that.
Well but that is just some kind of band aid. These two boards were just
an example. There were also other boards which failed. I doubt the DM
stuff is getting smaller (I know there is some discussion how to
improve the situation). But there seems to be no way to disable the
ethernet device model for the SPL, correct? And unfortunately, this
also pulls the PHY library (with potential DM bindings).
-michael
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-12-05 23:58 ` Tom Rini
2019-12-06 0:39 ` Michael Walle
@ 2019-12-06 0:53 ` Michael Walle
2019-12-06 4:10 ` Tom Rini
2019-12-09 18:42 ` Michael Walle
2 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-12-06 0:53 UTC (permalink / raw)
To: u-boot
Am 2019-12-06 00:58, schrieb Tom Rini:
> That said, looking over the u-boot-spl.map, it looks like nfs stuff
> doesn't get discarded for some reason, I'm going to look in to that.
CONFIG_CMD_NFS will pull that. There are also other network related
cmds whose code is pulled into the SPL through net/net.c.
-michael
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-12-06 0:39 ` Michael Walle
@ 2019-12-06 4:08 ` Tom Rini
0 siblings, 0 replies; 40+ messages in thread
From: Tom Rini @ 2019-12-06 4:08 UTC (permalink / raw)
To: u-boot
On Fri, Dec 06, 2019 at 01:39:29AM +0100, Michael Walle wrote:
> Hi Tom,
>
> Am 2019-12-06 00:58, schrieb Tom Rini:
> > On Fri, Dec 06, 2019 at 12:27:39AM +0100, Michael Walle wrote:
> > > Hi Joe, Hi Tom,
> > >
> > > Am 2019-12-05 16:55, schrieb Joe Hershberger:
> > > > Hi Michael,
> > > >
> > > > On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
> > > > >
> > > > > Provide functions to read and write the Atheros debug registers.
> > > > >
> > > > > Signed-off-by: Michael Walle <michael@walle.cc>
> > > >
> > > > This series is adding too much size to several of the boards' SPL it
> > > > seems.
> > > >
> > > > https://travis-ci.org/jhershbe/u-boot/builds/620804934
> > > >
> > > > Please address this and resend.
> > >
> > > So first of all, this was the old series. There was a v2 series, but
> > > unfortunately, I've forgot to add the mailing to the recipients, so it
> > > never ended up in the patchwork system. sorry :(
> > >
> > > I've resend the v2 series here:
> > > https://patchwork.ozlabs.org/project/uboot/list/?series=146771
> > >
> > > Now coming to the real problem here. The sizes, or like some boards
> > > handle
> > > the SPL stuff. Btw. I could not reproduce it on the
> > > am335x_boneblack_vboot
> > > board with a gcc-8. I've seen the travis ci job uses the gcc-7 so
> > > this also
> > > depends on the gcc. gcc-8 seems to produce smaller code, because on
> > > the
> > > am335x_evm the overflow was only by some 100 bytes.
> > >
> > > So taking the am335x_evm board for example. It has the following
> > > options
> > > set:
> > > CONFIG_DM_ETH=y
> > > CONFIG_SPL_NET_SUPPORT=y
> > > CONFIG_PHY_ATHEROS=y (this one is set in the config.h!)
> > >
> > > So adding a new binding for the phy obviously increases the code
> > > size. But
> > > the hard question is, how could that be fixed. IMHO the board has
> > > wrong
> > > settings. I really don't know how that could be "fixed" other than not
> > > applying this series. Well, we could make the additions conditional
> > > and
> > > introduce a new Kconfig setting, but that is a relly ugly hack and
> > > won't
> > > last long, would it? Doh!
> >
> > So, the gcc-7 from kernel.org is the min required and must work
> > toolchain.
>
> Ok.
>
> > Maybe once gcc-9 is mature enough for people to have made
> > stand-alone toolchains for it we'll move up to that but gcc-8 for
> > everyone ends up being too hard. For the boneblack_vboot config, we
> > could just drop SPL networking, it's not super critical to that
> > particular example. But am335x_evm is the kitchen-sink EVM and it is
> > used and supported there.
> >
> > That said, looking over the u-boot-spl.map, it looks like nfs stuff
> > doesn't get discarded for some reason, I'm going to look in to that.
>
> Well but that is just some kind of band aid. These two boards were just
> an example. There were also other boards which failed. I doubt the DM
> stuff is getting smaller (I know there is some discussion how to
> improve the situation). But there seems to be no way to disable the
> ethernet device model for the SPL, correct? And unfortunately, this
> also pulls the PHY library (with potential DM bindings).
So, yes, keeping in mind that SPL matters for networking and we need to
keep that in mind when adding features. Thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20191205/a6ee7e14/attachment.sig>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-12-06 0:53 ` Michael Walle
@ 2019-12-06 4:10 ` Tom Rini
0 siblings, 0 replies; 40+ messages in thread
From: Tom Rini @ 2019-12-06 4:10 UTC (permalink / raw)
To: u-boot
On Fri, Dec 06, 2019 at 01:53:57AM +0100, Michael Walle wrote:
> Am 2019-12-06 00:58, schrieb Tom Rini:
> > That said, looking over the u-boot-spl.map, it looks like nfs stuff
> > doesn't get discarded for some reason, I'm going to look in to that.
>
> CONFIG_CMD_NFS will pull that. There are also other network related
> cmds whose code is pulled into the SPL through net/net.c.
Right. The way the networking stack behaves today I bet we have other
functionality being pulled in to SPL that we would rather be able to
discard as it's functionally unused. What I sent to keep NFS out is a
little hacky looking but is the best we can do with the current
structure. There might be a few other options we can drop out from the
loop.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20191205/5a9c0699/attachment.sig>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH] phy: atheros: add some debug output
2019-10-27 20:37 ` [U-Boot] [PATCH] phy: atheros: add some debug output Michael Walle
2019-11-30 1:11 ` Joe Hershberger
@ 2019-12-09 16:15 ` Joe Hershberger
1 sibling, 0 replies; 40+ messages in thread
From: Joe Hershberger @ 2019-12-09 16:15 UTC (permalink / raw)
To: u-boot
Hi Michael,
On Sun, Oct 27, 2019 at 3:38 PM Michael Walle <michael@walle.cc> wrote:
>
> The network driver has to set the PHY node correctly. If that is not the
> case, ar803x_of_init() will fail. Add some debugging output.
>
> If the device tree binding is not working for you have a look at the
> ar803x_of_init: found PHY node: phy at 0
> output. In the case above "phy at 0" is the phy node in the device tree. If
> instead the node of your network device is displayed, you have to set
> the phydev->node property in your network device driver. For example,
> the following patch adds it to the fsl_enetc driver:
> https://patchwork.ozlabs.org/patch/1184523/
>
> Signed-off-by: Michael Walle <michael@walle.cc>
This doesn't apply so I assume it's either superseded or not needed
any more. If those are not the case, please rebase and resend on top
of u-boot-net/master
Thanks,
-Joe
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-12-05 23:58 ` Tom Rini
2019-12-06 0:39 ` Michael Walle
2019-12-06 0:53 ` Michael Walle
@ 2019-12-09 18:42 ` Michael Walle
2019-12-09 18:47 ` Tom Rini
2 siblings, 1 reply; 40+ messages in thread
From: Michael Walle @ 2019-12-09 18:42 UTC (permalink / raw)
To: u-boot
Hi Tom, Hi Joe,
Am 2019-12-06 00:58, schrieb Tom Rini:
> On Fri, Dec 06, 2019 at 12:27:39AM +0100, Michael Walle wrote:
>> Hi Joe, Hi Tom,
>>
>> Am 2019-12-05 16:55, schrieb Joe Hershberger:
>> > Hi Michael,
>> >
>> > On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
>> > >
>> > > Provide functions to read and write the Atheros debug registers.
>> > >
>> > > Signed-off-by: Michael Walle <michael@walle.cc>
>> >
>> > This series is adding too much size to several of the boards' SPL it
>> > seems.
>> >
>> > https://travis-ci.org/jhershbe/u-boot/builds/620804934
>> >
>> > Please address this and resend.
>>
>> So first of all, this was the old series. There was a v2 series, but
>> unfortunately, I've forgot to add the mailing to the recipients, so it
>> never ended up in the patchwork system. sorry :(
>>
>> I've resend the v2 series here:
>> https://patchwork.ozlabs.org/project/uboot/list/?series=146771
>>
>> Now coming to the real problem here. The sizes, or like some boards
>> handle
>> the SPL stuff. Btw. I could not reproduce it on the
>> am335x_boneblack_vboot
>> board with a gcc-8. I've seen the travis ci job uses the gcc-7 so this
>> also
>> depends on the gcc. gcc-8 seems to produce smaller code, because on
>> the
>> am335x_evm the overflow was only by some 100 bytes.
>>
>> So taking the am335x_evm board for example. It has the following
>> options
>> set:
>> CONFIG_DM_ETH=y
>> CONFIG_SPL_NET_SUPPORT=y
>> CONFIG_PHY_ATHEROS=y (this one is set in the config.h!)
>>
>> So adding a new binding for the phy obviously increases the code size.
>> But
>> the hard question is, how could that be fixed. IMHO the board has
>> wrong
>> settings. I really don't know how that could be "fixed" other than not
>> applying this series. Well, we could make the additions conditional
>> and
>> introduce a new Kconfig setting, but that is a relly ugly hack and
>> won't
>> last long, would it? Doh!
>
> So, the gcc-7 from kernel.org is the min required and must work
> toolchain. Maybe once gcc-9 is mature enough for people to have made
> stand-alone toolchains for it we'll move up to that but gcc-8 for
> everyone ends up being too hard. For the boneblack_vboot config, we
> could just drop SPL networking, it's not super critical to that
> particular example. But am335x_evm is the kitchen-sink EVM and it is
> used and supported there.
>
> That said, looking over the u-boot-spl.map, it looks like nfs stuff
> doesn't get discarded for some reason, I'm going to look in to that.
So do I need to do something now? I guess removing the NFS stuff will
make enough room to fit this. But how do we make sure, it will be
applied
with this series?
-michael
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-12-09 18:42 ` Michael Walle
@ 2019-12-09 18:47 ` Tom Rini
2019-12-09 19:46 ` Joe Hershberger
0 siblings, 1 reply; 40+ messages in thread
From: Tom Rini @ 2019-12-09 18:47 UTC (permalink / raw)
To: u-boot
On Mon, Dec 09, 2019 at 07:42:00PM +0100, Michael Walle wrote:
> Hi Tom, Hi Joe,
>
> Am 2019-12-06 00:58, schrieb Tom Rini:
> > On Fri, Dec 06, 2019 at 12:27:39AM +0100, Michael Walle wrote:
> > > Hi Joe, Hi Tom,
> > >
> > > Am 2019-12-05 16:55, schrieb Joe Hershberger:
> > > > Hi Michael,
> > > >
> > > > On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
> > > > >
> > > > > Provide functions to read and write the Atheros debug registers.
> > > > >
> > > > > Signed-off-by: Michael Walle <michael@walle.cc>
> > > >
> > > > This series is adding too much size to several of the boards' SPL it
> > > > seems.
> > > >
> > > > https://travis-ci.org/jhershbe/u-boot/builds/620804934
> > > >
> > > > Please address this and resend.
> > >
> > > So first of all, this was the old series. There was a v2 series, but
> > > unfortunately, I've forgot to add the mailing to the recipients, so it
> > > never ended up in the patchwork system. sorry :(
> > >
> > > I've resend the v2 series here:
> > > https://patchwork.ozlabs.org/project/uboot/list/?series=146771
> > >
> > > Now coming to the real problem here. The sizes, or like some boards
> > > handle
> > > the SPL stuff. Btw. I could not reproduce it on the
> > > am335x_boneblack_vboot
> > > board with a gcc-8. I've seen the travis ci job uses the gcc-7 so
> > > this also
> > > depends on the gcc. gcc-8 seems to produce smaller code, because on
> > > the
> > > am335x_evm the overflow was only by some 100 bytes.
> > >
> > > So taking the am335x_evm board for example. It has the following
> > > options
> > > set:
> > > CONFIG_DM_ETH=y
> > > CONFIG_SPL_NET_SUPPORT=y
> > > CONFIG_PHY_ATHEROS=y (this one is set in the config.h!)
> > >
> > > So adding a new binding for the phy obviously increases the code
> > > size. But
> > > the hard question is, how could that be fixed. IMHO the board has
> > > wrong
> > > settings. I really don't know how that could be "fixed" other than not
> > > applying this series. Well, we could make the additions conditional
> > > and
> > > introduce a new Kconfig setting, but that is a relly ugly hack and
> > > won't
> > > last long, would it? Doh!
> >
> > So, the gcc-7 from kernel.org is the min required and must work
> > toolchain. Maybe once gcc-9 is mature enough for people to have made
> > stand-alone toolchains for it we'll move up to that but gcc-8 for
> > everyone ends up being too hard. For the boneblack_vboot config, we
> > could just drop SPL networking, it's not super critical to that
> > particular example. But am335x_evm is the kitchen-sink EVM and it is
> > used and supported there.
> >
> > That said, looking over the u-boot-spl.map, it looks like nfs stuff
> > doesn't get discarded for some reason, I'm going to look in to that.
>
> So do I need to do something now? I guess removing the NFS stuff will
> make enough room to fit this. But how do we make sure, it will be applied
> with this series?
In this case, Joe has it in the -net PR right now. Thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20191209/527237a7/attachment.sig>
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-12-09 18:47 ` Tom Rini
@ 2019-12-09 19:46 ` Joe Hershberger
2019-12-09 20:10 ` Tom Rini
0 siblings, 1 reply; 40+ messages in thread
From: Joe Hershberger @ 2019-12-09 19:46 UTC (permalink / raw)
To: u-boot
Hi Tom,
On Mon, Dec 9, 2019 at 12:47 PM Tom Rini <trini@konsulko.com> wrote:
>
> On Mon, Dec 09, 2019 at 07:42:00PM +0100, Michael Walle wrote:
> > Hi Tom, Hi Joe,
> >
> > Am 2019-12-06 00:58, schrieb Tom Rini:
> > > On Fri, Dec 06, 2019 at 12:27:39AM +0100, Michael Walle wrote:
> > > > Hi Joe, Hi Tom,
> > > >
> > > > Am 2019-12-05 16:55, schrieb Joe Hershberger:
> > > > > Hi Michael,
> > > > >
> > > > > On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
> > > > > >
> > > > > > Provide functions to read and write the Atheros debug registers.
> > > > > >
> > > > > > Signed-off-by: Michael Walle <michael@walle.cc>
> > > > >
> > > > > This series is adding too much size to several of the boards' SPL it
> > > > > seems.
> > > > >
> > > > > https://travis-ci.org/jhershbe/u-boot/builds/620804934
> > > > >
> > > > > Please address this and resend.
> > > >
> > > > So first of all, this was the old series. There was a v2 series, but
> > > > unfortunately, I've forgot to add the mailing to the recipients, so it
> > > > never ended up in the patchwork system. sorry :(
> > > >
> > > > I've resend the v2 series here:
> > > > https://patchwork.ozlabs.org/project/uboot/list/?series=146771
> > > >
> > > > Now coming to the real problem here. The sizes, or like some boards
> > > > handle
> > > > the SPL stuff. Btw. I could not reproduce it on the
> > > > am335x_boneblack_vboot
> > > > board with a gcc-8. I've seen the travis ci job uses the gcc-7 so
> > > > this also
> > > > depends on the gcc. gcc-8 seems to produce smaller code, because on
> > > > the
> > > > am335x_evm the overflow was only by some 100 bytes.
> > > >
> > > > So taking the am335x_evm board for example. It has the following
> > > > options
> > > > set:
> > > > CONFIG_DM_ETH=y
> > > > CONFIG_SPL_NET_SUPPORT=y
> > > > CONFIG_PHY_ATHEROS=y (this one is set in the config.h!)
> > > >
> > > > So adding a new binding for the phy obviously increases the code
> > > > size. But
> > > > the hard question is, how could that be fixed. IMHO the board has
> > > > wrong
> > > > settings. I really don't know how that could be "fixed" other than not
> > > > applying this series. Well, we could make the additions conditional
> > > > and
> > > > introduce a new Kconfig setting, but that is a relly ugly hack and
> > > > won't
> > > > last long, would it? Doh!
> > >
> > > So, the gcc-7 from kernel.org is the min required and must work
> > > toolchain. Maybe once gcc-9 is mature enough for people to have made
> > > stand-alone toolchains for it we'll move up to that but gcc-8 for
> > > everyone ends up being too hard. For the boneblack_vboot config, we
> > > could just drop SPL networking, it's not super critical to that
> > > particular example. But am335x_evm is the kitchen-sink EVM and it is
> > > used and supported there.
> > >
> > > That said, looking over the u-boot-spl.map, it looks like nfs stuff
> > > doesn't get discarded for some reason, I'm going to look in to that.
> >
> > So do I need to do something now? I guess removing the NFS stuff will
> > make enough room to fit this. But how do we make sure, it will be applied
> > with this series?
>
> In this case, Joe has it in the -net PR right now. Thanks!
It's actually excluded from the PR. I need to go back and review the
rest of the v2 series.
Cheers,
-Joe
^ permalink raw reply [flat|nested] 40+ messages in thread
* [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions
2019-12-09 19:46 ` Joe Hershberger
@ 2019-12-09 20:10 ` Tom Rini
0 siblings, 0 replies; 40+ messages in thread
From: Tom Rini @ 2019-12-09 20:10 UTC (permalink / raw)
To: u-boot
On Mon, Dec 09, 2019 at 01:46:32PM -0600, Joe Hershberger wrote:
> Hi Tom,
>
> On Mon, Dec 9, 2019 at 12:47 PM Tom Rini <trini@konsulko.com> wrote:
> >
> > On Mon, Dec 09, 2019 at 07:42:00PM +0100, Michael Walle wrote:
> > > Hi Tom, Hi Joe,
> > >
> > > Am 2019-12-06 00:58, schrieb Tom Rini:
> > > > On Fri, Dec 06, 2019 at 12:27:39AM +0100, Michael Walle wrote:
> > > > > Hi Joe, Hi Tom,
> > > > >
> > > > > Am 2019-12-05 16:55, schrieb Joe Hershberger:
> > > > > > Hi Michael,
> > > > > >
> > > > > > On Fri, Oct 25, 2019 at 7:28 PM Michael Walle <michael@walle.cc> wrote:
> > > > > > >
> > > > > > > Provide functions to read and write the Atheros debug registers.
> > > > > > >
> > > > > > > Signed-off-by: Michael Walle <michael@walle.cc>
> > > > > >
> > > > > > This series is adding too much size to several of the boards' SPL it
> > > > > > seems.
> > > > > >
> > > > > > https://travis-ci.org/jhershbe/u-boot/builds/620804934
> > > > > >
> > > > > > Please address this and resend.
> > > > >
> > > > > So first of all, this was the old series. There was a v2 series, but
> > > > > unfortunately, I've forgot to add the mailing to the recipients, so it
> > > > > never ended up in the patchwork system. sorry :(
> > > > >
> > > > > I've resend the v2 series here:
> > > > > https://patchwork.ozlabs.org/project/uboot/list/?series=146771
> > > > >
> > > > > Now coming to the real problem here. The sizes, or like some boards
> > > > > handle
> > > > > the SPL stuff. Btw. I could not reproduce it on the
> > > > > am335x_boneblack_vboot
> > > > > board with a gcc-8. I've seen the travis ci job uses the gcc-7 so
> > > > > this also
> > > > > depends on the gcc. gcc-8 seems to produce smaller code, because on
> > > > > the
> > > > > am335x_evm the overflow was only by some 100 bytes.
> > > > >
> > > > > So taking the am335x_evm board for example. It has the following
> > > > > options
> > > > > set:
> > > > > CONFIG_DM_ETH=y
> > > > > CONFIG_SPL_NET_SUPPORT=y
> > > > > CONFIG_PHY_ATHEROS=y (this one is set in the config.h!)
> > > > >
> > > > > So adding a new binding for the phy obviously increases the code
> > > > > size. But
> > > > > the hard question is, how could that be fixed. IMHO the board has
> > > > > wrong
> > > > > settings. I really don't know how that could be "fixed" other than not
> > > > > applying this series. Well, we could make the additions conditional
> > > > > and
> > > > > introduce a new Kconfig setting, but that is a relly ugly hack and
> > > > > won't
> > > > > last long, would it? Doh!
> > > >
> > > > So, the gcc-7 from kernel.org is the min required and must work
> > > > toolchain. Maybe once gcc-9 is mature enough for people to have made
> > > > stand-alone toolchains for it we'll move up to that but gcc-8 for
> > > > everyone ends up being too hard. For the boneblack_vboot config, we
> > > > could just drop SPL networking, it's not super critical to that
> > > > particular example. But am335x_evm is the kitchen-sink EVM and it is
> > > > used and supported there.
> > > >
> > > > That said, looking over the u-boot-spl.map, it looks like nfs stuff
> > > > doesn't get discarded for some reason, I'm going to look in to that.
> > >
> > > So do I need to do something now? I guess removing the NFS stuff will
> > > make enough room to fit this. But how do we make sure, it will be applied
> > > with this series?
> >
> > In this case, Joe has it in the -net PR right now. Thanks!
>
> It's actually excluded from the PR. I need to go back and review the
> rest of the v2 series.
Sorry I meant the NFS patch to reduce size.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20191209/d39adc6a/attachment.sig>
^ permalink raw reply [flat|nested] 40+ messages in thread
end of thread, other threads:[~2019-12-09 20:10 UTC | newest]
Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-26 0:26 [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Michael Walle
2019-10-26 0:26 ` [U-Boot] [PATCH 1/9] phy: atheros: introduce debug read and write functions Michael Walle
2019-11-30 1:11 ` Joe Hershberger
2019-12-05 23:03 ` Michael Walle
2019-12-05 23:03 ` Michael Walle
2019-12-05 15:55 ` Joe Hershberger
2019-12-05 23:27 ` Michael Walle
2019-12-05 23:58 ` Tom Rini
2019-12-06 0:39 ` Michael Walle
2019-12-06 4:08 ` Tom Rini
2019-12-06 0:53 ` Michael Walle
2019-12-06 4:10 ` Tom Rini
2019-12-09 18:42 ` Michael Walle
2019-12-09 18:47 ` Tom Rini
2019-12-09 19:46 ` Joe Hershberger
2019-12-09 20:10 ` Tom Rini
2019-10-26 0:26 ` [U-Boot] [PATCH 2/9] phy: atheros: move delay config to common function Michael Walle
2019-11-30 1:13 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 3/9] phy: atheros: ar8035: remove extra delay config Michael Walle
2019-11-30 1:13 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 4/9] phy: atheros: ar8035: use phy_{read|write}_mmd() Michael Walle
2019-11-30 1:14 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 5/9] phy: atheros: don't overwrite debug register values Michael Walle
2019-11-30 1:15 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 6/9] phy: atheros: fix delay configuration Michael Walle
2019-10-28 16:25 ` Vladimir Oltean
2019-11-30 1:17 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 7/9] phy: atheros: Add device tree bindings and config Michael Walle
2019-11-30 1:18 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 8/9] phy: atheros: ar8035: remove static clock config Michael Walle
2019-11-30 1:18 ` Joe Hershberger
2019-10-26 0:26 ` [U-Boot] [PATCH 9/9] phy: atheros: consolidate {ar8031|ar8035}_config() Michael Walle
2019-11-30 1:19 ` Joe Hershberger
2019-10-26 3:20 ` [U-Boot] [PATCH 0/9] phy: atheros: cleanup and device tree bindings Adam Ford
2019-10-26 3:28 ` Adam Ford
2019-10-26 8:56 ` Michael Walle
2019-10-26 21:03 ` Adam Ford
2019-10-27 20:37 ` [U-Boot] [PATCH] phy: atheros: add some debug output Michael Walle
2019-11-30 1:11 ` Joe Hershberger
2019-12-09 16:15 ` Joe Hershberger
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.