ARM: DTS armada: Add support for 2 more mvebu model

Submitted by Ansuel Smith on March 3, 2017, 5:07 p.m.

Details

Message ID 1488560855-421-1-git-send-email-ansuelsmth@gmail.com
State New
Headers show

Commit Message

Ansuel Smith March 3, 2017, 5:07 p.m.
This patch add support for 2 Linksys router model
(shelby and rango). With this we now support all
the mvebu board on the market.

Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
 arch/arm/boot/dts/armada-385-linksys-rango.dts  | 443 ++++++++++++++++++++++++
 arch/arm/boot/dts/armada-385-linksys-shelby.dts | 115 ++++++
 2 files changed, 558 insertions(+)
 create mode 100644 arch/arm/boot/dts/armada-385-linksys-rango.dts
 create mode 100644 arch/arm/boot/dts/armada-385-linksys-shelby.dts

Comments

Andrew Lunn March 3, 2017, 5:26 p.m.
On Fri, Mar 03, 2017 at 06:07:35PM +0100, Ansuel Smith wrote:
> This patch add support for 2 Linksys router model
> (shelby and rango). With this we now support all
> the mvebu board on the market.
> 
> Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> ---
>  arch/arm/boot/dts/armada-385-linksys-rango.dts  | 443 ++++++++++++++++++++++++
>  arch/arm/boot/dts/armada-385-linksys-shelby.dts | 115 ++++++
>  2 files changed, 558 insertions(+)
>  create mode 100644 arch/arm/boot/dts/armada-385-linksys-rango.dts
>  create mode 100644 arch/arm/boot/dts/armada-385-linksys-shelby.dts
> 
> diff --git a/arch/arm/boot/dts/armada-385-linksys-rango.dts b/arch/arm/boot/dts/armada-385-linksys-rango.dts
> new file mode 100644
> index 0000000..61f4592
> --- /dev/null
> +++ b/arch/arm/boot/dts/armada-385-linksys-rango.dts
> @@ -0,0 +1,443 @@
> +/*
> + * Device Tree file for the Linksys WRT3200ACM (Rango)
> + *
> + * Copyright (C) 2016 Imre Kaloz <kaloz@openwrt.org>
> + *
> + *
> + * This file is dual-licensed: you can use it either under the terms
> + * of the GPL or the X11 license, at your option. Note that this dual
> + * licensing only applies to this file, and not this project as a
> + * whole.
> + *
> + *  a) This file is licensed under the terms of the GNU General Public
> + *     License version 2.  This program is licensed "as is" without
> + *     any warranty of any kind, whether express or implied.
> + *
> + * Or, alternatively,
> + *
> + *  b) Permission is hereby granted, free of charge, to any person
> + *     obtaining a copy of this software and associated documentation
> + *     files (the "Software"), to deal in the Software without
> + *     restriction, including without limitation the rights to use,
> + *     copy, modify, merge, publish, distribute, sublicense, and/or
> + *     sell copies of the Software, and to permit persons to whom the
> + *     Software is furnished to do so, subject to the following
> + *     conditions:
> + *
> + *     The above copyright notice and this permission notice shall be
> + *     included in all copies or substantial portions of the Software.
> + *
> + *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> + *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
> + *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> + *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
> + *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
> + *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> + *     OTHER DEALINGS IN THE SOFTWARE.
> + */
> +
> +/dts-v1/;
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include "armada-385.dtsi"

Hi Ansuel

Please could you explain why you did not use armada-385-linksys.dtsi

Thanks
	Andrew
Andrew Lunn March 3, 2017, 6:21 p.m.
On Fri, Mar 03, 2017 at 06:41:30PM +0100, Ansuel Smith wrote:
> What you mean? There are some changes with leds for shelby and lots of
> changes about rom size and led for rango.

Hi Ansuel

armada-385-linksys.dtsi does not contain any LEDs at
all. armada-385-linksys-caiman.dts etc, define the LEDs specific to
that board. You can do the same for Rango.

Yes, the flash layout is different. So refactor that into another
.dtsi file, which caiman and cobra can use.

You should be trying to place as much common stuff as possible into
.dtsi files. Which might need a bit of refactoring.

      Thanks
	Andrew
Andrew Lunn March 3, 2017, 8:12 p.m.
On Fri, Mar 03, 2017 at 07:59:51PM +0100, Ansuel Smith wrote:
> So i need to refactor the rango file and remove the extra part in the
> dts file, right?
> Also i need to create another dtsi file just for rango that use
> different flash size and gpio leds
> Wouldn't be a waste create one dtsi file just for the rango?

