On most of the Amlogic SoC I observed that Ethernet would not get
initialize when try to deploy the mainline kernel, earlier I tried to
fix this issue with by setting ethernet reset but it did not resolve
the issue see below.
resets = <&reset RESET_ETHERNET>;
reset-names = "stmmaceth";
After checking what was the missing with Rockchip SoC dts
I tried to add this missing compatible string and then it
started to working on my setup.
Also I tried to fix the device tree binding to validate the changes.
Tested this on my Odroid-N2 and Odroid-C2 (64 bit) setup.
I do not have ready Odroid C1 (32 bit) setup so please somebody test.
Best Regards
-Anand
Anand Moon (6):
dt-bindings: net: ethernet-phy: Fix the parsing of ethernet-phy
compatible string
arm: dts: meson: Add missing ethernet phy mdio compatible string
arm64: dts: meson-gxbb: Add missing ethernet phy mimo compatible
string
arm64: dts: meson-gxl: Add missing ethernet phy mdio compatible string
arm64: dts: meson-g12: Add missing ethernet phy mdio compatible string
arm64: dts: meson-glx: Fix the ethernet phy mdio compatible string
Documentation/devicetree/bindings/net/ethernet-phy.yaml | 6 +++---
arch/arm/boot/dts/meson8b-ec100.dts | 1 +
arch/arm/boot/dts/meson8b-mxq.dts | 1 +
arch/arm/boot/dts/meson8b-odroidc1.dts | 1 +
arch/arm/boot/dts/meson8m2-mxiii-plus.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-axg-s400.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 3 ++-
arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi | 1 +
arch/arm64/boot/dts/amlogic/meson-gx-libretech-pc.dtsi | 1 +
arch/arm64/boot/dts/amlogic/meson-gxbb-kii-pro.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-gxbb-nexbox-a95x.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-gxbb-p200.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi | 1 +
arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi | 1 +
arch/arm64/boot/dts/amlogic/meson-gxl-s905d-p230.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 2 +-
arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-gxm-q200.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-gxm-vega-s96.dts | 1 +
arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi | 1 +
arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi | 1 +
26 files changed, 29 insertions(+), 5 deletions(-)
--
2.31.0
Fix the parsing of check of pattern ethernet-phy-ieee802.3 used
by the device tree to initialize the mdio phy.
As per the of_mdio below 2 are valid compatible string
"ethernet-phy-ieee802.3-c22"
"ethernet-phy-ieee802.3-c45"
Cc: Rob Herring <robh@kernel.org>
Signed-off-by: Anand Moon <redacted>
---
Documentation/devicetree/bindings/net/ethernet-phy.yaml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
@@ -33,7 +33,7 @@ properties:description:PHYs that implement IEEE802.3 clause 22-const:ethernet-phy-ieee802.3-c45description:PHYs that implement IEEE802.3 clause 45--pattern:"^ethernet-phy-id[a-f0-9]{4}\\.[a-f0-9]{4}$"+-pattern:"^ethernet-phy-ieee[0-9]{3}\\.[0-9][-][a-f0-9]{4}$"description:If the PHY reports an incorrect ID (or none at all) then thecompatible list may contain an entry with the correct PHY ID
@@ -44,10 +44,10 @@ properties:this is the chip vendor OUI bits 19:24, followed by 10bits of a vendor specific ID.-items:--pattern:"^ethernet-phy-id[a-f0-9]{4}\\.[a-f0-9]{4}$"+-pattern:"^ethernet-phy-ieee[0-9]{3}\\.[0-9][-][a-f0-9]{4}$"-const:ethernet-phy-ieee802.3-c22-items:--pattern:"^ethernet-phy-id[a-f0-9]{4}\\.[a-f0-9]{4}$"+-pattern:"^ethernet-phy-ieee[0-9]{3}\\.[0-9][-][a-f0-9]{4}$"-const:ethernet-phy-ieee802.3-c45reg:
From: Andrew Lunn <andrew@lunn.ch> Date: 2021-03-25 12:58:24
On Thu, Mar 25, 2021 at 12:42:20PM +0000, Anand Moon wrote:
Fix the parsing of check of pattern ethernet-phy-ieee802.3 used
by the device tree to initialize the mdio phy.
As per the of_mdio below 2 are valid compatible string
"ethernet-phy-ieee802.3-c22"
"ethernet-phy-ieee802.3-c45"
Nope, this is not the full story. Yes, you can have these compatible
strings. But you can also use the PHY ID,
e.g. ethernet-phy-idAAAA.BBBB, where AAAA and BBBB are what you find in
registers 2 and 3 of the PHY.
From: Andrew Lunn <andrew@lunn.ch> Date: 2021-03-25 13:03:19
On Thu, Mar 25, 2021 at 12:42:19PM +0000, Anand Moon wrote:
On most of the Amlogic SoC I observed that Ethernet would not get
initialize when try to deploy the mainline kernel, earlier I tried to
fix this issue with by setting ethernet reset but it did not resolve
the issue see below.
resets = <&reset RESET_ETHERNET>;
reset-names = "stmmaceth";
After checking what was the missing with Rockchip SoC dts
I tried to add this missing compatible string and then it
started to working on my setup.
Adding
compatible = "ethernet-phy-ieee802.3-c22"
should not fix anything, since that is the default. We need to better
understand what is going on here.
Andrew
On most of the Amlogic SoC I observed that Ethernet would not get
initialize when try to deploy the mainline kernel, earlier I tried to
fix this issue with by setting ethernet reset but it did not resolve
the issue see below.
resets = <&reset RESET_ETHERNET>;
reset-names = "stmmaceth";
After checking what was the missing with Rockchip SoC dts
I tried to add this missing compatible string and then it
started to working on my setup.
Also I tried to fix the device tree binding to validate the changes.
Tested this on my Odroid-N2 and Odroid-C2 (64 bit) setup.
I do not have ready Odroid C1 (32 bit) setup so please somebody test.
When working on the Odroid-C2 I did not have such a problem.
And if you look at of_mdiobus_child_is_phy() and
of_mdiobus_register_phy() you'll see that your change shouldn't be
needed.
Could you please elaborate on:
- What is the exact problem you're facing? Best add a dmesg log.
- Which kernel version are you using?
Hi Andrew,
On Thu, 25 Mar 2021 at 18:27, Andrew Lunn [off-list ref] wrote:
On Thu, Mar 25, 2021 at 12:42:20PM +0000, Anand Moon wrote:
quoted
Fix the parsing of check of pattern ethernet-phy-ieee802.3 used
by the device tree to initialize the mdio phy.
As per the of_mdio below 2 are valid compatible string
"ethernet-phy-ieee802.3-c22"
"ethernet-phy-ieee802.3-c45"
Nope, this is not the full story. Yes, you can have these compatible
strings. But you can also use the PHY ID,
e.g. ethernet-phy-idAAAA.BBBB, where AAAA and BBBB are what you find in
registers 2 and 3 of the PHY.
Oops I did not read the drivers/net/mdio/of_mdio.c completely.
Thanks for letting me know so in the next series,
I will try to add the below compatible string as per the description in the dts.
compatible = "ethernet-phy-id001c.c916",
"ethernet-phy-ieee802.3-c22";
Hi Andrew,
On Thu, 25 Mar 2021 at 18:27, Andrew Lunn [off-list ref] wrote:
quoted
On Thu, Mar 25, 2021 at 12:42:20PM +0000, Anand Moon wrote:
quoted
Fix the parsing of check of pattern ethernet-phy-ieee802.3 used
by the device tree to initialize the mdio phy.
As per the of_mdio below 2 are valid compatible string
"ethernet-phy-ieee802.3-c22"
"ethernet-phy-ieee802.3-c45"
Nope, this is not the full story. Yes, you can have these compatible
strings. But you can also use the PHY ID,
e.g. ethernet-phy-idAAAA.BBBB, where AAAA and BBBB are what you find in
registers 2 and 3 of the PHY.
Oops I did not read the drivers/net/mdio/of_mdio.c completely.
Thanks for letting me know so in the next series,
I will try to add the below compatible string as per the description in the dts.
That's not needed, typically the PHY ID is auto-detected.
Before sending a new series, please describe in detail what
your problem is. Simply there shouldn't be a need for such a
series. As I said: e.g. Odroid-C2 worked fine for me with
a mainline kernel.
Hi Heiner
On Thu, 25 Mar 2021 at 18:49, Heiner Kallweit [off-list ref] wrote:
On 25.03.2021 13:42, Anand Moon wrote:
quoted
On most of the Amlogic SoC I observed that Ethernet would not get
initialize when try to deploy the mainline kernel, earlier I tried to
fix this issue with by setting ethernet reset but it did not resolve
the issue see below.
resets = <&reset RESET_ETHERNET>;
reset-names = "stmmaceth";
After checking what was the missing with Rockchip SoC dts
I tried to add this missing compatible string and then it
started to working on my setup.
Also I tried to fix the device tree binding to validate the changes.
Tested this on my Odroid-N2 and Odroid-C2 (64 bit) setup.
I do not have ready Odroid C1 (32 bit) setup so please somebody test.
When working on the Odroid-C2 I did not have such a problem.
And if you look at of_mdiobus_child_is_phy() and
of_mdiobus_register_phy() you'll see that your change shouldn't be
needed.
I will check this out, thanks for your inputs.
Could you please elaborate on:
- What is the exact problem you're facing? Best add a dmesg log.
1> I am aware all the distro kernel I have tested ethernet will work file
2> My issue is when I compile the mainline kernel with the default setting,
Ethernet interface will not receive any DHCP IP address from the router
Although the Ethernet interface comes up properly.
This does not happen frequently but I observed this at my end.
3> I tried to collect logs but I did not observe any kernel issue
like panic or warning.
- Which kernel version are you using?
I am using the mainline kernel with default settings.
-Anand
Hi Heiner
On Thu, 25 Mar 2021 at 18:49, Heiner Kallweit [off-list ref] wrote:
quoted
On 25.03.2021 13:42, Anand Moon wrote:
quoted
On most of the Amlogic SoC I observed that Ethernet would not get
initialize when try to deploy the mainline kernel, earlier I tried to
fix this issue with by setting ethernet reset but it did not resolve
the issue see below.
resets = <&reset RESET_ETHERNET>;
reset-names = "stmmaceth";
After checking what was the missing with Rockchip SoC dts
I tried to add this missing compatible string and then it
started to working on my setup.
Also I tried to fix the device tree binding to validate the changes.
Tested this on my Odroid-N2 and Odroid-C2 (64 bit) setup.
I do not have ready Odroid C1 (32 bit) setup so please somebody test.
When working on the Odroid-C2 I did not have such a problem.
And if you look at of_mdiobus_child_is_phy() and
of_mdiobus_register_phy() you'll see that your change shouldn't be
needed.
I will check this out, thanks for your inputs.
quoted
Could you please elaborate on:
- What is the exact problem you're facing? Best add a dmesg log.
1> I am aware all the distro kernel I have tested ethernet will work file
2> My issue is when I compile the mainline kernel with the default setting,
Ethernet interface will not receive any DHCP IP address from the router
Although the Ethernet interface comes up properly.
This does not happen frequently but I observed this at my end.
If the PHY wouldn't be detected, then your network would never work.
So there must be a different reason. You can manually assign a static IP
and then check what's going wrong: checking for missed / error packets,
running iperf, etc.
3> I tried to collect logs but I did not observe any kernel issue
like panic or warning.
quoted
- Which kernel version are you using?
I am using the mainline kernel with default settings.
-Anand
From: Rob Herring <robh@kernel.org> Date: 2021-03-25 16:57:07
On Thu, 25 Mar 2021 12:42:20 +0000, Anand Moon wrote:
Fix the parsing of check of pattern ethernet-phy-ieee802.3 used
by the device tree to initialize the mdio phy.
As per the of_mdio below 2 are valid compatible string
"ethernet-phy-ieee802.3-c22"
"ethernet-phy-ieee802.3-c45"
Cc: Rob Herring <robh@kernel.org>
Signed-off-by: Anand Moon <redacted>
---
Documentation/devicetree/bindings/net/ethernet-phy.yaml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/net/ethernet-phy.example.dt.yaml: ethernet-phy@0: compatible: 'oneOf' conditional failed, one must be fixed:
['ethernet-phy-id0141.0e90', 'ethernet-phy-ieee802.3-c45'] is too long
Additional items are not allowed ('ethernet-phy-ieee802.3-c45' was unexpected)
'ethernet-phy-ieee802.3-c22' was expected
'ethernet-phy-ieee802.3-c45' was expected
'ethernet-phy-id0141.0e90' does not match '^ethernet-phy-ieee[0-9]{3}\\.[0-9][-][a-f0-9]{4}$'
From schema: /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/net/ethernet-phy.yaml
See https://patchwork.ozlabs.org/patch/1458341
This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit.
Hi Rob
On Thu, 25 Mar 2021 at 22:26, Rob Herring [off-list ref] wrote:
On Thu, 25 Mar 2021 12:42:20 +0000, Anand Moon wrote:
quoted
Fix the parsing of check of pattern ethernet-phy-ieee802.3 used
by the device tree to initialize the mdio phy.
As per the of_mdio below 2 are valid compatible string
"ethernet-phy-ieee802.3-c22"
"ethernet-phy-ieee802.3-c45"
Cc: Rob Herring <robh@kernel.org>
Signed-off-by: Anand Moon <redacted>
---
Documentation/devicetree/bindings/net/ethernet-phy.yaml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/net/ethernet-phy.example.dt.yaml: ethernet-phy@0: compatible: 'oneOf' conditional failed, one must be fixed:
['ethernet-phy-id0141.0e90', 'ethernet-phy-ieee802.3-c45'] is too long
Additional items are not allowed ('ethernet-phy-ieee802.3-c45' was unexpected)
'ethernet-phy-ieee802.3-c22' was expected
'ethernet-phy-ieee802.3-c45' was expected
'ethernet-phy-id0141.0e90' does not match '^ethernet-phy-ieee[0-9]{3}\\.[0-9][-][a-f0-9]{4}$'
From schema: /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/net/ethernet-phy.yaml
See https://patchwork.ozlabs.org/patch/1458341
This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit.
Now I have a better understanding on device tree shema in
Documentation/devicetree/bindings/net/ethernet-phy.yaml
changes it meant to parse *ethernet-phy-id0181.4400* for example
and not ethernet-phy-ieee802.3-c22 and ethernet-phy-ieee802.3-c45.
So please dicard these changes.
-Anand