2019-06-21 10:57:57

by Yash Shah

[permalink] [raw]
Subject: [PATCH v2] DT node for SiFive FU540 Ethernet Controller driver

This patch-set is based on 'riscv-for-v5.2/fixes-rc6' tag of
git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git

Tested on HiFive Unleashed board with additional patches required for
testing can be found at dev/yashs/ethernet_dt_v2 branch of:
https://github.com/yashshah7/riscv-linux.git

Change history:
v2:
- Set "status = disabled" in DTSI file and enable it in Board DTS file
- Move PHY related nodes into board DTS file

Yash Shah (1):
riscv: dts: Add DT node for SiFive FU540 Ethernet controller driver

arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 16 ++++++++++++++++
arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 9 +++++++++
2 files changed, 25 insertions(+)

--
1.9.1


2019-06-21 10:58:27

by Yash Shah

[permalink] [raw]
Subject: [PATCH v2] riscv: dts: Add DT node for SiFive FU540 Ethernet controller driver

DT node for SiFive FU540-C000 GEMGXL Ethernet controller driver added

Signed-off-by: Yash Shah <[email protected]>
---
arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 16 ++++++++++++++++
arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 9 +++++++++
2 files changed, 25 insertions(+)

diff --git a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
index 4e8fbde..c53b4ea 100644
--- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
+++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
@@ -225,5 +225,21 @@
#address-cells = <1>;
#size-cells = <0>;
};
+ eth0: ethernet@10090000 {
+ compatible = "sifive,fu540-macb";
+ interrupt-parent = <&plic0>;
+ interrupts = <53>;
+ reg = <0x0 0x10090000 0x0 0x2000
+ 0x0 0x100a0000 0x0 0x1000>;
+ reg-names = "control";
+ status = "disabled";
+ local-mac-address = [00 00 00 00 00 00];
+ clock-names = "pclk", "hclk";
+ clocks = <&prci PRCI_CLK_GEMGXLPLL>,
+ <&prci PRCI_CLK_GEMGXLPLL>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
};
};
diff --git a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
index 4da8870..d783bf2 100644
--- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
+++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
@@ -63,3 +63,12 @@
disable-wp;
};
};
+
+&eth0 {
+ status = "okay";
+ phy-mode = "gmii";
+ phy-handle = <&phy1>;
+ phy1: ethernet-phy@0 {
+ reg = <0>;
+ };
+};
--
1.9.1

2019-06-21 11:21:57

by Anup Patel

[permalink] [raw]
Subject: Re: [PATCH v2] riscv: dts: Add DT node for SiFive FU540 Ethernet controller driver

On Fri, Jun 21, 2019 at 4:27 PM Yash Shah <[email protected]> wrote:
>
> DT node for SiFive FU540-C000 GEMGXL Ethernet controller driver added
>
> Signed-off-by: Yash Shah <[email protected]>
> ---
> arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 16 ++++++++++++++++
> arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 9 +++++++++
> 2 files changed, 25 insertions(+)
>
> diff --git a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> index 4e8fbde..c53b4ea 100644
> --- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> +++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> @@ -225,5 +225,21 @@
> #address-cells = <1>;
> #size-cells = <0>;
> };
> + eth0: ethernet@10090000 {
> + compatible = "sifive,fu540-macb";
> + interrupt-parent = <&plic0>;
> + interrupts = <53>;
> + reg = <0x0 0x10090000 0x0 0x2000
> + 0x0 0x100a0000 0x0 0x1000>;
> + reg-names = "control";
> + status = "disabled";
> + local-mac-address = [00 00 00 00 00 00];
> + clock-names = "pclk", "hclk";
> + clocks = <&prci PRCI_CLK_GEMGXLPLL>,
> + <&prci PRCI_CLK_GEMGXLPLL>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> };
> };
> diff --git a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> index 4da8870..d783bf2 100644
> --- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> +++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> @@ -63,3 +63,12 @@
> disable-wp;
> };
> };
> +
> +&eth0 {
> + status = "okay";
> + phy-mode = "gmii";
> + phy-handle = <&phy1>;
> + phy1: ethernet-phy@0 {
> + reg = <0>;
> + };
> +};
> --
> 1.9.1
>

