diff mbox series

[4/5] ARM: gemini: add device tree for edimax NS2502

Message ID 20210517193205.691147-5-clabbe@baylibre.com (mailing list archive)
State Superseded
Headers show
Series ARM: gemini: add two more board | expand

Commit Message

Corentin LABBE May 17, 2021, 7:32 p.m. UTC
The edimax NS2502 is a NAS box running a SL3516 SoC.

Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
---
 arch/arm/boot/dts/Makefile          |   1 +
 arch/arm/boot/dts/gemini-ns2502.dts | 141 ++++++++++++++++++++++++++++
 2 files changed, 142 insertions(+)
 create mode 100644 arch/arm/boot/dts/gemini-ns2502.dts

Comments

Linus Walleij May 17, 2021, 11:46 p.m. UTC | #1
Hi Corentin,

this is looking nice! Just one thing:

On Mon, May 17, 2021 at 9:32 PM Corentin Labbe <clabbe@baylibre.com> wrote:

> The edimax NS2502 is a NAS box running a SL3516 SoC.
>
> Signed-off-by: Corentin Labbe <clabbe@baylibre.com>

> +&flash {
> +       status = "okay";
> +       /* 8MB of flash */
> +       reg = <0x30000000 0x00800000>;

No pin control setting? I guess it may work but this doesn't hurt
(I think):

    pinctrl-names = "enabled", "disabled";
    pinctrl-0 = <&pflash_default_pins>;
    pinctrl-1 = <&pflash_disabled_pins>;

> +       partitions {
> +               compatible = "fixed-partitions";
> +               #address-cells = <1>;
> +               #size-cells = <1>;
> +
> +               partition@0 {
> +                       label = "RedBoot";
> +                       reg = <0x00000000 0x00020000>;
> +                       read-only;
> +               };
> +               partition@20000 {
> +                       label = "kernel";
> +                       reg = <0x00020000 0x00700000>;
> +               };
> +               partition@720000 {
> +                       label = "VCTL";
> +                       reg = <0x00720000 0x00020000>;
> +                       read-only;
> +               };
> +               partition@740000 {
> +                       label = "CurConf";
> +                       reg = <0x00740000 0x000a0000>;
> +                       read-only;
> +               };
> +               partition@7e0000 {
> +                       label = "FIS";
> +                       reg = <0x007e0000 0x00010000>;
> +                       read-only;
> +               };
> +       };
> +};

Is the FIS broken since you hardcode the partitions?

Doesn't this work:

partitions {
    compatible = "redboot-fis";
    /* Eraseblock at 0x7e0000 */
    fis-index-block = <0xfc>;
};

(Needs CONFIG_MTD_REDBOOT_PARTS)

Yours,
Linus Walleij
Corentin LABBE May 18, 2021, 9:54 a.m. UTC | #2
Le Tue, May 18, 2021 at 01:46:20AM +0200, Linus Walleij a écrit :
> Hi Corentin,
> 
> this is looking nice! Just one thing:
> 
> On Mon, May 17, 2021 at 9:32 PM Corentin Labbe <clabbe@baylibre.com> wrote:
> 
> > The edimax NS2502 is a NAS box running a SL3516 SoC.
> >
> > Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
> 
> > +&flash {
> > +       status = "okay";
> > +       /* 8MB of flash */
> > +       reg = <0x30000000 0x00800000>;
> 
> No pin control setting? I guess it may work but this doesn't hurt
> (I think):
> 
>     pinctrl-names = "enabled", "disabled";
>     pinctrl-0 = <&pflash_default_pins>;
>     pinctrl-1 = <&pflash_disabled_pins>;
> 

I have added, without any change in behavour.

> > +       partitions {
> > +               compatible = "fixed-partitions";
> > +               #address-cells = <1>;
> > +               #size-cells = <1>;
> > +
> > +               partition@0 {
> > +                       label = "RedBoot";
> > +                       reg = <0x00000000 0x00020000>;
> > +                       read-only;
> > +               };
> > +               partition@20000 {
> > +                       label = "kernel";
> > +                       reg = <0x00020000 0x00700000>;
> > +               };
> > +               partition@720000 {
> > +                       label = "VCTL";
> > +                       reg = <0x00720000 0x00020000>;
> > +                       read-only;
> > +               };
> > +               partition@740000 {
> > +                       label = "CurConf";
> > +                       reg = <0x00740000 0x000a0000>;
> > +                       read-only;
> > +               };
> > +               partition@7e0000 {
> > +                       label = "FIS";
> > +                       reg = <0x007e0000 0x00010000>;
> > +                       read-only;
> > +               };
> > +       };
> > +};
> 
> Is the FIS broken since you hardcode the partitions?
> 
> Doesn't this work:
> 
> partitions {
>     compatible = "redboot-fis";
>     /* Eraseblock at 0x7e0000 */
>     fis-index-block = <0xfc>;
> };
> 
> (Needs CONFIG_MTD_REDBOOT_PARTS)

