diff mbox

[1/1] ARM: dts: zynq: Add Parallella device tree

Message ID 1404075022-28745-2-git-send-email-afaerber@suse.de
State New
Headers show

Commit Message

Andreas Färber June 29, 2014, 8:50 p.m. UTC
This allows to boot the Adapteva Parallella board to serial console.

Cc: Andreas Olofsson <andreas@adapteva.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 arch/arm/boot/dts/Makefile            |  4 ++-
 arch/arm/boot/dts/zynq-parallella.dts | 63 +++++++++++++++++++++++++++++++++++
 2 files changed, 66 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/boot/dts/zynq-parallella.dts

Comments

Olof Johansson June 30, 2014, 5:15 a.m. UTC | #1
Hi,

On Sun, Jun 29, 2014 at 1:50 PM, Andreas Färber <afaerber@suse.de> wrote:
> This allows to boot the Adapteva Parallella board to serial console.
>
> Cc: Andreas Olofsson <andreas@adapteva.com>
> Signed-off-by: Andreas Färber <afaerber@suse.de>

Nice and clean DTS, just a couple of comments below.

> diff --git a/arch/arm/boot/dts/zynq-parallella.dts b/arch/arm/boot/dts/zynq-parallella.dts
> new file mode 100644
> index 0000000..98df66c
> --- /dev/null
> +++ b/arch/arm/boot/dts/zynq-parallella.dts
> @@ -0,0 +1,63 @@
> +/*
> + * Copyright (c) 2014 SUSE LINUX Products GmbH
> + *
> + * Derived from zynq-zed.dts:
> + *
> + *  Copyright (C) 2011 Xilinx
> + *  Copyright (C) 2012 National Instruments Corp.
> + *  Copyright (C) 2013 Xilinx
> + *
> + * This software is licensed under the terms of the GNU General Public
> + * License version 2, as published by the Free Software Foundation, and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +/dts-v1/;
> +/include/ "zynq-7000.dtsi"
> +
> +/ {
> +       model = "Parallella Board";
> +       compatible = "xlnx,zynq-7000";

This should have a more specific compatible as the first one. Probably
something like:
   compatible = "adapteva,parallella", "xlnx,zynq-7000";

> +
> +       memory {
> +               device_type = "memory";
> +               reg = <0 0x20000000>;

Does the bootloader update this entry, or is it truly static? If it's
updated then it's become recent habit to leave the memory size empty
in the static file.

> +       };
> +
> +       chosen {
> +               bootargs = "console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait";
> +       };
> +};

A bit more torn on this one, I'm OK with it staying in even if
firmware overrides for all practical purposes since it's good to keep
around for reference w.r.t. console. Note that we're starting to move
over to using /chosen/stdout-path, so you might want to add that now
instead of later.


-Olof
Andreas Färber June 30, 2014, 1:24 p.m. UTC | #2
Hi,

+Matteo

Am 30.06.2014 07:15, schrieb Olof Johansson:
> On Sun, Jun 29, 2014 at 1:50 PM, Andreas Färber <afaerber@suse.de> wrote:
>> This allows to boot the Adapteva Parallella board to serial console.
>>
>> Cc: Andreas Olofsson <andreas@adapteva.com>
>> Signed-off-by: Andreas Färber <afaerber@suse.de>
> 
> Nice and clean DTS, just a couple of comments below.
> 
>> diff --git a/arch/arm/boot/dts/zynq-parallella.dts b/arch/arm/boot/dts/zynq-parallella.dts
>> new file mode 100644
>> index 0000000..98df66c
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/zynq-parallella.dts
>> @@ -0,0 +1,63 @@
>> +/*
>> + * Copyright (c) 2014 SUSE LINUX Products GmbH
>> + *
>> + * Derived from zynq-zed.dts:
>> + *
>> + *  Copyright (C) 2011 Xilinx
>> + *  Copyright (C) 2012 National Instruments Corp.
>> + *  Copyright (C) 2013 Xilinx
>> + *
>> + * This software is licensed under the terms of the GNU General Public
>> + * License version 2, as published by the Free Software Foundation, and
>> + * may be copied, distributed, and modified under those terms.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + */
>> +/dts-v1/;
>> +/include/ "zynq-7000.dtsi"
>> +
>> +/ {
>> +       model = "Parallella Board";
>> +       compatible = "xlnx,zynq-7000";
> 
> This should have a more specific compatible as the first one. Probably
> something like:
>    compatible = "adapteva,parallella", "xlnx,zynq-7000";

Sure, I can add one if desired. As indicated in the file header, I used
zynq-zed.dts as template, which doesn't have its own either:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/zynq-zed.dts

Andreas, can I assume you would be okay with me assigning Adapteva, Inc.
the suggested "adapteva" prefix in the below list?

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/vendor-prefixes.txt

I guess it'll come in handy if we ever document the Epiphany
coprocessor's registers. The physical chip on the board is connected via
some FPGA glue - would that be placed like this?

/ {
	amba {
		epiphany: epiphany@80000000 {
			compatible = "adapteva,epiphany-iii";
			reg = <0x80000000 0x40000000>;
		};
	};
};

It's accessed through /dev/epiphany in a userspace library below,

https://github.com/adapteva/epiphany-libs/blob/master/src/e-hal/src/epiphany-hal.c#L215

https://github.com/adapteva/epiphany-libs/commit/80364e8ee4e99e450a632885a62e7a501398c200

but it's not clear to me who is supposed to create that device. No
downstream kernel driver nor corresponding node in the device tree:

https://github.com/parallella/parallella-linux-adi/blob/d04c39251dc3153b60555642b502dde15f7156a6/arch/arm/boot/dts/zynq-parallella.dts

Ben? Andreas?

Anyway, given that vf610.dtsi only documents the Cortex-A5 core but not
its Cortex-M4 companion core, I'm assuming we should not add the 16 (or
64) Epiphany cores to /cpus node (which would then require to split this
file into zynq-parallella.dtsi and zynq-parallella-{e16,e64}.dts).