LGTM.

Reviewed-by: Anup Patel <[email protected]>

Regards,
Anup

2019-06-21 19:15:13

by Atish Patra

[permalink] [raw]
Subject: Re: [PATCH v2] riscv: dts: Add DT node for SiFive FU540 Ethernet controller driver

On Fri, 2019-06-21 at 16:23 +0530, Yash Shah wrote:
> DT node for SiFive FU540-C000 GEMGXL Ethernet controller driver added
>
> Signed-off-by: Yash Shah <[email protected]>
> ---
> arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 16
> ++++++++++++++++
> arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 9 +++++++++
> 2 files changed, 25 insertions(+)
>
> diff --git a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> index 4e8fbde..c53b4ea 100644
> --- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> +++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> @@ -225,5 +225,21 @@
> #address-cells = <1>;
> #size-cells = <0>;
> };
> + eth0: ethernet@10090000 {
> + compatible = "sifive,fu540-macb";
> + interrupt-parent = <&plic0>;
> + interrupts = <53>;
> + reg = <0x0 0x10090000 0x0 0x2000
> + 0x0 0x100a0000 0x0 0x1000>;
> + reg-names = "control";
> + status = "disabled";
> + local-mac-address = [00 00 00 00 00 00];
> + clock-names = "pclk", "hclk";
> + clocks = <&prci PRCI_CLK_GEMGXLPLL>,
> + <&prci PRCI_CLK_GEMGXLPLL>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + };
> +
> };
> };
> diff --git a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> index 4da8870..d783bf2 100644
> --- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> +++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> @@ -63,3 +63,12 @@
> disable-wp;
> };
> };
> +
> +&eth0 {
> + status = "okay";
> + phy-mode = "gmii";
> + phy-handle = <&phy1>;
> + phy1: ethernet-phy@0 {
> + reg = <0>;
> + };
> +};

Thanks. I am able to boot Unleashed with networking enabled with this
patch.

FWIW,
Tested-by: Atish Patra <[email protected]>

Regards,
Atish

2019-06-21 22:00:01

by Atish Patra

[permalink] [raw]
Subject: Re: [PATCH v2] riscv: dts: Add DT node for SiFive FU540 Ethernet controller driver

On Fri, 2019-06-21 at 14:46 -0700, Atish Patra wrote:
> On Fri, 2019-06-21 at 14:18 -0500, Troy Benjegerdes wrote:
> > Can you post the fsbl and other images you used to boot/test this?
> >
>