No it does not.

physmap-flash 30000000.flash: no enabled pin control state
physmap-flash 30000000.flash: no disabled pin control state
physmap-flash 30000000.flash: initialized Gemini-specific physmap control
physmap-flash 30000000.flash: physmap platform flash device: [mem 0x30000000-0x331fffff]
30000000.flash: Found 1 x16 devices at 0x0 in 16-bit bank. Manufacturer ID 0x000001 Chip ID 0x002201
number of CFI chips: 1
Searching for RedBoot partition table in 30000000.flash at offset 0x1fe0000
No RedBoot partition table detected in 30000000.flash
Searching for RedBoot partition table in 30000000.flash at offset 0x1fe0000
No RedBoot partition table detected in 30000000.flash
Linus Walleij May 18, 2021, 11:17 p.m. UTC | #3
On Tue, May 18, 2021 at 11:55 AM LABBE Corentin <clabbe@baylibre.com> wrote:
> Le Tue, May 18, 2021 at 01:46:20AM +0200, Linus Walleij a écrit :

> > Is the FIS broken since you hardcode the partitions?
> >
> > Doesn't this work:
> >
> > partitions {
> >     compatible = "redboot-fis";
> >     /* Eraseblock at 0x7e0000 */
> >     fis-index-block = <0xfc>;
> > };
> >
> > (Needs CONFIG_MTD_REDBOOT_PARTS)
>
> No it does not.
>
> physmap-flash 30000000.flash: no enabled pin control state
> physmap-flash 30000000.flash: no disabled pin control state
> physmap-flash 30000000.flash: initialized Gemini-specific physmap control
> physmap-flash 30000000.flash: physmap platform flash device: [mem 0x30000000-0x331fffff]
> 30000000.flash: Found 1 x16 devices at 0x0 in 16-bit bank. Manufacturer ID 0x000001 Chip ID 0x002201
> number of CFI chips: 1
> Searching for RedBoot partition table in 30000000.flash at offset 0x1fe0000
> No RedBoot partition table detected in 30000000.flash
> Searching for RedBoot partition table in 30000000.flash at offset 0x1fe0000
> No RedBoot partition table detected in 30000000.flash

Hm since it searches at 0x1fe0000 that's where it thinks the last
eraseblock is so the erase blocks are 0x20000 (128KB).

FIS at 0x7e0000 should be erase block
0x7e0000/0x20000 = 0x3f

Can you test fis-index-block = <0x3f> and see what happens?

Yours,
Linus Walleij
Corentin LABBE May 20, 2021, 1:02 p.m. UTC | #4
Le Wed, May 19, 2021 at 01:17:59AM +0200, Linus Walleij a écrit :
> On Tue, May 18, 2021 at 11:55 AM LABBE Corentin <clabbe@baylibre.com> wrote:
> > Le Tue, May 18, 2021 at 01:46:20AM +0200, Linus Walleij a écrit :
> 
> > > Is the FIS broken since you hardcode the partitions?
> > >
> > > Doesn't this work:
> > >
> > > partitions {
> > >     compatible = "redboot-fis";
> > >     /* Eraseblock at 0x7e0000 */
> > >     fis-index-block = <0xfc>;
> > > };
> > >
> > > (Needs CONFIG_MTD_REDBOOT_PARTS)
> >
> > No it does not.
> >
> > physmap-flash 30000000.flash: no enabled pin control state
> > physmap-flash 30000000.flash: no disabled pin control state
> > physmap-flash 30000000.flash: initialized Gemini-specific physmap control
> > physmap-flash 30000000.flash: physmap platform flash device: [mem 0x30000000-0x331fffff]
> > 30000000.flash: Found 1 x16 devices at 0x0 in 16-bit bank. Manufacturer ID 0x000001 Chip ID 0x002201
> > number of CFI chips: 1
> > Searching for RedBoot partition table in 30000000.flash at offset 0x1fe0000
> > No RedBoot partition table detected in 30000000.flash
> > Searching for RedBoot partition table in 30000000.flash at offset 0x1fe0000
> > No RedBoot partition table detected in 30000000.flash
> 
> Hm since it searches at 0x1fe0000 that's where it thinks the last
> eraseblock is so the erase blocks are 0x20000 (128KB).
> 
> FIS at 0x7e0000 should be erase block
> 0x7e0000/0x20000 = 0x3f
> 
> Can you test fis-index-block = <0x3f> and see what happens?
> 

