Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1544598 > unrolled thread
| Started by | Jerome Brunet <jbrunet@baylibre.com> |
|---|---|
| First post | 2016-12-19 16:10 +0100 |
| Last post | 2016-12-20 20:00 +0100 |
| Articles | 5 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH net 0/3] Fix integration of eee-broken-modes Jerome Brunet <jbrunet@baylibre.com> - 2016-12-19 16:10 +0100
[PATCH net 2/3] net: phy: use boolean dt properties for eee broken modes Jerome Brunet <jbrunet@baylibre.com> - 2016-12-19 16:10 +0100
[PATCH net 1/3] net: phy: fix sign type error in genphy_config_eee_advert Jerome Brunet <jbrunet@baylibre.com> - 2016-12-19 16:10 +0100
[PATCH net 3/3] dt: bindings: net: use boolean dt properties for eee broken modes Jerome Brunet <jbrunet@baylibre.com> - 2016-12-19 16:10 +0100
Re: [PATCH net 0/3] Fix integration of eee-broken-modes David Miller <davem@davemloft.net> - 2016-12-20 20:00 +0100
| From | Jerome Brunet <jbrunet@baylibre.com> |
|---|---|
| Date | 2016-12-19 16:10 +0100 |
| Subject | [PATCH net 0/3] Fix integration of eee-broken-modes |
| Message-ID | <sQ7JE-16N-7@gated-at.bofh.it> |
The purpose of this series is to fix the integration of the ethernet phy property "eee-broken-modes" [0] The v3 of this series has been merged, missing a fix (error reported by kbuild robot) available in the v4 [1] More importantly, Florian opposed adding a DT property mapping a device register this directly [2]. The concern was that the property could be abused to implement platform configuration policy. After discussing it, I think we agreed that such information about the HW (defect) should appear in the platform DT. However, the preferred way is to add a boolean property for each EEE broken mode. [0]: http://lkml.kernel.org/r/1480326409-25419-1-git-send-email-jbrunet@baylibre.com [1]: http://lkml.kernel.org/r/1480348229-25672-1-git-send-email-jbrunet@baylibre.com [2]: http://lkml.kernel.org/r/e14a3b0c-dc34-be14-48b3-518a0ad0c080@gmail.com Jerome Brunet (3): net: phy: fix sign type error in genphy_config_eee_advert net: phy: use boolean dt properties for eee broken modes dt: bindings: net: use boolean dt properties for eee broken modes Documentation/devicetree/bindings/net/phy.txt | 10 ++++++++-- drivers/net/phy/phy_device.c | 22 +++++++++++++++++----- include/dt-bindings/net/mdio.h | 19 ------------------- 3 files changed, 25 insertions(+), 26 deletions(-) delete mode 100644 include/dt-bindings/net/mdio.h -- 2.7.4
[toc] | [next] | [standalone]
| From | Jerome Brunet <jbrunet@baylibre.com> |
|---|---|
| Date | 2016-12-19 16:10 +0100 |
| Subject | [PATCH net 2/3] net: phy: use boolean dt properties for eee broken modes |
| Message-ID | <sQ7JF-16N-43@gated-at.bofh.it> |
| In reply to | #1544598 |
The patches regarding eee-broken-modes was merged before all people
involved could find an agreement on the best way to move forward.
While we agreed on having a DT property to mark particular modes as broken,
the value used for eee-broken-modes mapped the phy register in very direct
way. Because of this, the concern is that it could be used to implement
configuration policies instead of describing a broken HW.
In the end, having a boolean property for each mode seems to be preferred
over one bit field value mapping the register (too) directly.
Cc: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
drivers/net/phy/phy_device.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index ee5ebadb1463..92b08383cafa 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -1665,7 +1665,7 @@ static void of_set_phy_supported(struct phy_device *phydev)
static void of_set_phy_eee_broken(struct phy_device *phydev)
{
struct device_node *node = phydev->mdio.dev.of_node;
- u32 broken;
+ u32 broken = 0;
if (!IS_ENABLED(CONFIG_OF_MDIO))
return;
@@ -1673,8 +1673,20 @@ static void of_set_phy_eee_broken(struct phy_device *phydev)
if (!node)
return;
- if (!of_property_read_u32(node, "eee-broken-modes", &broken))
- phydev->eee_broken_modes = broken;
+ if (of_property_read_bool(node, "eee-broken-100tx"))
+ broken |= MDIO_EEE_100TX;
+ if (of_property_read_bool(node, "eee-broken-1000t"))
+ broken |= MDIO_EEE_1000T;
+ if (of_property_read_bool(node, "eee-broken-10gt"))
+ broken |= MDIO_EEE_10GT;
+ if (of_property_read_bool(node, "eee-broken-1000kx"))
+ broken |= MDIO_EEE_1000KX;
+ if (of_property_read_bool(node, "eee-broken-10gkx4"))
+ broken |= MDIO_EEE_10GKX4;
+ if (of_property_read_bool(node, "eee-broken-10gkr"))
+ broken |= MDIO_EEE_10GKR;
+
+ phydev->eee_broken_modes = broken;
}
/**
--
2.7.4
[toc] | [prev] | [next] | [standalone]
| From | Jerome Brunet <jbrunet@baylibre.com> |
|---|---|
| Date | 2016-12-19 16:10 +0100 |
| Subject | [PATCH net 1/3] net: phy: fix sign type error in genphy_config_eee_advert |
| Message-ID | <sQ7JG-16N-89@gated-at.bofh.it> |
| In reply to | #1544598 |
In genphy_config_eee_advert, the return value of phy_read_mmd_indirect is
checked to know if the register could be accessed but the result is
assigned to a 'u32'.
Changing to 'int' to correctly get errors from phy_read_mmd_indirect.
Fixes: d853d145ea3e ("net: phy: add an option to disable EEE advertisement")
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
---
drivers/net/phy/phy_device.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 9c06f8028f0c..ee5ebadb1463 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -1187,8 +1187,8 @@ static int genphy_config_advert(struct phy_device *phydev)
*/
static int genphy_config_eee_advert(struct phy_device *phydev)
{
- u32 broken = phydev->eee_broken_modes;
- u32 old_adv, adv;
+ int broken = phydev->eee_broken_modes;
+ int old_adv, adv;
/* Nothing to disable */
if (!broken)
--
2.7.4
[toc] | [prev] | [next] | [standalone]
| From | Jerome Brunet <jbrunet@baylibre.com> |
|---|---|
| Date | 2016-12-19 16:10 +0100 |
| Subject | [PATCH net 3/3] dt: bindings: net: use boolean dt properties for eee broken modes |
| Message-ID | <sQ7JG-16N-97@gated-at.bofh.it> |
| In reply to | #1544598 |
The patches regarding eee-broken-modes was merged before all people involved could find an agreement on the best way to move forward. While we agreed on having a DT property to mark particular modes as broken, the value used for eee-broken-modes mapped the phy register in very direct way. Because of this, the concern is that it could be used to implement configuration policies instead of describing a broken HW. In the end, having a boolean property for each mode seems to be preferred over one bit field value mapping the register (too) directly. Cc: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> --- Documentation/devicetree/bindings/net/phy.txt | 10 ++++++++-- include/dt-bindings/net/mdio.h | 19 ------------------- 2 files changed, 8 insertions(+), 21 deletions(-) delete mode 100644 include/dt-bindings/net/mdio.h diff --git a/Documentation/devicetree/bindings/net/phy.txt b/Documentation/devicetree/bindings/net/phy.txt index 54749b60a466..ff1bc4b1bb3b 100644 --- a/Documentation/devicetree/bindings/net/phy.txt +++ b/Documentation/devicetree/bindings/net/phy.txt @@ -38,8 +38,14 @@ Optional Properties: - enet-phy-lane-swap: If set, indicates the PHY will swap the TX/RX lanes to compensate for the board being designed with the lanes swapped. -- eee-broken-modes: Bits to clear in the MDIO_AN_EEE_ADV register to - disable EEE broken modes. +- eee-broken-100tx: +- eee-broken-1000t: +- eee-broken-10gt: +- eee-broken-1000kx: +- eee-broken-10gkx4: +- eee-broken-10gkr: + Mark the corresponding energy efficient ethernet mode as broken and + request the ethernet to stop advertising it. Example: diff --git a/include/dt-bindings/net/mdio.h b/include/dt-bindings/net/mdio.h deleted file mode 100644 index 99c6d903d439..000000000000 --- a/include/dt-bindings/net/mdio.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This header provides generic constants for ethernet MDIO bindings - */ - -#ifndef _DT_BINDINGS_NET_MDIO_H -#define _DT_BINDINGS_NET_MDIO_H - -/* - * EEE capability Advertisement - */ - -#define MDIO_EEE_100TX 0x0002 /* 100TX EEE cap */ -#define MDIO_EEE_1000T 0x0004 /* 1000T EEE cap */ -#define MDIO_EEE_10GT 0x0008 /* 10GT EEE cap */ -#define MDIO_EEE_1000KX 0x0010 /* 1000KX EEE cap */ -#define MDIO_EEE_10GKX4 0x0020 /* 10G KX4 EEE cap */ -#define MDIO_EEE_10GKR 0x0040 /* 10G KR EEE cap */ - -#endif -- 2.7.4
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2016-12-20 20:00 +0100 |
| Message-ID | <sQxNL-Pw-9@gated-at.bofh.it> |
| In reply to | #1544598 |
From: Jerome Brunet <jbrunet@baylibre.com> Date: Mon, 19 Dec 2016 16:05:35 +0100 > The purpose of this series is to fix the integration of the ethernet phy > property "eee-broken-modes" [0] > > The v3 of this series has been merged, missing a fix (error reported by > kbuild robot) available in the v4 [1] > > More importantly, Florian opposed adding a DT property mapping a device > register this directly [2]. The concern was that the property could be > abused to implement platform configuration policy. After discussing it, > I think we agreed that such information about the HW (defect) should appear > in the platform DT. However, the preferred way is to add a boolean property > for each EEE broken mode. > > [0]: http://lkml.kernel.org/r/1480326409-25419-1-git-send-email-jbrunet@baylibre.com > [1]: http://lkml.kernel.org/r/1480348229-25672-1-git-send-email-jbrunet@baylibre.com > [2]: http://lkml.kernel.org/r/e14a3b0c-dc34-be14-48b3-518a0ad0c080@gmail.com Series applied, thank you.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web