>> +
>> +       memory {
>> +               device_type = "memory";
>> +               reg = <0 0x20000000>;

Err, this should be <0 0x40000000> (1 GiB). Copied from zynq-zed.dts,
and downstream has the wrong value, too.

> Does the bootloader update this entry, or is it truly static? If it's
> updated then it's become recent habit to leave the memory size empty
> in the static file.

The board uses a downstream U-Boot, displaying 992 MiB on serial.

andreas@parallella:/proc/device-tree/memory> hexdump -C reg
00000000  00 00 00 00 3e 00 00 00                           |....>...|
00000008

That matches 992 * 1024 * 1024. Shall I change to <0 0> then?

Confusing though is that the Epiphany manual says memory at <0x1e000000
0x02000000> is reserved for use by the Epiphany:

http://adapteva.com/docs/epiphany_sdk_ref.pdf section 14.1 page 118

I believe that is rather 0x3e000000, which U-Boot seems to confirm:

https://github.com/parallella/parallella-uboot/blob/3f4794e9ac524be6a373e6ff39ee9ae4529e0f14/include/configs/parallella.h#L25

>> +       };
>> +
>> +       chosen {
>> +               bootargs = "console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait";
>> +       };
>> +};
> 
> A bit more torn on this one, I'm OK with it staying in even if
> firmware overrides for all practical purposes since it's good to keep
> around for reference w.r.t. console. Note that we're starting to move
> over to using /chosen/stdout-path, so you might want to add that now
> instead of later.

The board boots U-Boot from flash; U-Boot is configured with no
bootdelay, and users are instructed to deploy one of two provided
devicetree.dtb files, depending on whether they want to run headless
(console=ttyPS0,115200) or with HDMI-enabling FPGA bitstream (no
console=). No bootargs variable is set in U-Boot environment.

U-Boot loads uImage, device tree and bitstream from FAT p1, and device
trees currently hardcode an ext4 p2, so I intentionally left that in
here, for unmodified .dtb deployment for shipping bootloader.

I'll look into /chosen/stdout-path, thanks for the pointer.

