diff mbox series

[RESEND] ARM: dts: socfpga: Add basic support for Terrasic's de10-nano

Message ID 20250128172917.4565-2-u.kleine-koenig@baylibre.com (mailing list archive)
State New
Headers show
Series [RESEND] ARM: dts: socfpga: Add basic support for Terrasic's de10-nano | expand

Commit Message

Uwe Kleine-König Jan. 28, 2025, 5:29 p.m. UTC
This dts is enough to make the board boot to Linux with the rootfs on
a micro SD card.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
Hello,

in the variant I sent 15 min ago I fatfingered the address of the
linux-arm-kernel list. So here comes a resend with the right address ...

Sorry for the noise
Uwe

 arch/arm/boot/dts/intel/socfpga/Makefile      |  1 +
 .../socfpga/socfpga_cyclone5_de10nano.dts     | 90 +++++++++++++++++++
 2 files changed, 91 insertions(+)
 create mode 100644 arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts


base-commit: 5ffa57f6eecefababb8cbe327222ef171943b183

Comments

Andrew Lunn Jan. 28, 2025, 5:44 p.m. UTC | #1
> +&gmac1 {
> +	/* Uses a KSZ9031RNX phy */
> +	status = "okay";
> +	phy-mode = "rgmii";
> +
> +	rxd0-skew-ps = <420>;
> +	rxd1-skew-ps = <420>;
> +	rxd2-skew-ps = <420>;
> +	rxd3-skew-ps = <420>;
> +	txen-skew-ps = <0>;
> +	txc-skew-ps = <1860>;
> +	rxdv-skew-ps = <420>;
> +	rxc-skew-ps = <1680>;
> +};

Hi Uwe

The convectional meaning of phy-mode 'rgmii' is that the PCB provides
the 2ns delay. Here you are abusing the

> +	txc-skew-ps = <1860>;
> +	rxc-skew-ps = <1680>;

To add these delays.

Please test without these two lines, and change phy-mode to
'rgmii-id'. 1680 is rather low, so it might not work. Look for CRC
errors for received packets.

	Andrew
Uwe Kleine-König Jan. 29, 2025, 8:35 a.m. UTC | #2
Hello Andrew,

On Tue, Jan 28, 2025 at 06:44:26PM +0100, Andrew Lunn wrote:
> > +&gmac1 {
> > +	/* Uses a KSZ9031RNX phy */
> > +	status = "okay";
> > +	phy-mode = "rgmii";
> > +
> > +	rxd0-skew-ps = <420>;
> > +	rxd1-skew-ps = <420>;
> > +	rxd2-skew-ps = <420>;
> > +	rxd3-skew-ps = <420>;
> > +	txen-skew-ps = <0>;
> > +	txc-skew-ps = <1860>;
> > +	rxdv-skew-ps = <420>;
> > +	rxc-skew-ps = <1680>;
> > +};
> 
> The convectional meaning of phy-mode 'rgmii' is that the PCB provides
> the 2ns delay. Here you are abusing the
> 
> > +	txc-skew-ps = <1860>;
> > +	rxc-skew-ps = <1680>;
> 
> To add these delays.

Ah, at some point I already knew that. Thanks for repeating that hint.
(Back then it was for
arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts.)

> Please test without these two lines, and change phy-mode to
> 'rgmii-id'. 1680 is rather low, so it might not work. Look for CRC
> errors for received packets.

I did an apt upgrade involving > 100 MB downloads with rgmii-id and
afterwards I had:

	# ip -stats link show dev eth0
	2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAU
	LT group default qlen 1000
	    link/ether ee:5f:09:22:72:da brd ff:ff:ff:ff:ff:ff
	    RX:  bytes packets errors dropped  missed   mcast
	     158336739  113000      0       0       0       0
	    TX:  bytes packets errors dropped carrier collsns
		482481    5094      0       0       0       0

so that seems to be fine, right?