Resending it without the attachment. Obviously, the mail did not go
through with the binary blob attached :( :(. My bad.

Let me know if you still want me to share the binary with you. I will
probably share it via some other method.

> I have not changed fsbl. It's the default one came with the board.
> Here are the heads of OpenSBI + U-Boot + Linux repo.
>
> OpenSBI: cd2dfdc870ed (master)
> U-boot: 77f6e2dd0551 + Anup's patch series (v4)
> https://github.com/atishp04/u-boot/tree/unleashed_working
>
> Linux: bed3c0d84e7e + Yash's Macb Series + this patch
> https://github.com/atishp04/linux/tree/5.2-rc6-pre
>
> I have also attached the OpenSBI + U-boot binary as well. But this is
> pre-configured with my tftpboot server. You need to change that.
>
> > I keep running into various failures when I build from source and I
> > want to rule out potential hardware issues related to clock and/or
> > ddr initialization
> >
> > On Fri, Jun 21, 2019, 2:14 PM Atish Patra <[email protected]>
> > wrote:
> > > On Fri, 2019-06-21 at 16:23 +0530, Yash Shah wrote:
> > > > DT node for SiFive FU540-C000 GEMGXL Ethernet controller driver
> > > added
> > > > Signed-off-by: Yash Shah <[email protected]>
> > > > ---
> > > > arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 16
> > > > ++++++++++++++++
> > > > arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 9
> > > +++++++++
> > > > 2 files changed, 25 insertions(+)
> > > >
> > > > diff --git a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> > > > b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> > > > index 4e8fbde..c53b4ea 100644
> > > > --- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> > > > +++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
> > > > @@ -225,5 +225,21 @@
> > > > #address-cells = <1>;
> > > > #size-cells = <0>;
> > > > };
> > > > + eth0: ethernet@10090000 {
> > > > + compatible = "sifive,fu540-macb";
> > > > + interrupt-parent = <&plic0>;
> > > > + interrupts = <53>;
> > > > + reg = <0x0 0x10090000 0x0 0x2000
> > > > + 0x0 0x100a0000 0x0 0x1000>;
> > > > + reg-names = "control";
> > > > + status = "disabled";
> > > > + local-mac-address = [00 00 00 00 00 00];
> > > > + clock-names = "pclk", "hclk";
> > > > + clocks = <&prci PRCI_CLK_GEMGXLPLL>,
> > > > + <&prci PRCI_CLK_GEMGXLPLL>;
> > > > + #address-cells = <1>;
> > > > + #size-cells = <0>;
> > > > + };
> > > > +
> > > > };
> > > > };
> > > > diff --git a/arch/riscv/boot/dts/sifive/hifive-unleashed-
> > > > a00.dts
> > > > b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> > > > index 4da8870..d783bf2 100644
> > > > --- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> > > > +++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
> > > > @@ -63,3 +63,12 @@
> > > > disable-wp;
> > > > };
> > > > };
> > > > +
> > > > +&eth0 {
> > > > + status = "okay";
> > > > + phy-mode = "gmii";
> > > > + phy-handle = <&phy1>;
> > > > + phy1: ethernet-phy@0 {
> > > > + reg = <0>;
> > > > + };
> > > > +};
> > >
> > > Thanks. I am able to boot Unleashed with networking enabled with
> > > this
> > > patch.
> > >
> > > FWIW,
> > > Tested-by: Atish Patra <[email protected]>
> > >
> > > Regards,
> > > Atish
> > > _______________________________________________
> > > linux-riscv mailing list
> > > [email protected]
> > > http://lists.infradead.org/mailman/listinfo/linux-riscv

2019-06-21 22:07:38

by Paul Walmsley

[permalink] [raw]
Subject: Re: [PATCH v2] riscv: dts: Add DT node for SiFive FU540 Ethernet controller driver

On Fri, 21 Jun 2019, Yash Shah wrote:

> DT node for SiFive FU540-C000 GEMGXL Ethernet controller driver added
>
> Signed-off-by: Yash Shah <[email protected]>

Thanks, dropped the "reg-names" property from the patch, and queued the
following updated version for v5.2-rc.


- Paul

From: Yash Shah <[email protected]>
Date: Fri, 21 Jun 2019 16:23:49 +0530
Subject: [PATCH] riscv: dts: Add DT node for SiFive FU540 Ethernet controller
driver

DT node for SiFive FU540-C000 GEMGXL Ethernet controller driver added

Signed-off-by: Yash Shah <[email protected]>
Reviewed-by: Anup Patel <[email protected]>
Tested-by: Atish Patra <[email protected]>
[[email protected]: dropped the "reg-names" property, as it
is not documented in the binding nor used in the driver]
Signed-off-by: Paul Walmsley <[email protected]>
---
arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 16 ++++++++++++++++
.../boot/dts/sifive/hifive-unleashed-a00.dts | 9 +++++++++
2 files changed, 25 insertions(+)

