2024-03-06 22:22:05

by Volodymyr Babchuk

[permalink] [raw]
Subject: [PATCH] arm64: dts: qcom: sm8150: add reset name for ethernet node

Add reset-names property to the ethernet@20000 node. This patch does
not change behavior on Linux, but it is needed for U-Boot, as it tries
to find the reset by name, not by index.

Signed-off-by: Volodymyr Babchuk <[email protected]>
---
arch/arm64/boot/dts/qcom/sm8150.dtsi | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi
index 761a6757dc26f..c2e65d6a2ac62 100644
--- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
@@ -951,6 +951,7 @@ ethernet: ethernet@20000 {

power-domains = <&gcc EMAC_GDSC>;
resets = <&gcc GCC_EMAC_BCR>;
+ resets-names = "emac";

iommus = <&apps_smmu 0x3c0 0x0>;

--
2.43.0


2024-03-07 07:03:07

by Sumit Garg

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: sm8150: add reset name for ethernet node

On Thu, 7 Mar 2024 at 01:39, Volodymyr Babchuk
<[email protected]> wrote:
>
> Add reset-names property to the ethernet@20000 node. This patch does
> not change behavior on Linux, but it is needed for U-Boot, as it tries
> to find the reset by name, not by index.
>
> Signed-off-by: Volodymyr Babchuk <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/sm8150.dtsi | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> index 761a6757dc26f..c2e65d6a2ac62 100644
> --- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> @@ -951,6 +951,7 @@ ethernet: ethernet@20000 {
>
> power-domains = <&gcc EMAC_GDSC>;
> resets = <&gcc GCC_EMAC_BCR>;
> + resets-names = "emac";

I suppose you meant reset-names here instead?

-Sumit

>
> iommus = <&apps_smmu 0x3c0 0x0>;
>
> --
> 2.43.0

2024-03-07 07:16:51

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: sm8150: add reset name for ethernet node

On Thu, 7 Mar 2024 at 00:22, Volodymyr Babchuk
<[email protected]> wrote:
>
> Add reset-names property to the ethernet@20000 node. This patch does
> not change behavior on Linux, but it is needed for U-Boot, as it tries
> to find the reset by name, not by index.
>
> Signed-off-by: Volodymyr Babchuk <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/sm8150.dtsi | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> index 761a6757dc26f..c2e65d6a2ac62 100644
> --- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> @@ -951,6 +951,7 @@ ethernet: ethernet@20000 {
>
> power-domains = <&gcc EMAC_GDSC>;
> resets = <&gcc GCC_EMAC_BCR>;
> + resets-names = "emac";

According to the snps,dwmac.yaml schema the "emac" is invalid here.
Only "stmmaceth" and / or "ahb" are permitted here.

>
> iommus = <&apps_smmu 0x3c0 0x0>;
>
> --
> 2.43.0
>


--
With best wishes
Dmitry

2024-03-07 07:33:32

by Sumit Garg

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: sm8150: add reset name for ethernet node

On Thu, 7 Mar 2024 at 12:40, Dmitry Baryshkov
<[email protected]> wrote:
>
> On Thu, 7 Mar 2024 at 00:22, Volodymyr Babchuk
> <[email protected]> wrote:
> >
> > Add reset-names property to the ethernet@20000 node. This patch does
> > not change behavior on Linux, but it is needed for U-Boot, as it tries
> > to find the reset by name, not by index.
> >
> > Signed-off-by: Volodymyr Babchuk <[email protected]>
> > ---
> > arch/arm64/boot/dts/qcom/sm8150.dtsi | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> > index 761a6757dc26f..c2e65d6a2ac62 100644
> > --- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
> > +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> > @@ -951,6 +951,7 @@ ethernet: ethernet@20000 {
> >
> > power-domains = <&gcc EMAC_GDSC>;
> > resets = <&gcc GCC_EMAC_BCR>;
> > + resets-names = "emac";
>
> According to the snps,dwmac.yaml schema the "emac" is invalid here.
> Only "stmmaceth" and / or "ahb" are permitted here.

Okay, it looks like earlier the Linux kernel on Qcom SoCs always
assumed that the EMAC reset signal is deserted by prior boot stages.
So I suppose we can reuse "stmmaceth" here instead of "emac" with a
corresponding change to U-Boot driver as well.

-Sumit

>
> >
> > iommus = <&apps_smmu 0x3c0 0x0>;
> >
> > --
> > 2.43.0
> >
>
>
> --
> With best wishes
> Dmitry

2024-03-07 07:54:18

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: sm8150: add reset name for ethernet node

On 06/03/2024 21:09, Volodymyr Babchuk wrote:
> Add reset-names property to the ethernet@20000 node. This patch does
> not change behavior on Linux, but it is needed for U-Boot, as it tries
> to find the reset by name, not by index.
>
> Signed-off-by: Volodymyr Babchuk <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/sm8150.dtsi | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> index 761a6757dc26f..c2e65d6a2ac62 100644
> --- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> @@ -951,6 +951,7 @@ ethernet: ethernet@20000 {
>
> power-domains = <&gcc EMAC_GDSC>;
> resets = <&gcc GCC_EMAC_BCR>;
> + resets-names = "emac";

It does not look like you tested the DTS against bindings. Please run
`make dtbs_check W=1` (see
Documentation/devicetree/bindings/writing-schema.rst or
https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
for instructions).


Best regards,
Krzysztof


2024-03-07 07:54:52

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: sm8150: add reset name for ethernet node

On 07/03/2024 08:10, Dmitry Baryshkov wrote:
> On Thu, 7 Mar 2024 at 00:22, Volodymyr Babchuk
> <[email protected]> wrote:
>>
>> Add reset-names property to the ethernet@20000 node. This patch does
>> not change behavior on Linux, but it is needed for U-Boot, as it tries
>> to find the reset by name, not by index.
>>
>> Signed-off-by: Volodymyr Babchuk <[email protected]>
>> ---
>> arch/arm64/boot/dts/qcom/sm8150.dtsi | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi
>> index 761a6757dc26f..c2e65d6a2ac62 100644
>> --- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
>> @@ -951,6 +951,7 @@ ethernet: ethernet@20000 {
>>
>> power-domains = <&gcc EMAC_GDSC>;
>> resets = <&gcc GCC_EMAC_BCR>;
>> + resets-names = "emac";
>
> According to the snps,dwmac.yaml schema the "emac" is invalid here.
> Only "stmmaceth" and / or "ahb" are permitted here.

If only there was a tool which can tell this, without the need to
involve reviewers...

Best regards,
Krzysztof


2024-03-07 13:14:04

by Volodymyr Babchuk

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: sm8150: add reset name for ethernet node


Hello Linux Maintainers, Sumit

First, I am terribly sorry about this half-assed patch. Generally I am
doing all the required checks. But this change seemed so
trivial... Anyways, lesson taken, this will not happen anymore.

Sumit Garg <[email protected]> writes:

> On Thu, 7 Mar 2024 at 12:40, Dmitry Baryshkov
> <[email protected]> wrote:
>>
>> On Thu, 7 Mar 2024 at 00:22, Volodymyr Babchuk
>> <[email protected]> wrote:
>> >
>> > Add reset-names property to the ethernet@20000 node. This patch does
>> > not change behavior on Linux, but it is needed for U-Boot, as it tries
>> > to find the reset by name, not by index.
>> >
>> > Signed-off-by: Volodymyr Babchuk <[email protected]>
>> > ---
>> > arch/arm64/boot/dts/qcom/sm8150.dtsi | 1 +
>> > 1 file changed, 1 insertion(+)
>> >
>> > diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi
>> > index 761a6757dc26f..c2e65d6a2ac62 100644
>> > --- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
>> > +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
>> > @@ -951,6 +951,7 @@ ethernet: ethernet@20000 {
>> >
>> > power-domains = <&gcc EMAC_GDSC>;
>> > resets = <&gcc GCC_EMAC_BCR>;
>> > + resets-names = "emac";
>>
>> According to the snps,dwmac.yaml schema the "emac" is invalid here.
>> Only "stmmaceth" and / or "ahb" are permitted here.
>
> Okay, it looks like earlier the Linux kernel on Qcom SoCs always
> assumed that the EMAC reset signal is deserted by prior boot stages.
> So I suppose we can reuse "stmmaceth" here instead of "emac" with a
> corresponding change to U-Boot driver as well.

Maybe it would be better to access reset in U-Boot by index, in the
same way as linux kernel does? I am not sure that "stmmaceth" will be
correct from the semantic point of view.

As I understand, "stmmac" name is used due to historical reasons in
Linux, as this driver was introduced for STM SoC initially. But the same
IP block is being used in many different SoCs made by different vendors
and there is nothing STM-specific left in it anymore. Especially taking
into account that this IP-block was designed not by STM but by
Synopsys/DesignWare.

--
WBR, Volodymyr

2024-03-07 13:51:16

by Sumit Garg

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: qcom: sm8150: add reset name for ethernet node

On Thu, 7 Mar 2024 at 18:43, Volodymyr Babchuk
<[email protected]> wrote:
>
>
> Hello Linux Maintainers, Sumit
>
> First, I am terribly sorry about this half-assed patch. Generally I am
> doing all the required checks. But this change seemed so
> trivial... Anyways, lesson taken, this will not happen anymore.
>
> Sumit Garg <[email protected]> writes:
>
> > On Thu, 7 Mar 2024 at 12:40, Dmitry Baryshkov
> > <[email protected]> wrote:
> >>
> >> On Thu, 7 Mar 2024 at 00:22, Volodymyr Babchuk
> >> <[email protected]> wrote:
> >> >
> >> > Add reset-names property to the ethernet@20000 node. This patch does
> >> > not change behavior on Linux, but it is needed for U-Boot, as it tries
> >> > to find the reset by name, not by index.
> >> >
> >> > Signed-off-by: Volodymyr Babchuk <[email protected]>
> >> > ---
> >> > arch/arm64/boot/dts/qcom/sm8150.dtsi | 1 +
> >> > 1 file changed, 1 insertion(+)
> >> >
> >> > diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> >> > index 761a6757dc26f..c2e65d6a2ac62 100644
> >> > --- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
> >> > +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> >> > @@ -951,6 +951,7 @@ ethernet: ethernet@20000 {
> >> >
> >> > power-domains = <&gcc EMAC_GDSC>;
> >> > resets = <&gcc GCC_EMAC_BCR>;
> >> > + resets-names = "emac";
> >>
> >> According to the snps,dwmac.yaml schema the "emac" is invalid here.
> >> Only "stmmaceth" and / or "ahb" are permitted here.
> >
> > Okay, it looks like earlier the Linux kernel on Qcom SoCs always
> > assumed that the EMAC reset signal is deserted by prior boot stages.
> > So I suppose we can reuse "stmmaceth" here instead of "emac" with a
> > corresponding change to U-Boot driver as well.
>
> Maybe it would be better to access reset in U-Boot by index, in the
> same way as linux kernel does? I am not sure that "stmmaceth" will be
> correct from the semantic point of view.

I can't see the Linux kernel driver accessing reset by index in this
case (see [1]). It worked for the Qcom case since the reset signal was
by default deserted. IMO, that's an incorrect assumption (you never
know what state the bootloader leaves the reset signal in) to start
with. This should be fixed via explicit MAC reset desertion in the
kernel driver. IOW, this patch would ideally be a fix for the Linux
kernel driver rather than replicating what U-Boot does.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c#n645

>
> As I understand, "stmmac" name is used due to historical reasons in
> Linux, as this driver was introduced for STM SoC initially. But the same
> IP block is being used in many different SoCs made by different vendors
> and there is nothing STM-specific left in it anymore. Especially taking
> into account that this IP-block was designed not by STM but by
> Synopsys/DesignWare.

As DT bindings are the ABI and we have no choice but to live with it.
"stmmaceth" is already being used for "reg-names" and "clock-names"
too.

-Sumit

>
> --
> WBR, Volodymyr