diff mbox series

[1/8] arm: kirkwood: Pogoplug-V4 : Add DTS files

Message ID 20211218042335.5865-2-mibodhi@gmail.com
State Changes Requested
Delegated to: Stefan Roese
Headers show
Series arm: kirkwood: Add support for Pogoplug V4 | expand

Commit Message

Tony Dinh Dec. 18, 2021, 4:23 a.m. UTC
Add DTS files for Pogoplug V4 board

Signed-off-by: Tony Dinh <mibodhi@gmail.com>
---

 arch/arm/dts/Makefile                 |   1 +
 arch/arm/dts/kirkwood-pogoplug_v4.dts | 145 ++++++++++++++++++++++++++
 2 files changed, 146 insertions(+)
 create mode 100644 arch/arm/dts/kirkwood-pogoplug_v4.dts

Comments

Andre Przywara Dec. 18, 2021, 4:38 p.m. UTC | #1
On Fri, 17 Dec 2021 20:23:27 -0800
Tony Dinh <mibodhi@gmail.com> wrote:

Hi,

> Add DTS files for Pogoplug V4 board

is there any reason you didn't take the kirkwood-pogoplug-series-4.dts
file from the Linux tree? That is the same device, isn't it?

Tom will ask you about the upstream status anyway...

Cheers,
Andre