diff --git a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
index 3c06ee4b2b29..83f40b00ab63 100644
--- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
+++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
@@ -211,5 +211,21 @@
#address-cells = <1>;
#size-cells = <0>;
};
+ eth0: ethernet@10090000 {
+ compatible = "sifive,fu540-macb";
+ interrupt-parent = <&plic0>;
+ interrupts = <53>;
+ reg = <0x0 0x10090000 0x0 0x2000
+ 0x0 0x100a0000 0x0 0x1000>;
+ reg-names = "control";
+ status = "disabled";
+ local-mac-address = [00 00 00 00 00 00];
+ clock-names = "pclk", "hclk";
+ clocks = <&prci PRCI_CLK_GEMGXLPLL>,
+ <&prci PRCI_CLK_GEMGXLPLL>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
};
};
diff --git a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
index 4da88707e28f..d783bf2c3507 100644
--- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
+++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
@@ -63,3 +63,12 @@
disable-wp;
};
};
+
+&eth0 {
+ status = "okay";
+ phy-mode = "gmii";
+ phy-handle = <&phy1>;
+ phy1: ethernet-phy@0 {
+ reg = <0>;
+ };
+};
--
2.20.1

2019-06-22 00:33:51

by Troy Benjegerdes

[permalink] [raw]
Subject: Re: [PATCH v2] riscv: dts: Add DT node for SiFive FU540 Ethernet controller driver



> On Jun 21, 2019, at 4:59 PM, Atish Patra <[email protected]> wrote:
>
> On Fri, 2019-06-21 at 14:46 -0700, Atish Patra wrote:
>> On Fri, 2019-06-21 at 14:18 -0500, Troy Benjegerdes wrote:
>>> Can you post the fsbl and other images you used to boot/test this?
>>>
>>
>
> Resending it without the attachment. Obviously, the mail did not go
> through with the binary blob attached :( :(. My bad.
>
> Let me know if you still want me to share the binary with you. I will
> probably share it via some other method.

The bl came through as it was sent direct to me, and I can deal with
the tftp config manually. I have a kernel image, but not the boot.scr.uimg
that it looks like you are using. Is that from Yocto?

>
>> I have not changed fsbl. It's the default one came with the board.
>> Here are the heads of OpenSBI + U-Boot + Linux repo.
>>
>> OpenSBI: cd2dfdc870ed (master)
>> U-boot: 77f6e2dd0551 + Anup's patch series (v4)
>> https://github.com/atishp04/u-boot/tree/unleashed_working
>>
>> Linux: bed3c0d84e7e + Yash's Macb Series + this patch
>> https://github.com/atishp04/linux/tree/5.2-rc6-pre
>>
>> I have also attached the OpenSBI + U-boot binary as well. But this is
>> pre-configured with my tftpboot server. You need to change that.
>>
>>> I keep running into various failures when I build from source and I
>>> want to rule out potential hardware issues related to clock and/or
>>> ddr initialization
>>>
>>> On Fri, Jun 21, 2019, 2:14 PM Atish Patra <[email protected]>
>>> wrote:
>>>> On Fri, 2019-06-21 at 16:23 +0530, Yash Shah wrote:
>>>>> DT node for SiFive FU540-C000 GEMGXL Ethernet controller driver
>>>> added
>>>>> Signed-off-by: Yash Shah <[email protected]>
>>>>> ---
>>>>> arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 16
>>>>> ++++++++++++++++
>>>>> arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 9
>>>> +++++++++
>>>>> 2 files changed, 25 insertions(+)
>>>>>
>>>>> diff --git a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>> b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>> index 4e8fbde..c53b4ea 100644
>>>>> --- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>> +++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>> @@ -225,5 +225,21 @@
>>>>> #address-cells = <1>;
>>>>> #size-cells = <0>;
>>>>> };
>>>>> + eth0: ethernet@10090000 {
>>>>> + compatible = "sifive,fu540-macb";
>>>>> + interrupt-parent = <&plic0>;
>>>>> + interrupts = <53>;
>>>>> + reg = <0x0 0x10090000 0x0 0x2000
>>>>> + 0x0 0x100a0000 0x0 0x1000>;
>>>>> + reg-names = "control";
>>>>> + status = "disabled";
>>>>> + local-mac-address = [00 00 00 00 00 00];
>>>>> + clock-names = "pclk", "hclk";
>>>>> + clocks = <&prci PRCI_CLK_GEMGXLPLL>,
>>>>> + <&prci PRCI_CLK_GEMGXLPLL>;
>>>>> + #address-cells = <1>;
>>>>> + #size-cells = <0>;
>>>>> + };
>>>>> +
>>>>> };
>>>>> };
>>>>> diff --git a/arch/riscv/boot/dts/sifive/hifive-unleashed-
>>>>> a00.dts
>>>>> b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>>>>> index 4da8870..d783bf2 100644
>>>>> --- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>>>>> +++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>>>>> @@ -63,3 +63,12 @@
>>>>> disable-wp;
>>>>> };
>>>>> };
>>>>> +
>>>>> +&eth0 {
>>>>> + status = "okay";
>>>>> + phy-mode = "gmii";
>>>>> + phy-handle = <&phy1>;
>>>>> + phy1: ethernet-phy@0 {
>>>>> + reg = <0>;
>>>>> + };
>>>>> +};
>>>>
>>>> Thanks. I am able to boot Unleashed with networking enabled with
>>>> this
>>>> patch.
>>>>
>>>> FWIW,
>>>> Tested-by: Atish Patra <[email protected]>
>>>>
>>>> Regards,
>>>> Atish
>>>> _______________________________________________
>>>> linux-riscv mailing list
>>>> [email protected]
>>>> http://lists.infradead.org/mailman/listinfo/linux-riscv