Please do not top post.

For the GPIO LEDs look at cobra, caiman as examples. The LEDs for
rango go in rango.dts.

The flash@d0000 node in armada-385-linksys.dtsi should be moved into
another .dtsi file, e.g. armada-385-linksys-caiman-cobra.dtsi.

So you end up with

armada-385-linksys-caiman.dts
 - armada-385-linksys.dtsi
 - armada-385-linksys-caiman-cobra.dtsi

armada-385-linksys-cobra.dts
 - armada-385-linksys.dtsi
 - armada-385-linksys-caiman-cobra.dtsi

armada-385-linksys-rango.dts
 - armada-385-linksys.dtsi

 Andrew
Imre Kaloz March 6, 2017, 10:28 a.m.
On 2017-03-03 18:07, Ansuel Smith wrote:
> This patch add support for 2 Linksys router model
> (shelby and rango). With this we now support all
> the mvebu board on the market.
>
> Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> ---
>   arch/arm/boot/dts/armada-385-linksys-rango.dts  | 443 ++++++++++++++++++++++++
>   arch/arm/boot/dts/armada-385-linksys-shelby.dts | 115 ++++++
>   2 files changed, 558 insertions(+)
>   create mode 100644 arch/arm/boot/dts/armada-385-linksys-rango.dts
>   create mode 100644 arch/arm/boot/dts/armada-385-linksys-shelby.dts
>

NAK. Patch to support shelby has been sent upstream by Ralph - the rango 
dts isn't finalized yet, hence it hasn't been sent upstream.


Best,

Imre

Patch hide | download patch | download mbox