Regards,
Andreas
Michal Simek July 8, 2014, 11:18 a.m. UTC | #3
On 06/30/2014 07:15 AM, Olof Johansson wrote:
> Hi,
> 
> On Sun, Jun 29, 2014 at 1:50 PM, Andreas Färber <afaerber@suse.de> wrote:
>> This allows to boot the Adapteva Parallella board to serial console.
>>
>> Cc: Andreas Olofsson <andreas@adapteva.com>
>> Signed-off-by: Andreas Färber <afaerber@suse.de>
> 
> Nice and clean DTS, just a couple of comments below.
> 
>> diff --git a/arch/arm/boot/dts/zynq-parallella.dts b/arch/arm/boot/dts/zynq-parallella.dts
>> new file mode 100644
>> index 0000000..98df66c
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/zynq-parallella.dts
>> @@ -0,0 +1,63 @@
>> +/*
>> + * Copyright (c) 2014 SUSE LINUX Products GmbH
>> + *
>> + * Derived from zynq-zed.dts:
>> + *
>> + *  Copyright (C) 2011 Xilinx
>> + *  Copyright (C) 2012 National Instruments Corp.
>> + *  Copyright (C) 2013 Xilinx
>> + *
>> + * This software is licensed under the terms of the GNU General Public
>> + * License version 2, as published by the Free Software Foundation, and
>> + * may be copied, distributed, and modified under those terms.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + */
>> +/dts-v1/;
>> +/include/ "zynq-7000.dtsi"
>> +
>> +/ {
>> +       model = "Parallella Board";
>> +       compatible = "xlnx,zynq-7000";
> 
> This should have a more specific compatible as the first one. Probably
> something like:
>    compatible = "adapteva,parallella", "xlnx,zynq-7000";

We were using these compatible properties but later there is no reason
to create them because they will be unused.
It is easy to add it when you need it which is not this case.

> 
>> +
>> +       memory {
>> +               device_type = "memory";
>> +               reg = <0 0x20000000>;
> 
> Does the bootloader update this entry, or is it truly static? If it's
> updated then it's become recent habit to leave the memory size empty
> in the static file.

Depends on your bootloader. I think it is good to have it here.
Also this file can be used by u-boot for example and u-boot can be configured
from it that's why I think that make sense to keep this here.


>> +       };
>> +
>> +       chosen {
>> +               bootargs = "console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait";
>> +       };
>> +};
> 
> A bit more torn on this one, I'm OK with it staying in even if
> firmware overrides for all practical purposes since it's good to keep
> around for reference w.r.t. console. Note that we're starting to move
> over to using /chosen/stdout-path, so you might want to add that now
> instead of later.

No problem from me too.