2019-06-22 01:58:52

by Troy Benjegerdes

[permalink] [raw]
Subject: Re: [PATCH v2] riscv: dts: Add DT node for SiFive FU540 Ethernet controller driver



> On Jun 21, 2019, at 7:33 PM, Troy Benjegerdes <[email protected]> wrote:
>
>
>
>> On Jun 21, 2019, at 4:59 PM, Atish Patra <[email protected]> wrote:
>>
>> On Fri, 2019-06-21 at 14:46 -0700, Atish Patra wrote:
>>> On Fri, 2019-06-21 at 14:18 -0500, Troy Benjegerdes wrote:
>>>> Can you post the fsbl and other images you used to boot/test this?
>>>>
>>>
>>
>> Resending it without the attachment. Obviously, the mail did not go
>> through with the binary blob attached :( :(. My bad.
>>
>> Let me know if you still want me to share the binary with you. I will
>> probably share it via some other method.
>
> The bl came through as it was sent direct to me, and I can deal with
> the tftp config manually. I have a kernel image, but not the boot.scr.uimg
> that it looks like you are using. Is that from Yocto?

I got console output, after extracting the boot script from yocto.

The important part seems to be calling
‘bootm $kernel_addr_r - $fdt_addr_r’

Which maybe leads into a discussion of what can we do to at
least output some sort of useful debug information if the device
tree is not found or invalid?

I’d also like to propose that on RiscV, we use the chosen node
for kernel command line and initrd location (like qemu does), and
in u-boot, default to always passing the device tree from bootm
and other commands (like bootelf)

>
>>
>>> I have not changed fsbl. It's the default one came with the board.
>>> Here are the heads of OpenSBI + U-Boot + Linux repo.
>>>
>>> OpenSBI: cd2dfdc870ed (master)
>>> U-boot: 77f6e2dd0551 + Anup's patch series (v4)
>>> https://github.com/atishp04/u-boot/tree/unleashed_working
>>>
>>> Linux: bed3c0d84e7e + Yash's Macb Series + this patch
>>> https://github.com/atishp04/linux/tree/5.2-rc6-pre
>>>
>>> I have also attached the OpenSBI + U-boot binary as well. But this is
>>> pre-configured with my tftpboot server. You need to change that.
>>>
>>>> I keep running into various failures when I build from source and I
>>>> want to rule out potential hardware issues related to clock and/or
>>>> ddr initialization
>>>>
>>>> On Fri, Jun 21, 2019, 2:14 PM Atish Patra <[email protected]>
>>>> wrote:
>>>>> On Fri, 2019-06-21 at 16:23 +0530, Yash Shah wrote:
>>>>>> DT node for SiFive FU540-C000 GEMGXL Ethernet controller driver
>>>>> added
>>>>>> Signed-off-by: Yash Shah <[email protected]>
>>>>>> ---
>>>>>> arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 16
>>>>>> ++++++++++++++++
>>>>>> arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 9
>>>>> +++++++++
>>>>>> 2 files changed, 25 insertions(+)
>>>>>>
>>>>>> diff --git a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>>> b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>>> index 4e8fbde..c53b4ea 100644
>>>>>> --- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>>> +++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>>> @@ -225,5 +225,21 @@
>>>>>> #address-cells = <1>;
>>>>>> #size-cells = <0>;
>>>>>> };
>>>>>> + eth0: ethernet@10090000 {
>>>>>> + compatible = "sifive,fu540-macb";
>>>>>> + interrupt-parent = <&plic0>;
>>>>>> + interrupts = <53>;
>>>>>> + reg = <0x0 0x10090000 0x0 0x2000
>>>>>> + 0x0 0x100a0000 0x0 0x1000>;
>>>>>> + reg-names = "control";
>>>>>> + status = "disabled";
>>>>>> + local-mac-address = [00 00 00 00 00 00];
>>>>>> + clock-names = "pclk", "hclk";
>>>>>> + clocks = <&prci PRCI_CLK_GEMGXLPLL>,
>>>>>> + <&prci PRCI_CLK_GEMGXLPLL>;
>>>>>> + #address-cells = <1>;
>>>>>> + #size-cells = <0>;
>>>>>> + };
>>>>>> +
>>>>>> };
>>>>>> };
>>>>>> diff --git a/arch/riscv/boot/dts/sifive/hifive-unleashed-
>>>>>> a00.dts
>>>>>> b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>>>>>> index 4da8870..d783bf2 100644
>>>>>> --- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>>>>>> +++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>>>>>> @@ -63,3 +63,12 @@
>>>>>> disable-wp;
>>>>>> };
>>>>>> };
>>>>>> +
>>>>>> +&eth0 {
>>>>>> + status = "okay";
>>>>>> + phy-mode = "gmii";
>>>>>> + phy-handle = <&phy1>;
>>>>>> + phy1: ethernet-phy@0 {
>>>>>> + reg = <0>;
>>>>>> + };
>>>>>> +};
>>>>>
>>>>> Thanks. I am able to boot Unleashed with networking enabled with
>>>>> this
>>>>> patch.
>>>>>
>>>>> FWIW,
>>>>> Tested-by: Atish Patra <[email protected]>
>>>>>
>>>>> Regards,
>>>>> Atish
>>>>> _______________________________________________
>>>>> linux-riscv mailing list
>>>>> [email protected]
>>>>> http://lists.infradead.org/mailman/listinfo/linux-riscv
>