Best regards
Uwe
Krzysztof Kozlowski Jan. 29, 2025, 9:27 a.m. UTC | #3
On 28/01/2025 18:29, Uwe Kleine-König wrote:
> This dts is enough to make the board boot to Linux with the rootfs on
> a micro SD card.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
> ---
> Hello,
> 
> in the variant I sent 15 min ago I fatfingered the address of the
> linux-arm-kernel list. So here comes a resend with the right address ...
> 
> Sorry for the noise
> Uwe
> 
>  arch/arm/boot/dts/intel/socfpga/Makefile      |  1 +
>  .../socfpga/socfpga_cyclone5_de10nano.dts     | 90 +++++++++++++++++++
>  2 files changed, 91 insertions(+)
>  create mode 100644 arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts
> 
> diff --git a/arch/arm/boot/dts/intel/socfpga/Makefile b/arch/arm/boot/dts/intel/socfpga/Makefile
> index c467828aeb4b..7f69a0355ea5 100644
> --- a/arch/arm/boot/dts/intel/socfpga/Makefile
> +++ b/arch/arm/boot/dts/intel/socfpga/Makefile
> @@ -10,6 +10,7 @@ dtb-$(CONFIG_ARCH_INTEL_SOCFPGA) += \
>  	socfpga_cyclone5_mcvevk.dtb \
>  	socfpga_cyclone5_socdk.dtb \
>  	socfpga_cyclone5_de0_nano_soc.dtb \
> +	socfpga_cyclone5_de10nano.dtb \
>  	socfpga_cyclone5_sockit.dtb \
>  	socfpga_cyclone5_socrates.dtb \
>  	socfpga_cyclone5_sodia.dtb \
> diff --git a/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts
> new file mode 100644
> index 000000000000..d1f23a57a94d
> --- /dev/null
> +++ b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts
> @@ -0,0 +1,90 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2017, Intel Corporation
> + *
> + * based on socfpga_cyclone5_de0_nano_soc.dts
> + */
> +/dts-v1/;
> +
> +#include "socfpga_cyclone5.dtsi"
> +#include <dt-bindings/interrupt-controller/irq.h>
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> +	model = "Terasic DE10-Nano";
> +	compatible = "altr,socfpga-cyclone5", "altr,socfpga";

Incorrect compatible. It's not cyclone5 board. cyclone5 is the SoC.

There is no altr,socfpga

This wasn't ever tested with bindings.


