mbox series

[PATCHv1,0/6] Amlogic Soc - Add missing ethernet mdio compatible string

Message ID 20210325124225.2760-1-linux.amoon@gmail.com
Headers show
Series Amlogic Soc - Add missing ethernet mdio compatible string | expand

Message

Anand Moon March 25, 2021, 12:42 p.m. UTC
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(-)

Comments

Heiner Kallweit March 25, 2021, 1:19 p.m. UTC | #1
On 25.03.2021 13:42, 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.
> 
> 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?


> 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(-)
>
Heiner Kallweit March 25, 2021, 1:42 p.m. UTC | #2
On 25.03.2021 14:33, Anand Moon wrote:
> Hi Andrew,
> 
> On Thu, 25 Mar 2021 at 18:27, Andrew Lunn <andrew@lunn.ch> wrote:
>>
>> 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.
>>
> 
> 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.

> 
>                compatible = "ethernet-phy-id001c.c916",
>                             "ethernet-phy-ieee802.3-c22";
> 
>>> Cc: Rob Herring <robh@kernel.org>
>>> Signed-off-by: Anand Moon <linux.amoon@gmail.com>
>>> ---
>>>  Documentation/devicetree/bindings/net/ethernet-phy.yaml | 6 +++---
>>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/net/ethernet-phy.yaml b/Documentation/devicetree/bindings/net/ethernet-phy.yaml
>>> index 2766fe45bb98..cfc7909d3e56 100644
>>> --- a/Documentation/devicetree/bindings/net/ethernet-phy.yaml
>>> +++ b/Documentation/devicetree/bindings/net/ethernet-phy.yaml
>>> @@ -33,7 +33,7 @@ properties:
>>>          description: PHYs that implement IEEE802.3 clause 22
>>>        - const: ethernet-phy-ieee802.3-c45
>>>          description: 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}$"
>>
>> So here you need, in addition to, not instead of.
>>
>> Please test you change on for example imx6ul-14x14-evk.dtsi
>>
> 
> Yes I have gone through the test case.
> 
>>    Andrew
> 
> - Anand
>
Rob Herring (Arm) March 25, 2021, 4:56 p.m. UTC | #3
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 <linux.amoon@gmail.com>
> ---
>  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.