2019-06-22 18:17:22

by Troy Benjegerdes

[permalink] [raw]
Subject: Re: [PATCH v2] riscv: dts: Add DT node for SiFive FU540 Ethernet controller driver



> On Jun 21, 2019, at 2:14 PM, Atish Patra <[email protected]> wrote:
>
> On Fri, 2019-06-21 at 16:23 +0530, Yash Shah wrote:
>> DT node for SiFive FU540-C000 GEMGXL Ethernet controller driver added
>>
>> Signed-off-by: Yash Shah <[email protected]>
>> ---
>> arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 16
>> ++++++++++++++++
>> arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 9 +++++++++
>> 2 files changed, 25 insertions(+)
>>
>> diff --git a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>> b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>> index 4e8fbde..c53b4ea 100644
>> --- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>> +++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>> @@ -225,5 +225,21 @@
>> #address-cells = <1>;
>> #size-cells = <0>;
>> };
>> + eth0: ethernet@10090000 {
>> + compatible = "sifive,fu540-macb";
>> + interrupt-parent = <&plic0>;
>> + interrupts = <53>;
>> + reg = <0x0 0x10090000 0x0 0x2000
>> + 0x0 0x100a0000 0x0 0x1000>;
>> + reg-names = "control";
>> + status = "disabled";
>> + local-mac-address = [00 00 00 00 00 00];
>> + clock-names = "pclk", "hclk";
>> + clocks = <&prci PRCI_CLK_GEMGXLPLL>,
>> + <&prci PRCI_CLK_GEMGXLPLL>;
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + };
>> +
>> };
>> };
>> diff --git a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>> b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>> index 4da8870..d783bf2 100644
>> --- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>> +++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>> @@ -63,3 +63,12 @@
>> disable-wp;
>> };
>> };
>> +
>> +&eth0 {
>> + status = "okay";
>> + phy-mode = "gmii";
>> + phy-handle = <&phy1>;
>> + phy1: ethernet-phy@0 {
>> + reg = <0>;
>> + };
>> +};
>
> Thanks. I am able to boot Unleashed with networking enabled with this
> patch.
>
> FWIW,
> Tested-by: Atish Patra <[email protected]>
>
> Regards,
> Atish