> +
> +	chosen {
> +		stdout-path = "serial0:115200n8";
> +	};
> +
> +	memory@0 {
> +		/* 1 GiB */
> +		device_type = "memory";
> +		reg = <0x0 0x40000000>;
> +	};
> +
> +	soc {
> +		fpga_axi: axi_h2f_lw_bridge@ff200000 {

Follow DTS coding style. You just sent us something from downstream.

> +			compatible = "simple-bus";
> +			reg = <0xff200000 0x00200000>;
> +			#address-cells = <1>;
> +			#size-cells = <1>;

ranges would be after reg, but they are pointless here, no? Where is the
child?

> +			ranges = <0x00000000 0xff200000 0x00200000>;
> +		};
> +	};
> +};
> +
> +&gmac1 {
> +	/* Uses a KSZ9031RNX phy */
> +	status = "okay";
> +	phy-mode = "rgmii";
> +
> +	rxd0-skew-ps = <420>;
> +	rxd1-skew-ps = <420>;
> +	rxd2-skew-ps = <420>;
> +	rxd3-skew-ps = <420>;
> +	txen-skew-ps = <0>;
> +	txc-skew-ps = <1860>;
> +	rxdv-skew-ps = <420>;
> +	rxc-skew-ps = <1680>;
> +};
> +
> +&gpio0 {
> +	status = "okay";
> +};
> +
> +&gpio1 {
> +	status = "okay";
> +};
> +
> +&gpio2 {
> +	status = "okay";
> +};
> +
> +&i2c0 {
> +	clock-frequency = <100000>;
> +	status = "okay";
> +
> +	accelerometer@53 {
> +		compatible = "adi,adxl34x";

There is no such compatible and nothing in changelog refers to missing
bindings. Always provide link in the changelog to your bindings which
were not yet accepted.


Best regards,
Krzysztof
Uwe Kleine-König Jan. 29, 2025, 12:19 p.m. UTC | #4
Hello Krzysztof,

On Wed, Jan 29, 2025 at 10:27:22AM +0100, Krzysztof Kozlowski wrote:
> On 28/01/2025 18:29, Uwe Kleine-König wrote:
> > This dts is enough to make the board boot to Linux with the rootfs on
> > a micro SD card.
> > 
> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
> > ---
> > diff --git a/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts
> > new file mode 100644
> > index 000000000000..d1f23a57a94d
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts
> > @@ -0,0 +1,90 @@
> > +// SPDX-License-Identifier: GPL-2.0+
> > +/*
> > + * Copyright (C) 2017, Intel Corporation
> > + *
> > + * based on socfpga_cyclone5_de0_nano_soc.dts
> > + */
> > +/dts-v1/;
> > +
> > +#include "socfpga_cyclone5.dtsi"
> > +#include <dt-bindings/interrupt-controller/irq.h>
> > +#include <dt-bindings/gpio/gpio.h>
> > +
> > +/ {
> > +	model = "Terasic DE10-Nano";
> > +	compatible = "altr,socfpga-cyclone5", "altr,socfpga";
> 
> Incorrect compatible. It's not cyclone5 board. cyclone5 is the SoC.

OK, adding "terasic,de10-nano".

> There is no altr,socfpga

What does that mean?
`git grep \"altr,socfpga\" linus/master:arch/arm/boot` gives me 15
matches from other boards with socfpga SoCs. If you give me a bit more
verbose description for the problem you're pointing out here, I can work
on that.

> This wasn't ever tested with bindings.

I tried

	dt-validate -m -u Documentation/devicetree/bindings -p ~/work/kbuild/arm/Documentation/devicetree/bindings/processed-schema.json ~/work/kbuild/arm/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb

which emitted a bunch of warnings and after processing some of them I
gave up because they were all triggered by the soc.dtsi file. I started
another try comparing the output for "my" socfpga_cyclone5_de10nano.dts
with one for a file that only has the includes and the machine
compatible. (Which generates 124 lines and 123 lines respectively.)

I'll work on the diff between the two for the next revision. Or would
you recommend a different approach?

> > +	chosen {
> > +		stdout-path = "serial0:115200n8";
> > +	};
> > +
> > +	memory@0 {
> > +		/* 1 GiB */
> > +		device_type = "memory";
> > +		reg = <0x0 0x40000000>;
> > +	};
> > +
> > +	soc {
> > +		fpga_axi: axi_h2f_lw_bridge@ff200000 {
> 
> Follow DTS coding style. You just sent us something from downstream.

Indeed this is from downstream. Looking at the matching dt-validate
output I guess just "axi@ff200000" would be appropriate?!

> > +			compatible = "simple-bus";
> > +			reg = <0xff200000 0x00200000>;
> > +			#address-cells = <1>;
> > +			#size-cells = <1>;
> 
> ranges would be after reg, but they are pointless here, no?

I thought it's "compatible", "reg" at the start, "status" at the end and
the rest in-between in alphabetic order. What is the right ordering?

> Where is the child?

I intend to add children using dt-overlays. I have a prototype here, but
that's still to embarrassing to show.

> > +			ranges = <0x00000000 0xff200000 0x00200000>;
> > +		};
> > +	};
> > +};
> > +
> > [...]
> > +&i2c0 {
> > +	clock-frequency = <100000>;
> > +	status = "okay";
> > +
> > +	accelerometer@53 {
> > +		compatible = "adi,adxl34x";
> 
> There is no such compatible and nothing in changelog refers to missing
> bindings. Always provide link in the changelog to your bindings which
> were not yet accepted.

Oops, indeed. Will make this "adi,adxl345" for the next revision.

Best regards and thanks for your feedback,
Uwe
Krzysztof Kozlowski Jan. 29, 2025, 12:34 p.m. UTC | #5
On 29/01/2025 13:19, Uwe Kleine-König wrote:
> Hello Krzysztof,
> 
> On Wed, Jan 29, 2025 at 10:27:22AM +0100, Krzysztof Kozlowski wrote:
>> On 28/01/2025 18:29, Uwe Kleine-König wrote:
>>> This dts is enough to make the board boot to Linux with the rootfs on
>>> a micro SD card.
>>>
>>> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
>>> ---
>>> diff --git a/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts
>>> new file mode 100644
>>> index 000000000000..d1f23a57a94d
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts
>>> @@ -0,0 +1,90 @@
>>> +// SPDX-License-Identifier: GPL-2.0+
>>> +/*
>>> + * Copyright (C) 2017, Intel Corporation
>>> + *
>>> + * based on socfpga_cyclone5_de0_nano_soc.dts
>>> + */
>>> +/dts-v1/;
>>> +
>>> +#include "socfpga_cyclone5.dtsi"
>>> +#include <dt-bindings/interrupt-controller/irq.h>
>>> +#include <dt-bindings/gpio/gpio.h>
>>> +
>>> +/ {
>>> +	model = "Terasic DE10-Nano";
>>> +	compatible = "altr,socfpga-cyclone5", "altr,socfpga";
>>
>> Incorrect compatible. It's not cyclone5 board. cyclone5 is the SoC.
> 
> OK, adding "terasic,de10-nano".
> 
>> There is no altr,socfpga
> 
> What does that mean?
> `git grep \"altr,socfpga\" linus/master:arch/arm/boot` gives me 15
> matches from other boards with socfpga SoCs. If you give me a bit more
> verbose description for the problem you're pointing out here, I can work
> on that.

My bad, some poor git grep result. There is such compatible, so it is fine.

> 
>> This wasn't ever tested with bindings.
> 
> I tried
> 
> 	dt-validate -m -u Documentation/devicetree/bindings -p ~/work/kbuild/arm/Documentation/devicetree/bindings/processed-schema.json ~/work/kbuild/arm/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb

That's unusual way of running the check, but of course might work.

> 
> which emitted a bunch of warnings and after processing some of them I
> gave up because they were all triggered by the soc.dtsi file. I started

These are fine, but you introduce issues purely here.

> another try comparing the output for "my" socfpga_cyclone5_de10nano.dts
> with one for a file that only has the includes and the machine
> compatible. (Which generates 124 lines and 123 lines respectively.)
> 
> I'll work on the diff between the two for the next revision. Or would
> you recommend a different approach?
> 
>>> +	chosen {
>>> +		stdout-path = "serial0:115200n8";
>>> +	};
>>> +
>>> +	memory@0 {
>>> +		/* 1 GiB */
>>> +		device_type = "memory";
>>> +		reg = <0x0 0x40000000>;
>>> +	};
>>> +
>>> +	soc {
>>> +		fpga_axi: axi_h2f_lw_bridge@ff200000 {
>>
>> Follow DTS coding style. You just sent us something from downstream.
> 
> Indeed this is from downstream. Looking at the matching dt-validate
> output I guess just "axi@ff200000" would be appropriate?!

bus@

> 
>>> +			compatible = "simple-bus";
>>> +			reg = <0xff200000 0x00200000>;
>>> +			#address-cells = <1>;
>>> +			#size-cells = <1>;
>>
>> ranges would be after reg, but they are pointless here, no?
> 
> I thought it's "compatible", "reg" at the start, "status" at the end and
> the rest in-between in alphabetic order. What is the right ordering?

DTS coding style could be clearer here. It exactly says what is the
first, what is the second and what is the third.

> 
>> Where is the child?
> 
> I intend to add children using dt-overlays. I have a prototype here, but
> that's still to embarrassing to show.

The entire bus is in such case a bit confusing. If you have nothing
connected here in the base board, does it really exist in FPGA bitstream?



Best regards,
Krzysztof
Andrew Lunn Jan. 29, 2025, 1:31 p.m. UTC | #6
On Wed, Jan 29, 2025 at 09:35:21AM +0100, Uwe Kleine-König wrote:
> Hello Andrew,
> 
> On Tue, Jan 28, 2025 at 06:44:26PM +0100, Andrew Lunn wrote:
> > > +&gmac1 {
> > > +	/* Uses a KSZ9031RNX phy */
> > > +	status = "okay";
> > > +	phy-mode = "rgmii";
> > > +
> > > +	rxd0-skew-ps = <420>;
> > > +	rxd1-skew-ps = <420>;
> > > +	rxd2-skew-ps = <420>;
> > > +	rxd3-skew-ps = <420>;
> > > +	txen-skew-ps = <0>;
> > > +	txc-skew-ps = <1860>;
> > > +	rxdv-skew-ps = <420>;
> > > +	rxc-skew-ps = <1680>;
> > > +};
> > 
> > The convectional meaning of phy-mode 'rgmii' is that the PCB provides
> > the 2ns delay. Here you are abusing the
> > 
> > > +	txc-skew-ps = <1860>;
> > > +	rxc-skew-ps = <1680>;
> > 
> > To add these delays.
> 
> Ah, at some point I already knew that. Thanks for repeating that hint.

No problem a with the hint. This is a nice easy case. Some vendors
have made a big mess with RGMII delays, hiding it in the bootloader,
and giving customers bad advice. That is much harder to fix.

> (Back then it was for
> arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts.)
> 
> > Please test without these two lines, and change phy-mode to
> > 'rgmii-id'. 1680 is rather low, so it might not work. Look for CRC
> > errors for received packets.
> 
> I did an apt upgrade involving > 100 MB downloads with rgmii-id and
> afterwards I had:
> 
> 	# ip -stats link show dev eth0
> 	2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAU
> 	LT group default qlen 1000
> 	    link/ether ee:5f:09:22:72:da brd ff:ff:ff:ff:ff:ff
> 	    RX:  bytes packets errors dropped  missed   mcast
> 	     158336739  113000      0       0       0       0
> 	    TX:  bytes packets errors dropped carrier collsns
> 		482481    5094      0       0       0       0
> 
> so that seems to be fine, right?

Yes, this looks good.

Thanks
	Andrew
Rob Herring Jan. 29, 2025, 2:38 p.m. UTC | #7
On Tue, 28 Jan 2025 18:29:17 +0100, Uwe Kleine-König wrote:
> This dts is enough to make the board boot to Linux with the rootfs on
> a micro SD card.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
> ---
> Hello,
> 
> in the variant I sent 15 min ago I fatfingered the address of the
> linux-arm-kernel list. So here comes a resend with the right address ...
> 
> Sorry for the noise
> Uwe
> 
>  arch/arm/boot/dts/intel/socfpga/Makefile      |  1 +
>  .../socfpga/socfpga_cyclone5_de10nano.dts     | 90 +++++++++++++++++++
>  2 files changed, 91 insertions(+)
>  create mode 100644 arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts
> 


My bot found new DTB warnings on the .dts files added or changed in this
series.

Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.

If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:

  pip3 install dtschema --upgrade


New warnings running 'make CHECK_DTBS=y for arch/arm/boot/dts/intel/' for 20250128172917.4565-2-u.kleine-koenig@baylibre.com:

arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /: compatible: 'oneOf' conditional failed, one must be fixed:
	['altr,socfpga-cyclone5', 'altr,socfpga'] is too short
	'altr,socfpga-cyclone5' is not one of ['altr,socfpga-arria5-socdk']
	'altr,socfpga-cyclone5' is not one of ['altr,socfpga-arria10-socdk']
	'altr,socfpga-cyclone5' is not one of ['enclustra,mercury-pe1', 'google,chameleon-v3']
	'altr,socfpga-cyclone5' is not one of ['altr,socfpga-cyclone5-socdk', 'denx,mcvevk', 'ebv,socrates', 'macnica,sodia', 'novtech,chameleon96', 'samtec,vining', 'terasic,de0-atlas', 'terasic,socfpga-cyclone5-sockit']
	'altr,socfpga-cyclone5' is not one of ['altr,socfpga-stratix10-socdk', 'altr,socfpga-stratix10-swvp']
	'altr,socfpga-vt' was expected
	'altr,socfpga-arria5' was expected
	'altr,socfpga-arria10' was expected
	'enclustra,mercury-aa1' was expected
	'altr,socfpga-cyclone5' was expected
	'altr,socfpga-stratix10' was expected
	from schema $id: http://devicetree.org/schemas/arm/altera.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: pmu@ff111000: 'reg' does not match any of the regexes: 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/arm/pmu.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: soc: stmmac-axi-config: 'ranges' is a required property
	from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: soc: base_fpga_region: 'ranges' is a required property
	from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: soc: sdramedac: 'ranges' is a required property
	from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: soc: usbphy: 'ranges' is a required property
	from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: amba: $nodename:0: 'amba' does not match '^([a-z][a-z0-9\-]+-bus|bus|localbus|soc|axi|ahb|apb)(@.+)?$'
	from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: pdma@ffe01000: $nodename:0: 'pdma@ffe01000' does not match '^dma-controller(@.*)?$'
	from schema $id: http://devicetree.org/schemas/dma/arm,pl330.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: base_fpga_region: $nodename:0: 'base_fpga_region' does not match '^fpga-region(@.*|-([0-9]|[1-9][0-9]+))?$'
	from schema $id: http://devicetree.org/schemas/fpga/fpga-region.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: clkmgr@ffd04000: 'clocks' does not match any of the regexes: 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/arm/altera/socfpga-clk-manager.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: osc2: 'clock-frequency' is a required property
	from schema $id: http://devicetree.org/schemas/clock/fixed-clock.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: f2s_periph_ref_clk: 'clock-frequency' is a required property
	from schema $id: http://devicetree.org/schemas/clock/fixed-clock.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: f2s_sdram_ref_clk: 'clock-frequency' is a required property
	from schema $id: http://devicetree.org/schemas/clock/fixed-clock.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/main_pll@40: failed to match any schema with compatible: ['altr,socfpga-pll-clock']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/main_pll@40/mpuclk@48: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/main_pll@40/mainclk@4c: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/main_pll@40/dbg_base_clk@50: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/main_pll@40/main_qspi_clk@54: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/main_pll@40/main_nand_sdmmc_clk@58: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/main_pll@40/cfg_h2f_usr0_clk@5c: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/periph_pll@80: failed to match any schema with compatible: ['altr,socfpga-pll-clock']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/periph_pll@80/emac0_clk@88: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/periph_pll@80/emac1_clk@8c: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/periph_pll@80/per_qsi_clk@90: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/periph_pll@80/per_nand_mmc_clk@94: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/periph_pll@80/per_base_clk@98: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/periph_pll@80/h2f_usr1_clk@9c: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/sdram_pll@c0: failed to match any schema with compatible: ['altr,socfpga-pll-clock']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/sdram_pll@c0/ddr_dqs_clk@c8: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/sdram_pll@c0/ddr_2x_dqs_clk@cc: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/sdram_pll@c0/ddr_dq_clk@d0: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/sdram_pll@c0/h2f_usr2_clk@d4: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/mpu_periph_clk: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/mpu_l2_ram_clk: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/l4_main_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/l3_main_clk: failed to match any schema with compatible: ['altr,socfpga-perip-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/l3_mp_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/l3_sp_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/l4_mp_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/l4_sp_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/dbg_at_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/dbg_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/dbg_trace_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/dbg_timer_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/cfg_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/h2f_user0_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/emac_0_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/emac_1_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/usb_mp_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/spi_m_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/can0_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/can1_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/gpio_db_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/h2f_user1_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/sdmmc_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/sdmmc_clk_divided: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/nand_x_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/nand_ecc_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/nand_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/qspi_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/ddr_dqs_clk_gate: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/ddr_2x_dqs_clk_gate: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/ddr_dq_clk_gate: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/clkmgr@ffd04000/clocks/h2f_user2_clk: failed to match any schema with compatible: ['altr,socfpga-gate-clk']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: fpga_bridge@ff400000: $nodename:0: 'fpga_bridge@ff400000' does not match '^fpga-bridge(@.*|-([0-9]|[1-9][0-9]+))?$'
	from schema $id: http://devicetree.org/schemas/fpga/altr,socfpga-hps2fpga-bridge.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: fpga_bridge@ff500000: $nodename:0: 'fpga_bridge@ff500000' does not match '^fpga-bridge(@.*|-([0-9]|[1-9][0-9]+))?$'
	from schema $id: http://devicetree.org/schemas/fpga/altr,socfpga-hps2fpga-bridge.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/fpgamgr@ff706000: failed to match any schema with compatible: ['altr,socfpga-fpga-mgr']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/ethernet@ff700000: failed to match any schema with compatible: ['altr,socfpga-stmmac', 'snps,dwmac-3.70a', 'snps,dwmac']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/ethernet@ff702000: failed to match any schema with compatible: ['altr,socfpga-stmmac', 'snps,dwmac-3.70a', 'snps,dwmac']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/i2c@ffc04000/accelerometer@53: failed to match any schema with compatible: ['adi,adxl34x']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/eccmgr: failed to match any schema with compatible: ['altr,socfpga-ecc-manager']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/eccmgr/l2-ecc@ffd08140: failed to match any schema with compatible: ['altr,socfpga-l2-ecc']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/eccmgr/ocram-ecc@ffd08144: failed to match any schema with compatible: ['altr,socfpga-ocram-ecc']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: sram@ffff0000: '#address-cells' is a required property
	from schema $id: http://devicetree.org/schemas/sram/sram.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: sram@ffff0000: '#size-cells' is a required property
	from schema $id: http://devicetree.org/schemas/sram/sram.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: sram@ffff0000: 'ranges' is a required property
	from schema $id: http://devicetree.org/schemas/sram/sram.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: spi@ff705000: resets: [[6, 37]] is too short
	from schema $id: http://devicetree.org/schemas/spi/cdns,qspi-nor.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: /soc/sdramedac: failed to match any schema with compatible: ['altr,sdram-edac']
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: sysmgr@ffd08000: compatible: 'oneOf' conditional failed, one must be fixed:
	['altr,sys-mgr', 'syscon'] is too long
	'altr,sys-mgr-s10' was expected
	'altr,sys-mgr' was expected
	from schema $id: http://devicetree.org/schemas/soc/altera/altr,sys-mgr.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: timer0@ffc08000: 'reset-names' does not match any of the regexes: 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/timer/snps,dw-apb-timer.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: timer1@ffc09000: 'reset-names' does not match any of the regexes: 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/timer/snps,dw-apb-timer.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: timer2@ffd00000: 'reset-names' does not match any of the regexes: 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/timer/snps,dw-apb-timer.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: timer3@ffd01000: 'reset-names' does not match any of the regexes: 'pinctrl-[0-9]+'
	from schema $id: http://devicetree.org/schemas/timer/snps,dw-apb-timer.yaml#
arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb: axi_h2f_lw_bridge@ff200000: $nodename:0: 'axi_h2f_lw_bridge@ff200000' does not match '^([a-z][a-z0-9\-]+-bus|bus|localbus|soc|axi|ahb|apb)(@.+)?$'
	from schema $id: http://devicetree.org/schemas/simple-bus.yaml#
Uwe Kleine-König Jan. 29, 2025, 2:55 p.m. UTC | #8
Hello,

On Wed, Jan 29, 2025 at 01:34:28PM +0100, Krzysztof Kozlowski wrote:
> On 29/01/2025 13:19, Uwe Kleine-König wrote:
> > On Wed, Jan 29, 2025 at 10:27:22AM +0100, Krzysztof Kozlowski wrote:
> >> On 28/01/2025 18:29, Uwe Kleine-König wrote:
> > I tried
> > 
> > 	dt-validate -m -u Documentation/devicetree/bindings -p ~/work/kbuild/arm/Documentation/devicetree/bindings/processed-schema.json ~/work/kbuild/arm/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dtb
> 
> That's unusual way of running the check, but of course might work.

This is what `make` does when running one of the dt check targets. I
didn't find a way to call this via make for just a single dtb.

> >>> +	soc {
> >>> +		fpga_axi: axi_h2f_lw_bridge@ff200000 {
> >>
> >> Follow DTS coding style. You just sent us something from downstream.
> > 
> > Indeed this is from downstream. Looking at the matching dt-validate
> > output I guess just "axi@ff200000" would be appropriate?!
> 
> bus@

ok.

> >>> +			compatible = "simple-bus";
> >>> +			reg = <0xff200000 0x00200000>;
> >>> +			#address-cells = <1>;
> >>> +			#size-cells = <1>;
> >>
> >> ranges would be after reg, but they are pointless here, no?
> > 
> > I thought it's "compatible", "reg" at the start, "status" at the end and
> > the rest in-between in alphabetic order. What is the right ordering?
> 
> DTS coding style could be clearer here. It exactly says what is the
> first, what is the second and what is the third.

I found Documentation/devicetree/bindings/dts-coding-style.rst now.

> >> Where is the child?
> > 
> > I intend to add children using dt-overlays. I have a prototype here, but
> > that's still to embarrassing to show.
> 
> The entire bus is in such case a bit confusing. If you have nothing
> connected here in the base board, does it really exist in FPGA bitstream?

I'm unsure. If I don't load an FPGA image, the machine boots fine but
IIRC accessing the address space results in an error. If I load an FPGA
image, its register space appears at that address. So technically it
might be ok to drop the node, but from a practical POV it's useful to
have it in the board.dtb to not have to create that note in each
overlay.

If that is good enough for you, I'll go with a comment in that node that
tells about the expectation that it will be filled using an overlay.

Best regards
Uwe
diff mbox series

Patch

diff --git a/arch/arm/boot/dts/intel/socfpga/Makefile b/arch/arm/boot/dts/intel/socfpga/Makefile
index c467828aeb4b..7f69a0355ea5 100644
--- a/arch/arm/boot/dts/intel/socfpga/Makefile
+++ b/arch/arm/boot/dts/intel/socfpga/Makefile
@@ -10,6 +10,7 @@  dtb-$(CONFIG_ARCH_INTEL_SOCFPGA) += \
 	socfpga_cyclone5_mcvevk.dtb \
 	socfpga_cyclone5_socdk.dtb \
 	socfpga_cyclone5_de0_nano_soc.dtb \
+	socfpga_cyclone5_de10nano.dtb \
 	socfpga_cyclone5_sockit.dtb \
 	socfpga_cyclone5_socrates.dtb \
 	socfpga_cyclone5_sodia.dtb \
diff --git a/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts
new file mode 100644
index 000000000000..d1f23a57a94d
--- /dev/null
+++ b/arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de10nano.dts
@@ -0,0 +1,90 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2017, Intel Corporation
+ *
+ * based on socfpga_cyclone5_de0_nano_soc.dts
+ */
+/dts-v1/;
+
+#include "socfpga_cyclone5.dtsi"
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	model = "Terasic DE10-Nano";
+	compatible = "altr,socfpga-cyclone5", "altr,socfpga";
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	memory@0 {
+		/* 1 GiB */
+		device_type = "memory";
+		reg = <0x0 0x40000000>;
+	};
+
+	soc {
+		fpga_axi: axi_h2f_lw_bridge@ff200000 {
+			compatible = "simple-bus";
+			reg = <0xff200000 0x00200000>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0xff200000 0x00200000>;
+		};
+	};
+};
+
+&gmac1 {
+	/* Uses a KSZ9031RNX phy */
+	status = "okay";
+	phy-mode = "rgmii";
+
+	rxd0-skew-ps = <420>;
+	rxd1-skew-ps = <420>;
+	rxd2-skew-ps = <420>;
+	rxd3-skew-ps = <420>;
+	txen-skew-ps = <0>;
+	txc-skew-ps = <1860>;
+	rxdv-skew-ps = <420>;
+	rxc-skew-ps = <1680>;
+};
+
+&gpio0 {
+	status = "okay";
+};
+
+&gpio1 {
+	status = "okay";
+};
+
+&gpio2 {
+	status = "okay";
+};
+
+&i2c0 {
+	clock-frequency = <100000>;
+	status = "okay";
+
+	accelerometer@53 {
+		compatible = "adi,adxl34x";
+		reg = <0x53>;
+		/* HPS_GSENSOR_INT is routed to UART0_RX/CAN0_RX/SPIM0_SS1/HPS_GPIO61 */
+		interrupt-parent = <&portc>;
+		interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+	};
+};
+
+&mmc0 {
+	/* micro SD card socket J11 */
+	status = "okay";
+};
+
+&uart0 {
+	/*
+	 * Accessible via USB (FT232R) on Mini-USB plug J4
+	 * RX = TRACE_D0/SPIS0_CLK/UART0_RX/HPS_GPIO49
+	 * TX = TRACE_D1/SPIS0_MOSI/UART0_TX/HPS_GPIO50
+	 */
+	clock-frequency = <100000000>;
+};