diff --git a/arch/arm/boot/dts/armada-385-linksys-rango.dts b/arch/arm/boot/dts/armada-385-linksys-rango.dts
new file mode 100644
index 0000000..61f4592
--- /dev/null
+++ b/arch/arm/boot/dts/armada-385-linksys-rango.dts
@@ -0,0 +1,443 @@ 
+/*
+ * Device Tree file for the Linksys WRT3200ACM (Rango)
+ *
+ * Copyright (C) 2016 Imre Kaloz <kaloz@openwrt.org>
+ *
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is licensed under the terms of the GNU General Public
+ *     License version 2.  This program is licensed "as is" without
+ *     any warranty of any kind, whether express or implied.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include "armada-385.dtsi"
+
+/ {
+	model = "Linksys WRT3200ACM";
+	compatible = "linksys,rango", "linksys,armada385", "marvell,armada385",
+		     "marvell,armada380";
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x20000000>; /* 512 MB */
+	};
+
+	soc {
+		ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
+			  MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
+			  MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000
+			  MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000
+			  MBUS_ID(0x0c, 0x04) 0 0xf1200000 0x100000>;
+
+		internal-regs {
+
+			spi@10600 {
+				status = "disabled";
+			};
+
+			i2c@11000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&i2c0_pins>;
+				status = "okay";
+
+				tmp421@4c {
+					compatible = "ti,tmp421";
+					reg = <0x4c>;
+				};
+
+				pca9635@68 {
+					#address-cells = <1>;
+					#size-cells = <0>;
+					compatible = "nxp,pca9635";
+					reg = <0x68>;
+
+					wan_amber@0 {
+						label = "rango:amber:wan";
+						reg = <0x0>;
+					};
+
+					wan_white@1 {
+						label = "rango:white:wan";
+						reg = <0x1>;
+					};
+
+					usb2@5 {
+						label = "rango:white:usb2";
+						reg = <0x5>;
+					};
+
+					usb3_1@6 {
+						label = "rango:white:usb3_1";
+						reg = <0x6>;
+					};
+
+					usb3_2@7 {
+						label = "rango:white:usb3_2";
+						reg = <0x7>;
+					};
+
+					wps_white@8 {
+						label = "rango:white:wps";
+						reg = <0x8>;
+					};
+
+					wps_amber@9 {
+						label = "rango:amber:wps";
+						reg = <0x9>;
+					};
+				};
+			};
+
+			/* J10: VCC, NC, RX, NC, TX, GND  */
+			serial@12000 {
+				status = "okay";
+			};
+
+			ethernet@70000 {
+				status = "okay";
+				phy-mode = "rgmii-id";
+				buffer-manager = <&bm>;
+				bm,pool-long = <0>;
+				bm,pool-short = <3>;
+				fixed-link {
+					speed = <1000>;
+					full-duplex;
+				};
+			};
+
+			ethernet@34000 {
+				status = "okay";
+				phy-mode = "sgmii";
+				buffer-manager = <&bm>;
+				bm,pool-long = <2>;
+				bm,pool-short = <3>;
+				fixed-link {
+					speed = <1000>;
+					full-duplex;
+				};
+			};
+
+			mdio {
+				status = "okay";
+			};
+
+			bm@c8000 {
+				status = "okay";
+			};
+
+			sata@a8000 {
+				status = "okay";
+			};
+
+			/* USB part of the eSATA/USB 2.0 port */
+			usb@58000 {
+				status = "okay";
+			};
+
+			usb3@f8000 {
+				status = "okay";
+				usb-phy = <&usb3_phy>;
+			};
+
+			flash@d0000 {
+				status = "okay";
+				num-cs = <1>;
+				marvell,nand-keep-config;
+				marvell,nand-enable-arbiter;
+				nand-on-flash-bbt;
+
+				partition@0 {
+					label = "u-boot";
+					reg = <0x0000000 0x200000>;  /* 2MB */
+					read-only;
+				};
+
+				partition@200000 {
+					label = "u_env";
+					reg = <0x200000 0x20000>;    /* 128KB */
+				};
+
+				partition@220000 {
+					label = "s_env";
+					reg = <0x220000 0x40000>;    /* 256KB */
+				};
+
+				partition@7e0000 {
+					label = "devinfo";
+					reg = <0x7e0000 0x40000>;   /* 256KB */
+					read-only;
+				};
+
+				partition@820000 {
+					label = "sysdiag";
+					reg = <0x820000 0x1e0000>;   /* 1920KB */
+					read-only;
+				};
+
+				/* kernel1 overlaps with rootfs1 by design */
+				partition@a00000 {
+					label = "kernel1";
+					reg = <0xa00000 0x5000000>;  /* 80MB */
+				};
+
+				partition@1000000 {
+					label = "rootfs1";
+					reg = <0x1000000 0x4a00000>;  /* 74MB */
+				};
+
+				/* kernel2 overlaps with rootfs2 by design */
+				partition@5a00000 {
+					label = "kernel2";
+					reg = <0x5a00000 0x5000000>; /* 80MB */
+				};
+
+				partition@6000000 {
+					label = "rootfs2";
+					reg = <0x6000000 0x4a00000>; /* 74MB */
+				};
+
+				/*
+				 * 86MB, last MB is for the BBT, not writable
+				 */
+				partition@aa00000 {
+					label = "syscfg";
+					reg = <0xaa00000 0x5600000>;
+				};
+
+				/*
+				 * Unused area between "s_env" and "devinfo".
+				 * Moved here because otherwise the renumbered
+				 * partitions would break the bootloader
+				 * supplied bootargs
+				 */
+				partition@180000 {
+					label = "unused_area";
+					reg = <0x260000 0x5c0000>;   /* 5.75MB */
+				};
+			};
+		};
+
+		bm-bppi {
+			status = "okay";
+		};
+
+		pcie-controller {
+			status = "okay";
+
+			pcie@1,0 {
+				/* Marvell 88W8964, 5GHz-only */
+				status = "okay";
+
+				mwlwifi {
+					marvell,2ghz = <0>;
+					marvell,chainmask = <4 4>;
+				};
+
+			};
+
+			pcie@2,0 {
+				/* Marvell 88W8964, 2GHz-only */
+				status = "okay";
+
+				mwlwifi {
+					marvell,5ghz = <0>;
+					marvell,chainmask = <4 4>;
+				};
+
+			};
+		};
+	};
+
+	usb3_phy: usb3_phy {
+		compatible = "usb-nop-xceiv";
+		vcc-supply = <&reg_xhci0_vbus>;
+	};
+
+	reg_xhci0_vbus: xhci0-vbus {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&xhci0_vbus_pins>;
+		regulator-name = "xhci0-vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		enable-active-high;
+		gpio = <&gpio1 15 GPIO_ACTIVE_HIGH>;
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-0 = <&reset_key_pin &wps_key_pin>;
+		pinctrl-names = "default";
+
+		button@1 {
+			label = "WPS";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
+		};
+
+		button@2 {
+			label = "Factory Reset Button";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+		pinctrl-0 = <&power_led_pin &sata_led_pin &wlan_2g_led_pin &wlan_5g_led_pin>;
+		pinctrl-names = "default";
+
+		sata {
+			label = "rango:white:sata";
+			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "disk-activity";
+		};
+
+		wlan_2g {
+			label = "rango:white:wlan_2g";
+			gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan_5g {
+			label = "rango:white:wlan_5g";
+			gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
+		};
+
+		power {
+			label = "rango:white:power";
+			gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;
+			default-state = "on";
+		};
+	};
+
+	dsa@0 {
+		compatible = "marvell,dsa";
+		#address-cells = <2>;
+		#size-cells = <0>;
+
+		dsa,ethernet = <&eth2>;
+		dsa,mii-bus = <&mdio>;
+
+		switch@0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0x0 0>;	/* MDIO address 0, switch 0 in tree */
+
+			port@0 {
+				reg = <0>;
+				label = "lan4";
+			};
+
+			port@1 {
+				reg = <1>;
+				label = "lan3";
+			};
+
+			port@2 {
+				reg = <2>;
+				label = "lan2";
+			};
+
+			port@3 {
+				reg = <3>;
+				label = "lan1";
+			};
+
+			port@4 {
+				reg = <4>;
+				label = "wan";
+			};
+
+			port@5 {
+				reg = <5>;
+				label = "cpu";
+			};
+		};
+	};
+
+	mvsw61xx {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "marvell,88e6352";
+		status = "okay";
+		reg = <0x10>;
+
+		mii-bus = <&mdio>;
+		cpu-port-0 = <5>;
+		cpu-port-1 = <6>;
+	};
+
+};
+
+&pinctrl {
+	sata_led_pin: sata-led-pin {
+		marvell,pins = "mpp21";
+		marvell,function = "gpio";
+	};
+
+	wps_key_pin: wps-key-pin {
+		marvell,pins = "mpp24";
+		marvell,function = "gpio";
+	};
+
+	reset_key_pin: reset-key-pin {
+		marvell,pins = "mpp29";
+		marvell,function = "gpio";
+	};
+
+	wlan_2g_led_pin: wlan-2g-led-pin {
+		marvell,pins = "mpp45";
+		marvell,function = "gpio";
+	};
+
+	wlan_5g_led_pin: wlan-5g-led-pin {
+		marvell,pins = "mpp46";
+		marvell,function = "gpio";
+	};
+
+	xhci0_vbus_pins: xhci0-vbus-pins {
+		marvell,pins = "mpp47";
+		marvell,function = "gpio";
+	};
+
+	power_led_pin: power-led-pin {
+		marvell,pins = "mpp56";
+		marvell,function = "gpio";
+	};
+};
diff --git a/arch/arm/boot/dts/armada-385-linksys-shelby.dts b/arch/arm/boot/dts/armada-385-linksys-shelby.dts
new file mode 100644
index 0000000..f8dd193
--- /dev/null
+++ b/arch/arm/boot/dts/armada-385-linksys-shelby.dts
@@ -0,0 +1,115 @@ 
+/*
+ * Device Tree file for the Linksys WRT1900ACS (Shelby)
+ *
+ * Copyright (C) 2015 Imre Kaloz <kaloz@openwrt.org>
+ *
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is licensed under the terms of the GNU General Public
+ *     License version 2.  This program is licensed "as is" without
+ *     any warranty of any kind, whether express or implied.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "armada-385-linksys.dtsi"
+
+/ {
+	model = "Linksys WRT1900ACS";
+	compatible = "linksys,shelby", "linksys,armada385", "marvell,armada385",
+		     "marvell,armada380";
+
+	soc {
+		internal-regs{
+			i2c@11000 {
+
+				pca9635@68 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+
+					wan_amber@0 {
+						label = "shelby:amber:wan";
+						reg = <0x0>;
+					};
+
+					wan_white@1 {
+						label = "shelby:white:wan";
+						reg = <0x1>;
+					};
+
+					wlan_2g@2 {
+						label = "shelby:white:wlan_2g";
+						reg = <0x2>;
+					};
+
+					wlan_5g@3 {
+						label = "shelby:white:wlan_5g";
+						reg = <0x3>;
+					};
+
+					usb2@5 {
+						label = "shelby:white:usb2";
+						reg = <0x5>;
+					};
+
+					usb3_1@6 {
+						label = "shelby:white:usb3_1";
+						reg = <0x6>;
+					};
+
+					usb3_2@7 {
+						label = "shelby:white:usb3_2";
+						reg = <0x7>;
+					};
+
+					wps_white@8 {
+						label = "shelby:white:wps";
+						reg = <0x8>;
+					};
+
+					wps_amber@9 {
+						label = "shelby:amber:wps";
+						reg = <0x9>;
+					};
+				};
+			};
+		};
+	};
+
+	gpio-leds {
+		power {
+			label = "shelby:white:power";
+		};
+
+		sata {
+			label = "shelby:white:sata";
+			linux,default-trigger = "disk-activity";
+		};
+	};
+};