Thanks,
Michal
Olof Johansson July 14, 2014, 6:12 p.m. UTC | #4
On Tue, Jul 8, 2014 at 4:18 AM, Michal Simek <michal.simek@xilinx.com> wrote:
> On 06/30/2014 07:15 AM, Olof Johansson wrote:
>> Hi,
>>
>> On Sun, Jun 29, 2014 at 1:50 PM, Andreas Färber <afaerber@suse.de> wrote:
>>> This allows to boot the Adapteva Parallella board to serial console.
>>>
>>> Cc: Andreas Olofsson <andreas@adapteva.com>
>>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>>
>> Nice and clean DTS, just a couple of comments below.
>>
>>> diff --git a/arch/arm/boot/dts/zynq-parallella.dts b/arch/arm/boot/dts/zynq-parallella.dts
>>> new file mode 100644
>>> index 0000000..98df66c
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/zynq-parallella.dts
>>> @@ -0,0 +1,63 @@
>>> +/*
>>> + * Copyright (c) 2014 SUSE LINUX Products GmbH
>>> + *
>>> + * Derived from zynq-zed.dts:
>>> + *
>>> + *  Copyright (C) 2011 Xilinx
>>> + *  Copyright (C) 2012 National Instruments Corp.
>>> + *  Copyright (C) 2013 Xilinx
>>> + *
>>> + * This software is licensed under the terms of the GNU General Public
>>> + * License version 2, as published by the Free Software Foundation, and
>>> + * may be copied, distributed, and modified under those terms.
>>> + *
>>> + * This program is distributed in the hope that it will be useful,
>>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>> + * GNU General Public License for more details.
>>> + */
>>> +/dts-v1/;
>>> +/include/ "zynq-7000.dtsi"
>>> +
>>> +/ {
>>> +       model = "Parallella Board";

You might want to have this say "Adapteva Parallella Board" instead
(just noticed).

>>> +       compatible = "xlnx,zynq-7000";
>>
>> This should have a more specific compatible as the first one. Probably
>> something like:
>>    compatible = "adapteva,parallella", "xlnx,zynq-7000";
>
> We were using these compatible properties but later there is no reason
> to create them because they will be unused.
> It is easy to add it when you need it which is not this case.

No, please add it from day one, otherwise everybody needs to update
their device tree, some will miss doing it, etc, etc. It's a simple
and trivial thing to do, and no reason to leave it o ut.

>>> +
>>> +       memory {
>>> +               device_type = "memory";
>>> +               reg = <0 0x20000000>;
>>
>> Does the bootloader update this entry, or is it truly static? If it's
>> updated then it's become recent habit to leave the memory size empty
>> in the static file.
>
> Depends on your bootloader. I think it is good to have it here.
> Also this file can be used by u-boot for example and u-boot can be configured
> from it that's why I think that make sense to keep this here.

Ok. It's become commonplace to leave memory empty for the machines
where it's guaranteed that the bootloader will have updated it, to
avoid having stale or incorrect values in the static tree. I'm not
going to be strict about it, but it's something to consider.


-Olof
Andreas Färber July 14, 2014, 6:23 p.m. UTC | #5
Am 14.07.2014 20:12, schrieb Olof Johansson:
> On Tue, Jul 8, 2014 at 4:18 AM, Michal Simek <michal.simek@xilinx.com> wrote:
>> On 06/30/2014 07:15 AM, Olof Johansson wrote:
>>> Hi,
>>>
>>> On Sun, Jun 29, 2014 at 1:50 PM, Andreas Färber <afaerber@suse.de> wrote:
>>>> This allows to boot the Adapteva Parallella board to serial console.
>>>>
>>>> Cc: Andreas Olofsson <andreas@adapteva.com>
>>>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>>>
>>> Nice and clean DTS, just a couple of comments below.
>>>
>>>> diff --git a/arch/arm/boot/dts/zynq-parallella.dts b/arch/arm/boot/dts/zynq-parallella.dts
>>>> new file mode 100644
>>>> index 0000000..98df66c
>>>> --- /dev/null
>>>> +++ b/arch/arm/boot/dts/zynq-parallella.dts
>>>> @@ -0,0 +1,63 @@
>>>> +/*
>>>> + * Copyright (c) 2014 SUSE LINUX Products GmbH
>>>> + *
>>>> + * Derived from zynq-zed.dts:
>>>> + *
>>>> + *  Copyright (C) 2011 Xilinx
>>>> + *  Copyright (C) 2012 National Instruments Corp.
>>>> + *  Copyright (C) 2013 Xilinx
>>>> + *
>>>> + * This software is licensed under the terms of the GNU General Public
>>>> + * License version 2, as published by the Free Software Foundation, and
>>>> + * may be copied, distributed, and modified under those terms.
>>>> + *
>>>> + * This program is distributed in the hope that it will be useful,
>>>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>>> + * GNU General Public License for more details.
>>>> + */
>>>> +/dts-v1/;
>>>> +/include/ "zynq-7000.dtsi"
>>>> +
>>>> +/ {
>>>> +       model = "Parallella Board";
> 
> You might want to have this say "Adapteva Parallella Board" instead
> (just noticed).
> 
>>>> +       compatible = "xlnx,zynq-7000";
>>>
>>> This should have a more specific compatible as the first one. Probably
>>> something like:
>>>    compatible = "adapteva,parallella", "xlnx,zynq-7000";
>>
>> We were using these compatible properties but later there is no reason
>> to create them because they will be unused.
>> It is easy to add it when you need it which is not this case.
> 
> No, please add it from day one, otherwise everybody needs to update
> their device tree, some will miss doing it, etc, etc. It's a simple
> and trivial thing to do, and no reason to leave it o ut.

OK, I have that prepared already, including the appropriate documentation.

>>>> +
>>>> +       memory {
>>>> +               device_type = "memory";
>>>> +               reg = <0 0x20000000>;
>>>
>>> Does the bootloader update this entry, or is it truly static? If it's
>>> updated then it's become recent habit to leave the memory size empty
>>> in the static file.
>>
>> Depends on your bootloader. I think it is good to have it here.
>> Also this file can be used by u-boot for example and u-boot can be configured
>> from it that's why I think that make sense to keep this here.
> 
> Ok. It's become commonplace to leave memory empty for the machines
> where it's guaranteed that the bootloader will have updated it, to
> avoid having stale or incorrect values in the static tree. I'm not
> going to be strict about it, but it's something to consider.

Will update then, thanks.

Andreas
Michal Simek July 15, 2014, 10:53 a.m. UTC | #6
On 07/14/2014 08:12 PM, Olof Johansson wrote:
> On Tue, Jul 8, 2014 at 4:18 AM, Michal Simek <michal.simek@xilinx.com> wrote:
>> On 06/30/2014 07:15 AM, Olof Johansson wrote:
>>> Hi,
>>>
>>> On Sun, Jun 29, 2014 at 1:50 PM, Andreas Färber <afaerber@suse.de> wrote:
>>>> This allows to boot the Adapteva Parallella board to serial console.
>>>>
>>>> Cc: Andreas Olofsson <andreas@adapteva.com>
>>>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>>>
>>> Nice and clean DTS, just a couple of comments below.
>>>
>>>> diff --git a/arch/arm/boot/dts/zynq-parallella.dts b/arch/arm/boot/dts/zynq-parallella.dts
>>>> new file mode 100644
>>>> index 0000000..98df66c
>>>> --- /dev/null
>>>> +++ b/arch/arm/boot/dts/zynq-parallella.dts
>>>> @@ -0,0 +1,63 @@
>>>> +/*
>>>> + * Copyright (c) 2014 SUSE LINUX Products GmbH
>>>> + *
>>>> + * Derived from zynq-zed.dts:
>>>> + *
>>>> + *  Copyright (C) 2011 Xilinx
>>>> + *  Copyright (C) 2012 National Instruments Corp.
>>>> + *  Copyright (C) 2013 Xilinx
>>>> + *
>>>> + * This software is licensed under the terms of the GNU General Public
>>>> + * License version 2, as published by the Free Software Foundation, and
>>>> + * may be copied, distributed, and modified under those terms.
>>>> + *
>>>> + * This program is distributed in the hope that it will be useful,
>>>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>>>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>>> + * GNU General Public License for more details.
>>>> + */
>>>> +/dts-v1/;
>>>> +/include/ "zynq-7000.dtsi"
>>>> +
>>>> +/ {
>>>> +       model = "Parallella Board";
> 
> You might want to have this say "Adapteva Parallella Board" instead
> (just noticed).
> 
>>>> +       compatible = "xlnx,zynq-7000";
>>>
>>> This should have a more specific compatible as the first one. Probably
>>> something like:
>>>    compatible = "adapteva,parallella", "xlnx,zynq-7000";
>>
>> We were using these compatible properties but later there is no reason
>> to create them because they will be unused.
>> It is easy to add it when you need it which is not this case.
> 
> No, please add it from day one, otherwise everybody needs to update
> their device tree, some will miss doing it, etc, etc. It's a simple
> and trivial thing to do, and no reason to leave it o ut.

It is trivial. None will just probably use it and upgrading DTS is simple
but I don't really care.


>>>> +
>>>> +       memory {
>>>> +               device_type = "memory";
>>>> +               reg = <0 0x20000000>;
>>>
>>> Does the bootloader update this entry, or is it truly static? If it's
>>> updated then it's become recent habit to leave the memory size empty
>>> in the static file.
>>
>> Depends on your bootloader. I think it is good to have it here.
>> Also this file can be used by u-boot for example and u-boot can be configured
>> from it that's why I think that make sense to keep this here.
> 
> Ok. It's become commonplace to leave memory empty for the machines
> where it's guaranteed that the bootloader will have updated it, to
> avoid having stale or incorrect values in the static tree. I'm not
> going to be strict about it, but it's something to consider.

I personally don't like this bootloader feature and IRC it is disabled
for xilinx u-boot too.

Thanks,
Michal
diff mbox

Patch

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 5986ff6..2a536f6 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -419,7 +419,9 @@  dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07.dtb \
 	wm8650-mid.dtb \
 	wm8750-apc8750.dtb \
 	wm8850-w70v2.dtb
-dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb \
+dtb-$(CONFIG_ARCH_ZYNQ) += \
+	zynq-parallella.dtb \
+	zynq-zc702.dtb \
 	zynq-zc706.dtb \
 	zynq-zed.dtb
 dtb-$(CONFIG_MACH_ARMADA_370) += \
diff --git a/arch/arm/boot/dts/zynq-parallella.dts b/arch/arm/boot/dts/zynq-parallella.dts
new file mode 100644
index 0000000..98df66c
--- /dev/null
+++ b/arch/arm/boot/dts/zynq-parallella.dts
@@ -0,0 +1,63 @@ 
+/*
+ * Copyright (c) 2014 SUSE LINUX Products GmbH
+ *
+ * Derived from zynq-zed.dts:
+ *
+ *  Copyright (C) 2011 Xilinx
+ *  Copyright (C) 2012 National Instruments Corp.
+ *  Copyright (C) 2013 Xilinx
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+/dts-v1/;
+/include/ "zynq-7000.dtsi"
+
+/ {
+	model = "Parallella Board";
+	compatible = "xlnx,zynq-7000";
+
+	memory {
+		device_type = "memory";
+		reg = <0 0x20000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait";
+	};
+};
+
+&gem0 {
+	status = "okay";
+	phy-mode = "rgmii-id";
+	phy-handle = <&ethernet_phy>;
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	ethernet_phy: ethernet-phy@0 {
+		/* Marvell 88E1318 */
+		compatible = "ethernet-phy-id0141.0e90",
+		             "ethernet-phy-ieee802.3-c22";
+		reg = <0>;
+		marvell,reg-init = <0x3 0x10 0xff00 0x1e>,
+		                   <0x3 0x11 0xfff0 0xa>;
+	};
+};
+
+&i2c0 {
+	status = "okay";
+};
+
+&sdhci1 {
+	status = "okay";
+};
+
+&uart1 {
+	status = "okay";
+};