With 0x7F it works.

When testing, I found that fis-index-block was ignored. I just sent a patch fixing this.

Regards
diff mbox series

Patch

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 1754b562e0b9..bb30d13c9c60 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -216,6 +216,7 @@  dtb-$(CONFIG_ARCH_GEMINI) += \
 	gemini-dlink-dir-685.dtb \
 	gemini-dlink-dns-313.dtb \
 	gemini-nas4220b.dtb \
+	gemini-ns2502.dtb \
 	gemini-rut1xx.dtb \
 	gemini-sl93512r.dtb \
 	gemini-sq201.dtb \
diff --git a/arch/arm/boot/dts/gemini-ns2502.dts b/arch/arm/boot/dts/gemini-ns2502.dts
new file mode 100644
index 000000000000..a23745dc20f4
--- /dev/null
+++ b/arch/arm/boot/dts/gemini-ns2502.dts
@@ -0,0 +1,141 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2021 Corentin Labbe <clabbe@baylibre.com>
+ * Device Tree file for Edimax NS 2502
+ */
+
+/dts-v1/;
+
+#include "gemini.dtsi"
+
+/ {
+	model = "Edimax NS-2502";
+	compatible = "edimax,ns-2502", "cortina,gemini";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	memory@0 {
+		/* 128 MB */
+		device_type = "memory";
+		reg = <0x00000000 0x8000000>;
+	};
+
+	aliases {
+		mdio-gpio0 = &mdio0;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,19200n8";
+		stdout-path = &uart0;
+	};
+
+	mdio0: mdio {
+		compatible = "virtual,mdio-gpio";
+		gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
+			<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		phy0: ethernet-phy@1 {
+			reg = <1>;
+			device_type = "ethernet-phy";
+			/* We lack the knowledge of necessary GPIO to achieve
+			 * Gigabit
+			 */
+			max-speed = <100>;
+		};
+	};
+};
+
+&ethernet {
+	status = "okay";
+	ethernet-port@0 {
+		phy-mode = "rgmii";
+		phy-handle = <&phy0>;
+	};
+};
+
+&flash {
+	status = "okay";
+	/* 8MB of flash */
+	reg = <0x30000000 0x00800000>;
+
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partition@0 {
+			label = "RedBoot";
+			reg = <0x00000000 0x00020000>;
+			read-only;
+		};
+		partition@20000 {
+			label = "kernel";
+			reg = <0x00020000 0x00700000>;
+		};
+		partition@720000 {
+			label = "VCTL";
+			reg = <0x00720000 0x00020000>;
+			read-only;
+		};
+		partition@740000 {
+			label = "CurConf";
+			reg = <0x00740000 0x000a0000>;
+			read-only;
+		};
+		partition@7e0000 {
+			label = "FIS";
+			reg = <0x007e0000 0x00010000>;
+			read-only;
+		};
+	};
+};
+
+&gpio0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&gpio0_default_pins>;
+};
+
+&ide0 {
+	status = "okay";
+};
+
+&ide1 {
+	status = "okay";
+};
+
+&sata {
+	cortina,gemini-ata-muxmode = <3>;
+	cortina,gemini-enable-sata-bridge;
+	status = "okay";
+};
+
+&syscon {
+	pinctrl {
+		/*
+		 * gpio0agrp cover line 0-4
+		 * gpio0bgrp cover line 5
+		 */
+		gpio0_default_pins: pinctrl-gpio0 {
+			    mux {
+				    function = "gpio0";
+				    groups = "gpio0agrp", "gpio0bgrp", "gpio0hgrp";
+			    };
+		    };
+		    pinctrl-gmii {
+			    mux {
+				    function = "gmii";
+				    groups = "gmii_gmac0_grp";
+			    };
+		    };
+	};
+};
+
+&usb0 {
+	status = "okay";
+};
+
+&usb1 {
+	status = "okay";
+};