> 
> Signed-off-by: Tony Dinh <mibodhi@gmail.com>
> ---
> 
>  arch/arm/dts/Makefile                 |   1 +
>  arch/arm/dts/kirkwood-pogoplug_v4.dts | 145 ++++++++++++++++++++++++++
>  2 files changed, 146 insertions(+)
>  create mode 100644 arch/arm/dts/kirkwood-pogoplug_v4.dts
> 
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 7f622fedbd..716c6c0ed2 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -68,6 +68,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += \
>  	kirkwood-openrd-client.dtb \
>  	kirkwood-openrd-ultimate.dtb \
>  	kirkwood-pogo_e02.dtb \
> +	kirkwood-pogoplug_v4.dtb \
>  	kirkwood-sheevaplug.dtb
>  
>  dtb-$(CONFIG_MACH_S900) += \
> diff --git a/arch/arm/dts/kirkwood-pogoplug_v4.dts b/arch/arm/dts/kirkwood-pogoplug_v4.dts
> new file mode 100644
> index 0000000000..b4754f600e
> --- /dev/null
> +++ b/arch/arm/dts/kirkwood-pogoplug_v4.dts
> @@ -0,0 +1,145 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2014-2021 Tony Dinh <mibodhi@gmail.com>
> + *
> + * Device tree file for the Pogoplug V4/Mobile
> + *
> + */
> +
> +/dts-v1/;
> +
> +#include "kirkwood.dtsi"
> +#include "kirkwood-6192.dtsi"
> +
> +/ {
> +	model = "Pogoplug v4";
> +	compatible = "cloudengines,pogoplug-v4", "cloudengines,pogoplug-mobile",
> +		"marvell,kirkwood-88f6192", "marvell,kirkwood";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x00000000 0x8000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS0,115200";
> +		stdout-path = &uart0;
> +	};
> +
> +	ocp@f1000000 {
> +		pinctrl: pin-controller@10000 {
> +			pmx_led_green: pmx-led-green {
> +				marvell,pins = "mpp22";
> +				marvell,function = "gpio";
> +			};
> +			pmx_led_red: pmx-led-red {
> +				marvell,pins = "mpp24";
> +				marvell,function = "gpio";
> +			};
> +			pmx_button_eject: pmx-button-eject {
> +				marvell,pins = "mpp29";
> +				marvell,function = "gpio";
> +			};
> +		};
> +
> +		serial@12000 {
> +			status = "ok";
> +		};
> +
> +		sata@80000 {
> +			status = "okay";
> +			nr-ports = <2>;
> +		};
> +
> +		mvsdio@90000 {
> +			pinctrl-0 = <&pmx_sdio>;
> +			pinctrl-names = "default";
> +			status = "okay";
> +			cd-gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
> +			/* No WP GPIO */
> +		};
> +	};
> +
> +	gpio-leds {
> +		compatible = "gpio-leds";
> +		pinctrl-0 = <&pmx_led_red &pmx_led_green>;
> +		pinctrl-names = "default";
> +
> +		health {
> +			label = "status:green:health";
> +			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
> +			default-state = "keep";
> +		};
> +		fault {
> +			label = "status:red:fault";
> +			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +
> +	gpio_keys {
> +		compatible = "gpio-keys";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-0 = <&pmx_button_eject>;
> +		pinctrl-names = "default";
> +
> +		button@1 {
> +			label = "Eject Button";
> +			linux,code = <KEY_EJECTCD>;
> +			gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +
> +};
> +
> +&nand {
> +	status = "okay";
> +
> +	partition@0 {
> +		label = "u-boot";
> +		reg = <0x0000000 0x200000>;
> +	};
> +
> +	partition@200000 {
> +		label = "uImage";
> +		reg = <0x200000 0x300000>;
> +	};
> +
> +	partition@500000 {
> +		label = "uImage2";
> +		reg = <0x500000 0x300000>;
> +	};
> +
> +	partition@800000 {
> +		label = "failsafe";
> +		reg = <0x800000 0x800000>;
> +	};
> +
> +	partition@1000000 {
> +		label = "root";
> +		reg = <0x1000000 0x7000000>;
> +	};
> +};
> +
> +&mdio {
> +	status = "okay";
> +
> +	ethphy0: ethernet-phy@0 {
> +		reg = <0>;
> +	};
> +};
> +
> +&eth0 {
> +	status = "okay";
> +	ethernet0-port@0 {
> +		phy-handle = <&ethphy0>;
> +	};
> +};
> +
> +&pciec {
> +	status = "okay";
> +};
> +
> +&pcie0 {
> +	status = "okay";
> +};
Tony Dinh Dec. 18, 2021, 10:05 p.m. UTC | #2
HI Andre,

On Sat, Dec 18, 2021 at 8:38 AM Andre Przywara <andre.przywara@arm.com> wrote:
>
> On Fri, 17 Dec 2021 20:23:27 -0800
> Tony Dinh <mibodhi@gmail.com> wrote:
>
> Hi,
>
> > Add DTS files for Pogoplug V4 board
>
> is there any reason you didn't take the kirkwood-pogoplug-series-4.dts
> file from the Linux tree? That is the same device, isn't it?
>
> Tom will ask you about the upstream status anyway...

There were some differences that I dislike about the Linux tree
version. Such as the NAND mtd0 is read-only, but we store the envs in
mtd0 (a few blocks after the u-boot image). It seems we both created
this DTS about the same time back then in early 2010's using the same
source as a base. Both versions are identical in substance, but the
node placements are different.

I'm not familiar with the thinking here. If we take the Linux upstream
version, are we allowed to modify it? please advise.

Thanks,
Tony

> Cheers,
> Andre
>
> >
> > Signed-off-by: Tony Dinh <mibodhi@gmail.com>
> > ---
> >
> >  arch/arm/dts/Makefile                 |   1 +
> >  arch/arm/dts/kirkwood-pogoplug_v4.dts | 145 ++++++++++++++++++++++++++
> >  2 files changed, 146 insertions(+)
> >  create mode 100644 arch/arm/dts/kirkwood-pogoplug_v4.dts
> >
> > diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> > index 7f622fedbd..716c6c0ed2 100644
> > --- a/arch/arm/dts/Makefile
> > +++ b/arch/arm/dts/Makefile
> > @@ -68,6 +68,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += \
> >       kirkwood-openrd-client.dtb \
> >       kirkwood-openrd-ultimate.dtb \
> >       kirkwood-pogo_e02.dtb \
> > +     kirkwood-pogoplug_v4.dtb \
> >       kirkwood-sheevaplug.dtb
> >
> >  dtb-$(CONFIG_MACH_S900) += \
> > diff --git a/arch/arm/dts/kirkwood-pogoplug_v4.dts b/arch/arm/dts/kirkwood-pogoplug_v4.dts
> > new file mode 100644
> > index 0000000000..b4754f600e
> > --- /dev/null
> > +++ b/arch/arm/dts/kirkwood-pogoplug_v4.dts
> > @@ -0,0 +1,145 @@
> > +// SPDX-License-Identifier: GPL-2.0+
> > +/*
> > + * Copyright (C) 2014-2021 Tony Dinh <mibodhi@gmail.com>
> > + *
> > + * Device tree file for the Pogoplug V4/Mobile
> > + *
> > + */
> > +
> > +/dts-v1/;
> > +
> > +#include "kirkwood.dtsi"
> > +#include "kirkwood-6192.dtsi"
> > +
> > +/ {
> > +     model = "Pogoplug v4";
> > +     compatible = "cloudengines,pogoplug-v4", "cloudengines,pogoplug-mobile",
> > +             "marvell,kirkwood-88f6192", "marvell,kirkwood";
> > +
> > +     memory {
> > +             device_type = "memory";
> > +             reg = <0x00000000 0x8000000>;
> > +     };
> > +
> > +     chosen {
> > +             bootargs = "console=ttyS0,115200";
> > +             stdout-path = &uart0;
> > +     };
> > +
> > +     ocp@f1000000 {
> > +             pinctrl: pin-controller@10000 {
> > +                     pmx_led_green: pmx-led-green {
> > +                             marvell,pins = "mpp22";
> > +                             marvell,function = "gpio";
> > +                     };
> > +                     pmx_led_red: pmx-led-red {
> > +                             marvell,pins = "mpp24";
> > +                             marvell,function = "gpio";
> > +                     };
> > +                     pmx_button_eject: pmx-button-eject {
> > +                             marvell,pins = "mpp29";
> > +                             marvell,function = "gpio";
> > +                     };
> > +             };
> > +
> > +             serial@12000 {
> > +                     status = "ok";
> > +             };
> > +
> > +             sata@80000 {
> > +                     status = "okay";
> > +                     nr-ports = <2>;
> > +             };
> > +
> > +             mvsdio@90000 {
> > +                     pinctrl-0 = <&pmx_sdio>;
> > +                     pinctrl-names = "default";
> > +                     status = "okay";
> > +                     cd-gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
> > +                     /* No WP GPIO */
> > +             };
> > +     };
> > +
> > +     gpio-leds {
> > +             compatible = "gpio-leds";
> > +             pinctrl-0 = <&pmx_led_red &pmx_led_green>;
> > +             pinctrl-names = "default";
> > +
> > +             health {
> > +                     label = "status:green:health";
> > +                     gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
> > +                     default-state = "keep";
> > +             };
> > +             fault {
> > +                     label = "status:red:fault";
> > +                     gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
> > +             };
> > +     };
> > +
> > +     gpio_keys {
> > +             compatible = "gpio-keys";
> > +             #address-cells = <1>;
> > +             #size-cells = <0>;
> > +             pinctrl-0 = <&pmx_button_eject>;
> > +             pinctrl-names = "default";
> > +
> > +             button@1 {
> > +                     label = "Eject Button";
> > +                     linux,code = <KEY_EJECTCD>;
> > +                     gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
> > +             };
> > +     };
> > +
> > +};
> > +
> > +&nand {
> > +     status = "okay";
> > +
> > +     partition@0 {
> > +             label = "u-boot";
> > +             reg = <0x0000000 0x200000>;
> > +     };
> > +
> > +     partition@200000 {
> > +             label = "uImage";
> > +             reg = <0x200000 0x300000>;
> > +     };
> > +
> > +     partition@500000 {
> > +             label = "uImage2";
> > +             reg = <0x500000 0x300000>;
> > +     };
> > +
> > +     partition@800000 {
> > +             label = "failsafe";
> > +             reg = <0x800000 0x800000>;
> > +     };
> > +
> > +     partition@1000000 {
> > +             label = "root";
> > +             reg = <0x1000000 0x7000000>;
> > +     };
> > +};
> > +
> > +&mdio {
> > +     status = "okay";
> > +
> > +     ethphy0: ethernet-phy@0 {
> > +             reg = <0>;
> > +     };
> > +};
> > +
> > +&eth0 {
> > +     status = "okay";
> > +     ethernet0-port@0 {
> > +             phy-handle = <&ethphy0>;
> > +     };
> > +};
> > +
> > +&pciec {
> > +     status = "okay";
> > +};
> > +
> > +&pcie0 {
> > +     status = "okay";
> > +};
>
Andre Przywara Dec. 19, 2021, 12:03 a.m. UTC | #3
On Sat, 18 Dec 2021 14:05:39 -0800
Tony Dinh <mibodhi@gmail.com> wrote:

Hi Tony,

> On Sat, Dec 18, 2021 at 8:38 AM Andre Przywara <andre.przywara@arm.com> wrote:
> >
> > On Fri, 17 Dec 2021 20:23:27 -0800
> > Tony Dinh <mibodhi@gmail.com> wrote:
> >
> > Hi,
> >  
> > > Add DTS files for Pogoplug V4 board  
> >
> > is there any reason you didn't take the kirkwood-pogoplug-series-4.dts
> > file from the Linux tree? That is the same device, isn't it?
> >
> > Tom will ask you about the upstream status anyway...  
> 
> There were some differences that I dislike about the Linux tree
> version. Such as the NAND mtd0 is read-only, but we store the envs in
> mtd0 (a few blocks after the u-boot image). It seems we both created
> this DTS about the same time back then in early 2010's using the same
> source as a base. Both versions are identical in substance, but the
> node placements are different.
> 
> I'm not familiar with the thinking here. If we take the Linux upstream
> version, are we allowed to modify it? please advise.

In general the rule is to only take verbatim copies from the Linux
tree. The DT describes the hardware, so there should be no change
needed between U-Boot and Linux. The kernel has more reviewers for DT
changes, so their DTs are of better quality.

So if you think the DT in the kernel tree is wrong or missing out, you
should try to send a patch to Linux to get this fixed, then sync the
change into the U-Boot tree.

There is a way to make small changes to the DT that U-Boot sees: You
create a file with the same stub name, but add "-u-boot.dtsi", and put
your changes in there. Look into arch/arm/dts, there are plenty of
examples. However you should have a good reason for doing that, and
ideally would not need that at all.

Your case is somewhat interesting: the partition isn't technically
write-protected, I guess, it's probably just some Linux safe guarding
measure to prevent accidental overwrites of the firmware.
So read-only in there is strictly speaking not correct, so you should
try to get this fixed in Linux. Ideally U-Boot would add the read-only
property, after it consumed the node, so that the kernel does not stomp
over it (unless you want U-Boot environment access from Linux).

So in your case you should copy the existing kernel DT, and then
put: "/delete-property/ read-only;" in *-u-boot.dtsi.
What DT do you typically give to the kernel? Something loaded along
with the kernel? Or just the U-Boot DT, using $fdtcontroladdr?

Cheers,
Andre

> > >
> > > Signed-off-by: Tony Dinh <mibodhi@gmail.com>
> > > ---
> > >
> > >  arch/arm/dts/Makefile                 |   1 +
> > >  arch/arm/dts/kirkwood-pogoplug_v4.dts | 145 ++++++++++++++++++++++++++
> > >  2 files changed, 146 insertions(+)
> > >  create mode 100644 arch/arm/dts/kirkwood-pogoplug_v4.dts
> > >
> > > diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> > > index 7f622fedbd..716c6c0ed2 100644
> > > --- a/arch/arm/dts/Makefile
> > > +++ b/arch/arm/dts/Makefile
> > > @@ -68,6 +68,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += \
> > >       kirkwood-openrd-client.dtb \
> > >       kirkwood-openrd-ultimate.dtb \
> > >       kirkwood-pogo_e02.dtb \
> > > +     kirkwood-pogoplug_v4.dtb \
> > >       kirkwood-sheevaplug.dtb
> > >
> > >  dtb-$(CONFIG_MACH_S900) += \
> > > diff --git a/arch/arm/dts/kirkwood-pogoplug_v4.dts b/arch/arm/dts/kirkwood-pogoplug_v4.dts
> > > new file mode 100644
> > > index 0000000000..b4754f600e
> > > --- /dev/null
> > > +++ b/arch/arm/dts/kirkwood-pogoplug_v4.dts
> > > @@ -0,0 +1,145 @@
> > > +// SPDX-License-Identifier: GPL-2.0+
> > > +/*
> > > + * Copyright (C) 2014-2021 Tony Dinh <mibodhi@gmail.com>
> > > + *
> > > + * Device tree file for the Pogoplug V4/Mobile
> > > + *
> > > + */
> > > +
> > > +/dts-v1/;
> > > +
> > > +#include "kirkwood.dtsi"
> > > +#include "kirkwood-6192.dtsi"
> > > +
> > > +/ {
> > > +     model = "Pogoplug v4";
> > > +     compatible = "cloudengines,pogoplug-v4", "cloudengines,pogoplug-mobile",
> > > +             "marvell,kirkwood-88f6192", "marvell,kirkwood";
> > > +
> > > +     memory {
> > > +             device_type = "memory";
> > > +             reg = <0x00000000 0x8000000>;
> > > +     };
> > > +
> > > +     chosen {
> > > +             bootargs = "console=ttyS0,115200";
> > > +             stdout-path = &uart0;
> > > +     };
> > > +
> > > +     ocp@f1000000 {
> > > +             pinctrl: pin-controller@10000 {
> > > +                     pmx_led_green: pmx-led-green {
> > > +                             marvell,pins = "mpp22";
> > > +                             marvell,function = "gpio";
> > > +                     };
> > > +                     pmx_led_red: pmx-led-red {
> > > +                             marvell,pins = "mpp24";
> > > +                             marvell,function = "gpio";
> > > +                     };
> > > +                     pmx_button_eject: pmx-button-eject {
> > > +                             marvell,pins = "mpp29";
> > > +                             marvell,function = "gpio";
> > > +                     };
> > > +             };
> > > +
> > > +             serial@12000 {
> > > +                     status = "ok";
> > > +             };
> > > +
> > > +             sata@80000 {
> > > +                     status = "okay";
> > > +                     nr-ports = <2>;
> > > +             };
> > > +
> > > +             mvsdio@90000 {
> > > +                     pinctrl-0 = <&pmx_sdio>;
> > > +                     pinctrl-names = "default";
> > > +                     status = "okay";
> > > +                     cd-gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
> > > +                     /* No WP GPIO */
> > > +             };
> > > +     };
> > > +
> > > +     gpio-leds {
> > > +             compatible = "gpio-leds";
> > > +             pinctrl-0 = <&pmx_led_red &pmx_led_green>;
> > > +             pinctrl-names = "default";
> > > +
> > > +             health {
> > > +                     label = "status:green:health";
> > > +                     gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
> > > +                     default-state = "keep";
> > > +             };
> > > +             fault {
> > > +                     label = "status:red:fault";
> > > +                     gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
> > > +             };
> > > +     };
> > > +
> > > +     gpio_keys {
> > > +             compatible = "gpio-keys";
> > > +             #address-cells = <1>;
> > > +             #size-cells = <0>;
> > > +             pinctrl-0 = <&pmx_button_eject>;
> > > +             pinctrl-names = "default";
> > > +
> > > +             button@1 {
> > > +                     label = "Eject Button";
> > > +                     linux,code = <KEY_EJECTCD>;
> > > +                     gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
> > > +             };
> > > +     };
> > > +
> > > +};
> > > +
> > > +&nand {
> > > +     status = "okay";
> > > +
> > > +     partition@0 {
> > > +             label = "u-boot";
> > > +             reg = <0x0000000 0x200000>;
> > > +     };
> > > +
> > > +     partition@200000 {
> > > +             label = "uImage";
> > > +             reg = <0x200000 0x300000>;
> > > +     };
> > > +
> > > +     partition@500000 {
> > > +             label = "uImage2";
> > > +             reg = <0x500000 0x300000>;
> > > +     };
> > > +
> > > +     partition@800000 {
> > > +             label = "failsafe";
> > > +             reg = <0x800000 0x800000>;
> > > +     };
> > > +
> > > +     partition@1000000 {
> > > +             label = "root";
> > > +             reg = <0x1000000 0x7000000>;
> > > +     };
> > > +};
> > > +
> > > +&mdio {
> > > +     status = "okay";
> > > +
> > > +     ethphy0: ethernet-phy@0 {
> > > +             reg = <0>;
> > > +     };
> > > +};
> > > +
> > > +&eth0 {
> > > +     status = "okay";
> > > +     ethernet0-port@0 {
> > > +             phy-handle = <&ethphy0>;
> > > +     };
> > > +};
> > > +
> > > +&pciec {
> > > +     status = "okay";
> > > +};
> > > +
> > > +&pcie0 {
> > > +     status = "okay";
> > > +};  
> >
Tony Dinh Dec. 19, 2021, 1:23 a.m. UTC | #4
Hi Andre,

On Sat, Dec 18, 2021 at 4:03 PM Andre Przywara <andre.przywara@arm.com> wrote:
>
> On Sat, 18 Dec 2021 14:05:39 -0800
> Tony Dinh <mibodhi@gmail.com> wrote:
>
> Hi Tony,
>
> > On Sat, Dec 18, 2021 at 8:38 AM Andre Przywara <andre.przywara@arm.com> wrote:
> > >
> > > On Fri, 17 Dec 2021 20:23:27 -0800
> > > Tony Dinh <mibodhi@gmail.com> wrote:
> > >
> > > Hi,
> > >
> > > > Add DTS files for Pogoplug V4 board
> > >
> > > is there any reason you didn't take the kirkwood-pogoplug-series-4.dts
> > > file from the Linux tree? That is the same device, isn't it?
> > >
> > > Tom will ask you about the upstream status anyway...
> >
> > There were some differences that I dislike about the Linux tree
> > version. Such as the NAND mtd0 is read-only, but we store the envs in
> > mtd0 (a few blocks after the u-boot image). It seems we both created
> > this DTS about the same time back then in early 2010's using the same
> > source as a base. Both versions are identical in substance, but the
> > node placements are different.
> >
> > I'm not familiar with the thinking here. If we take the Linux upstream
> > version, are we allowed to modify it? please advise.
>
> In general the rule is to only take verbatim copies from the Linux
> tree. The DT describes the hardware, so there should be no change
> needed between U-Boot and Linux. The kernel has more reviewers for DT
> changes, so their DTs are of better quality.

Definitely, I've also noticed now that the author's name is Linus Walleij.

> So if you think the DT in the kernel tree is wrong or missing out, you
> should try to send a patch to Linux to get this fixed, then sync the
> change into the U-Boot tree.
> There is a way to make small changes to the DT that U-Boot sees: You
> create a file with the same stub name, but add "-u-boot.dtsi", and put
> your changes in there. Look into arch/arm/dts, there are plenty of
> examples. However you should have a good reason for doing that, and
> ideally would not need that at all.

Cool! But I hope we are keeping this approach? I recalled there are
some discussions about the FDT and "-u-boot.dtsi" might go away.

> Your case is somewhat interesting: the partition isn't technically
> write-protected, I guess, it's probably just some Linux safe guarding
> measure to prevent accidental overwrites of the firmware.
> So read-only in there is strictly speaking not correct, so you should
> try to get this fixed in Linux. Ideally U-Boot would add the read-only
> property, after it consumed the node, so that the kernel does not stomp
> over it (unless you want U-Boot environment access from Linux).
>
> So in your case you should copy the existing kernel DT, and then
> put: "/delete-property/ read-only;" in *-u-boot.dtsi.

Sounds like the best way to do it.

> What DT do you typically give to the kernel? Something loaded along
> with the kernel? Or just the U-Boot DT, using $fdtcontroladdr?

(A little bit of history: I've been maintaining the Kirkwood u-boots
and Linux kernel for a hobbyist community for many years). The
approach we take is to load the kernel uImage, uInitrd, and DTB
separately from the rootfs. And also let users access the u-boot envs
with fw_setenv and fw_printenv in Debian. Basically, we want users to
have maximum flexibility about how u-boot starts the kernel. For
example, for whatever reason, the users can also choose to load uImage
with appended DTB, then the mtd0 in NAND must be writable, i.e. to
allow flashing new u-boot and/or envs image in Linux shell.

Thanks,
Tony

> Cheers,
> Andre
>
> > > >
> > > > Signed-off-by: Tony Dinh <mibodhi@gmail.com>
> > > > ---
> > > >
> > > >  arch/arm/dts/Makefile                 |   1 +
> > > >  arch/arm/dts/kirkwood-pogoplug_v4.dts | 145 ++++++++++++++++++++++++++
> > > >  2 files changed, 146 insertions(+)
> > > >  create mode 100644 arch/arm/dts/kirkwood-pogoplug_v4.dts
> > > >
> > > > diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> > > > index 7f622fedbd..716c6c0ed2 100644
> > > > --- a/arch/arm/dts/Makefile
> > > > +++ b/arch/arm/dts/Makefile
> > > > @@ -68,6 +68,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += \
> > > >       kirkwood-openrd-client.dtb \
> > > >       kirkwood-openrd-ultimate.dtb \
> > > >       kirkwood-pogo_e02.dtb \
> > > > +     kirkwood-pogoplug_v4.dtb \
> > > >       kirkwood-sheevaplug.dtb
> > > >
> > > >  dtb-$(CONFIG_MACH_S900) += \
> > > > diff --git a/arch/arm/dts/kirkwood-pogoplug_v4.dts b/arch/arm/dts/kirkwood-pogoplug_v4.dts
> > > > new file mode 100644
> > > > index 0000000000..b4754f600e
> > > > --- /dev/null
> > > > +++ b/arch/arm/dts/kirkwood-pogoplug_v4.dts
> > > > @@ -0,0 +1,145 @@
> > > > +// SPDX-License-Identifier: GPL-2.0+
> > > > +/*
> > > > + * Copyright (C) 2014-2021 Tony Dinh <mibodhi@gmail.com>
> > > > + *
> > > > + * Device tree file for the Pogoplug V4/Mobile
> > > > + *
> > > > + */
> > > > +
> > > > +/dts-v1/;
> > > > +
> > > > +#include "kirkwood.dtsi"
> > > > +#include "kirkwood-6192.dtsi"
> > > > +
> > > > +/ {
> > > > +     model = "Pogoplug v4";
> > > > +     compatible = "cloudengines,pogoplug-v4", "cloudengines,pogoplug-mobile",
> > > > +             "marvell,kirkwood-88f6192", "marvell,kirkwood";
> > > > +
> > > > +     memory {
> > > > +             device_type = "memory";
> > > > +             reg = <0x00000000 0x8000000>;
> > > > +     };
> > > > +
> > > > +     chosen {
> > > > +             bootargs = "console=ttyS0,115200";
> > > > +             stdout-path = &uart0;
> > > > +     };
> > > > +
> > > > +     ocp@f1000000 {
> > > > +             pinctrl: pin-controller@10000 {
> > > > +                     pmx_led_green: pmx-led-green {
> > > > +                             marvell,pins = "mpp22";
> > > > +                             marvell,function = "gpio";
> > > > +                     };
> > > > +                     pmx_led_red: pmx-led-red {
> > > > +                             marvell,pins = "mpp24";
> > > > +                             marvell,function = "gpio";
> > > > +                     };
> > > > +                     pmx_button_eject: pmx-button-eject {
> > > > +                             marvell,pins = "mpp29";
> > > > +                             marvell,function = "gpio";
> > > > +                     };
> > > > +             };
> > > > +
> > > > +             serial@12000 {
> > > > +                     status = "ok";
> > > > +             };
> > > > +
> > > > +             sata@80000 {
> > > > +                     status = "okay";
> > > > +                     nr-ports = <2>;
> > > > +             };
> > > > +
> > > > +             mvsdio@90000 {
> > > > +                     pinctrl-0 = <&pmx_sdio>;
> > > > +                     pinctrl-names = "default";
> > > > +                     status = "okay";
> > > > +                     cd-gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
> > > > +                     /* No WP GPIO */
> > > > +             };
> > > > +     };
> > > > +
> > > > +     gpio-leds {
> > > > +             compatible = "gpio-leds";
> > > > +             pinctrl-0 = <&pmx_led_red &pmx_led_green>;
> > > > +             pinctrl-names = "default";
> > > > +
> > > > +             health {
> > > > +                     label = "status:green:health";
> > > > +                     gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
> > > > +                     default-state = "keep";
> > > > +             };
> > > > +             fault {
> > > > +                     label = "status:red:fault";
> > > > +                     gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
> > > > +             };
> > > > +     };
> > > > +
> > > > +     gpio_keys {
> > > > +             compatible = "gpio-keys";
> > > > +             #address-cells = <1>;
> > > > +             #size-cells = <0>;
> > > > +             pinctrl-0 = <&pmx_button_eject>;
> > > > +             pinctrl-names = "default";
> > > > +
> > > > +             button@1 {
> > > > +                     label = "Eject Button";
> > > > +                     linux,code = <KEY_EJECTCD>;
> > > > +                     gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
> > > > +             };
> > > > +     };
> > > > +
> > > > +};
> > > > +
> > > > +&nand {
> > > > +     status = "okay";
> > > > +
> > > > +     partition@0 {
> > > > +             label = "u-boot";
> > > > +             reg = <0x0000000 0x200000>;
> > > > +     };
> > > > +
> > > > +     partition@200000 {
> > > > +             label = "uImage";
> > > > +             reg = <0x200000 0x300000>;
> > > > +     };
> > > > +
> > > > +     partition@500000 {
> > > > +             label = "uImage2";
> > > > +             reg = <0x500000 0x300000>;
> > > > +     };
> > > > +
> > > > +     partition@800000 {
> > > > +             label = "failsafe";
> > > > +             reg = <0x800000 0x800000>;
> > > > +     };
> > > > +
> > > > +     partition@1000000 {
> > > > +             label = "root";
> > > > +             reg = <0x1000000 0x7000000>;
> > > > +     };
> > > > +};
> > > > +
> > > > +&mdio {
> > > > +     status = "okay";
> > > > +
> > > > +     ethphy0: ethernet-phy@0 {
> > > > +             reg = <0>;
> > > > +     };
> > > > +};
> > > > +
> > > > +&eth0 {
> > > > +     status = "okay";
> > > > +     ethernet0-port@0 {
> > > > +             phy-handle = <&ethphy0>;
> > > > +     };
> > > > +};
> > > > +
> > > > +&pciec {
> > > > +     status = "okay";
> > > > +};
> > > > +
> > > > +&pcie0 {
> > > > +     status = "okay";
> > > > +};
> > >
>
diff mbox series

Patch

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 7f622fedbd..716c6c0ed2 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -68,6 +68,7 @@  dtb-$(CONFIG_ARCH_KIRKWOOD) += \
 	kirkwood-openrd-client.dtb \
 	kirkwood-openrd-ultimate.dtb \
 	kirkwood-pogo_e02.dtb \
+	kirkwood-pogoplug_v4.dtb \
 	kirkwood-sheevaplug.dtb
 
 dtb-$(CONFIG_MACH_S900) += \
diff --git a/arch/arm/dts/kirkwood-pogoplug_v4.dts b/arch/arm/dts/kirkwood-pogoplug_v4.dts
new file mode 100644
index 0000000000..b4754f600e
--- /dev/null
+++ b/arch/arm/dts/kirkwood-pogoplug_v4.dts
@@ -0,0 +1,145 @@ 
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2014-2021 Tony Dinh <mibodhi@gmail.com>
+ *
+ * Device tree file for the Pogoplug V4/Mobile
+ *
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6192.dtsi"
+
+/ {
+	model = "Pogoplug v4";
+	compatible = "cloudengines,pogoplug-v4", "cloudengines,pogoplug-mobile",
+		"marvell,kirkwood-88f6192", "marvell,kirkwood";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+		stdout-path = &uart0;
+	};
+
+	ocp@f1000000 {
+		pinctrl: pin-controller@10000 {
+			pmx_led_green: pmx-led-green {
+				marvell,pins = "mpp22";
+				marvell,function = "gpio";
+			};
+			pmx_led_red: pmx-led-red {
+				marvell,pins = "mpp24";
+				marvell,function = "gpio";
+			};
+			pmx_button_eject: pmx-button-eject {
+				marvell,pins = "mpp29";
+				marvell,function = "gpio";
+			};
+		};
+
+		serial@12000 {
+			status = "ok";
+		};
+
+		sata@80000 {
+			status = "okay";
+			nr-ports = <2>;
+		};
+
+		mvsdio@90000 {
+			pinctrl-0 = <&pmx_sdio>;
+			pinctrl-names = "default";
+			status = "okay";
+			cd-gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
+			/* No WP GPIO */
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+		pinctrl-0 = <&pmx_led_red &pmx_led_green>;
+		pinctrl-names = "default";
+
+		health {
+			label = "status:green:health";
+			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+			default-state = "keep";
+		};
+		fault {
+			label = "status:red:fault";
+			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&pmx_button_eject>;
+		pinctrl-names = "default";
+
+		button@1 {
+			label = "Eject Button";
+			linux,code = <KEY_EJECTCD>;
+			gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+};
+
+&nand {
+	status = "okay";
+
+	partition@0 {
+		label = "u-boot";
+		reg = <0x0000000 0x200000>;
+	};
+
+	partition@200000 {
+		label = "uImage";
+		reg = <0x200000 0x300000>;
+	};
+
+	partition@500000 {
+		label = "uImage2";
+		reg = <0x500000 0x300000>;
+	};
+
+	partition@800000 {
+		label = "failsafe";
+		reg = <0x800000 0x800000>;
+	};
+
+	partition@1000000 {
+		label = "root";
+		reg = <0x1000000 0x7000000>;
+	};
+};
+
+&mdio {
+	status = "okay";
+
+	ethphy0: ethernet-phy@0 {
+		reg = <0>;
+	};
+};
+
+&eth0 {
+	status = "okay";
+	ethernet0-port@0 {
+		phy-handle = <&ethphy0>;
+	};
+};
+
+&pciec {
+	status = "okay";
+};
+
+&pcie0 {
+	status = "okay";
+};