I am able to boot using a build from the dev/new-dts branch of
my freedom-u-sdk development tree [1] which has this patch
with an additional reset-gpios entry for the ethernet phy in the
DTS provided by the legacy U-boot[2].

Tested-by: Troy Benjegerdes <[email protected]>

[1] https://github.com/tmagik/freedom-u-sdk
[2] https://github.com/sifive/HiFive_U-Boot/blob/081373fa3eb0ca79ba3f4a703e8e83a15135a6d1/arch/riscv/dts/hifive_u540.dts#L73

2019-06-23 07:05:58

by Atish Patra

[permalink] [raw]
Subject: Re: [PATCH v2] riscv: dts: Add DT node for SiFive FU540 Ethernet controller driver

On 6/21/19 6:57 PM, Troy Benjegerdes wrote:
>
>
>> On Jun 21, 2019, at 7:33 PM, Troy Benjegerdes <[email protected]> wrote:
>>
>>
>>
>>> On Jun 21, 2019, at 4:59 PM, Atish Patra <[email protected]> wrote:
>>>
>>> On Fri, 2019-06-21 at 14:46 -0700, Atish Patra wrote:
>>>> On Fri, 2019-06-21 at 14:18 -0500, Troy Benjegerdes wrote:
>>>>> Can you post the fsbl and other images you used to boot/test this?
>>>>>
>>>>
>>>
>>> Resending it without the attachment. Obviously, the mail did not go
>>> through with the binary blob attached :( :(. My bad.
>>>
>>> Let me know if you still want me to share the binary with you. I will
>>> probably share it via some other method.
>>
>> The bl came through as it was sent direct to me, and I can deal with
>> the tftp config manually. I have a kernel image, but not the boot.scr.uimg
>> that it looks like you are using. Is that from Yocto?
>
> I got console output, after extracting the boot script from yocto.
>

Glad it worked for you.
> The important part seems to be calling
> ‘bootm $kernel_addr_r - $fdt_addr_r’
>
> Which maybe leads into a discussion of what can we do to at
> least output some sort of useful debug information if the device
> tree is not found or invalid?
>
At least serial & clock needs to be correct for uart to work so that
useful debug information can be displayed.

> I’d also like to propose that on RiscV, we use the chosen node
> for kernel command line
and initrd location (like qemu does), and
> in u-boot, default to always passing the device tree from bootm
> and other commands (like bootelf)
>

If I understand you correctly, you want a kernel command line with fixed
initrd location set in chosen node that U-Boot can pass on to kernel ?

If that's the case, that's not feasible as everybody's kernel command
line may not be same and will probably override it using CONFIG_CMDLINE.

So I don't see the point int setting a fixed one. What's the advantage
in doing that ?

>>
>>>
>>>> I have not changed fsbl. It's the default one came with the board.
>>>> Here are the heads of OpenSBI + U-Boot + Linux repo.
>>>>
>>>> OpenSBI: cd2dfdc870ed (master)
>>>> U-boot: 77f6e2dd0551 + Anup's patch series (v4)
>>>> https://github.com/atishp04/u-boot/tree/unleashed_working
>>>>
>>>> Linux: bed3c0d84e7e + Yash's Macb Series + this patch
>>>> https://github.com/atishp04/linux/tree/5.2-rc6-pre
>>>>
>>>> I have also attached the OpenSBI + U-boot binary as well. But this is
>>>> pre-configured with my tftpboot server. You need to change that.
>>>>
>>>>> I keep running into various failures when I build from source and I
>>>>> want to rule out potential hardware issues related to clock and/or
>>>>> ddr initialization
>>>>>
>>>>> On Fri, Jun 21, 2019, 2:14 PM Atish Patra <[email protected]>
>>>>> wrote:
>>>>>> On Fri, 2019-06-21 at 16:23 +0530, Yash Shah wrote:
>>>>>>> DT node for SiFive FU540-C000 GEMGXL Ethernet controller driver
>>>>>> added
>>>>>>> Signed-off-by: Yash Shah <[email protected]>
>>>>>>> ---
>>>>>>> arch/riscv/boot/dts/sifive/fu540-c000.dtsi | 16
>>>>>>> ++++++++++++++++
>>>>>>> arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 9
>>>>>> +++++++++
>>>>>>> 2 files changed, 25 insertions(+)
>>>>>>>
>>>>>>> diff --git a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>>>> b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>>>> index 4e8fbde..c53b4ea 100644
>>>>>>> --- a/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>>>> +++ b/arch/riscv/boot/dts/sifive/fu540-c000.dtsi
>>>>>>> @@ -225,5 +225,21 @@
>>>>>>> #address-cells = <1>;
>>>>>>> #size-cells = <0>;
>>>>>>> };
>>>>>>> + eth0: ethernet@10090000 {
>>>>>>> + compatible = "sifive,fu540-macb";
>>>>>>> + interrupt-parent = <&plic0>;
>>>>>>> + interrupts = <53>;
>>>>>>> + reg = <0x0 0x10090000 0x0 0x2000
>>>>>>> + 0x0 0x100a0000 0x0 0x1000>;
>>>>>>> + reg-names = "control";
>>>>>>> + status = "disabled";
>>>>>>> + local-mac-address = [00 00 00 00 00 00];
>>>>>>> + clock-names = "pclk", "hclk";
>>>>>>> + clocks = <&prci PRCI_CLK_GEMGXLPLL>,
>>>>>>> + <&prci PRCI_CLK_GEMGXLPLL>;
>>>>>>> + #address-cells = <1>;
>>>>>>> + #size-cells = <0>;
>>>>>>> + };
>>>>>>> +
>>>>>>> };
>>>>>>> };
>>>>>>> diff --git a/arch/riscv/boot/dts/sifive/hifive-unleashed-
>>>>>>> a00.dts
>>>>>>> b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>>>>>>> index 4da8870..d783bf2 100644
>>>>>>> --- a/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>>>>>>> +++ b/arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
>>>>>>> @@ -63,3 +63,12 @@
>>>>>>> disable-wp;
>>>>>>> };
>>>>>>> };
>>>>>>> +
>>>>>>> +&eth0 {
>>>>>>> + status = "okay";
>>>>>>> + phy-mode = "gmii";
>>>>>>> + phy-handle = <&phy1>;
>>>>>>> + phy1: ethernet-phy@0 {
>>>>>>> + reg = <0>;
>>>>>>> + };
>>>>>>> +};
>>>>>>
>>>>>> Thanks. I am able to boot Unleashed with networking enabled with
>>>>>> this
>>>>>> patch.
>>>>>>
>>>>>> FWIW,
>>>>>> Tested-by: Atish Patra <[email protected]>
>>>>>>
>>>>>> Regards,
>>>>>> Atish
>>>>>> _______________________________________________
>>>>>> linux-riscv mailing list
>>>>>> [email protected]
>>>>>> http://lists.infradead.org/mailman/listinfo/linux-riscv
>>
>
>


--
Regards,
Atish