From 8a123f6f6646f68ebd209caa5e7ef5b8ed61c325 Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Sun, 7 Dec 2014 16:53:22 +0000
Subject: [PATCH] ramips: generate factory images for Nexx devices

Signed-off-by: Roger Pueyo Centelles <roger.pueyo@guifi.net>

SVN-Revision: 43541
---
 .../ramips/dts/{WT1520.dts => WT1520-4M.dts}  | 43 +----------------
 target/linux/ramips/dts/WT1520-8M.dts         | 42 +++++++++++++++++
 target/linux/ramips/dts/WT1520.dtsi           | 46 +++++++++++++++++++
 target/linux/ramips/image/Makefile            |  9 +---
 tools/firmware-utils/src/mkporayfw.c          | 32 +++++++++----
 5 files changed, 114 insertions(+), 58 deletions(-)
 rename target/linux/ramips/dts/{WT1520.dts => WT1520-4M.dts} (53%)
 create mode 100644 target/linux/ramips/dts/WT1520-8M.dts
 create mode 100644 target/linux/ramips/dts/WT1520.dtsi

diff --git a/target/linux/ramips/dts/WT1520.dts b/target/linux/ramips/dts/WT1520-4M.dts
similarity index 53%
rename from target/linux/ramips/dts/WT1520.dts
rename to target/linux/ramips/dts/WT1520-4M.dts
index dc0ad32f41..97f03b5e75 100644
--- a/target/linux/ramips/dts/WT1520.dts
+++ b/target/linux/ramips/dts/WT1520-4M.dts
@@ -1,25 +1,9 @@
 /dts-v1/;
 
-/include/ "rt5350.dtsi"
+/include/ "WT1520.dtsi"
 
 / {
-	compatible = "NEXXWT1520", "ralink,rt5350-soc";
-	model = "Nexx WT1520";
-
-	memory@0 {
-		device_type = "memory";
-		reg = <0x0 0x2000000>;
-	};
-
-	chosen {
-		bootargs = "console=ttyS1,57600";
-	};
-
 	palmbus@10000000 {
-		uart@500 {
-			status = "okay";
-		};
-
 		spi@b00 {
 			status = "okay";
 			m25p80@0 {
@@ -55,29 +39,4 @@
 			};
 		};
 	};
-
-	pinctrl {
-		state_default: pinctrl0 {
-			gpio {
-				ralink,group = "jtag";
-				ralink,function = "gpio";
-			};
-		};
-	};
-
-	ethernet@10100000 {
-		mtd-mac-address = <&factory 0x4>;
-	};
-
-	wmac@10180000 {
-		ralink,mtd-eeprom = <&factory 0>;
-	};
-
-	ehci@101c0000 {
-		status = "okay";
-	};
-
-	ohci@101c1000 {
-		status = "okay";
-	};
 };
diff --git a/target/linux/ramips/dts/WT1520-8M.dts b/target/linux/ramips/dts/WT1520-8M.dts
new file mode 100644
index 0000000000..32f0360c08
--- /dev/null
+++ b/target/linux/ramips/dts/WT1520-8M.dts
@@ -0,0 +1,42 @@
+/dts-v1/;
+
+/include/ "WT1520.dtsi"
+
+/ {
+	palmbus@10000000 {
+		spi@b00 {
+			status = "okay";
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "w25q64";
+				reg = <0 0>;
+				linux,modalias = "m25p80", "s25fl064k";
+				spi-max-frequency = <10000000>;
+
+				partition@0 {
+					label = "u-boot";
+					reg = <0x0 0x30000>;
+					read-only;
+				};
+
+				partition@30000 {
+					label = "u-boot-env";
+					reg = <0x30000 0x10000>;
+					read-only;
+				};
+
+				factory: partition@40000 {
+					label = "factory";
+					reg = <0x40000 0x10000>;
+					read-only;
+				};
+
+				partition@50000 {
+					label = "firmware";
+					reg = <0x50000 0x7b0000>;
+				};
+			};
+		};
+	};
+};
diff --git a/target/linux/ramips/dts/WT1520.dtsi b/target/linux/ramips/dts/WT1520.dtsi
new file mode 100644
index 0000000000..b8c4e0a17d
--- /dev/null
+++ b/target/linux/ramips/dts/WT1520.dtsi
@@ -0,0 +1,46 @@
+/include/ "rt5350.dtsi"
+
+/ {
+	compatible = "NEXXWT1520", "ralink,rt5350-soc";
+	model = "Nexx WT1520";
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x2000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS1,57600";
+	};
+
+	palmbus@10000000 {
+		uart@500 {
+			status = "okay";
+		};
+	};
+
+	pinctrl {
+		state_default: pinctrl0 {
+			gpio {
+				ralink,group = "jtag";
+				ralink,function = "gpio";
+			};
+		};
+	};
+
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x4>;
+	};
+
+	wmac@10180000 {
+		ralink,mtd-eeprom = <&factory 0>;
+	};
+
+	ehci@101c0000 {
+		status = "okay";
+	};
+
+	ohci@101c1000 {
+		status = "okay";
+	};
+};
diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile
index 491a44d964..e0eb8c2d29 100644
--- a/target/linux/ramips/image/Makefile
+++ b/target/linux/ramips/image/Makefile
@@ -596,12 +596,7 @@ Image/Build/Profile/WNCE2001=$(call BuildFirmware/WNCE2001/$(1),$(1),wnce2001,WN
 
 Image/Build/Profile/WR512-3GN=$(call BuildFirmware/DefaultDualSize/$(1),$(1),wr512-3ng,WR512-3GN)
 
-define BuildFirmware/WT1520/initramfs
-	$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))
-endef
-BuildFirmware/WT1520/squashfs=$(call BuildFirmware/Default4M/squashfs,$(1),$(2),$(3),$(4))
-
-Image/Build/Profile/WT1520=$(call BuildFirmware/WT1520/$(1),$(1),wt1520,WT1520,WT1520)
+Image/Build/Profile/WT1520=$(call BuildFirmware/PorayDualSize/$(1),$(1),wt1520,WT1520)
 
 Image/Build/Profile/UR-326N4G=$(call BuildFirmware/Default4M/$(1),$(1),ur-326n4g,UR-326N4G)
 
@@ -793,7 +788,7 @@ Image/Build/Profile/WMR300=$(call BuildFirmware/Default8M/$(1),$(1),wmr-300,WMR3
 Image/Build/Profile/RT-N14U=$(call BuildFirmware/Default8M/$(1),$(1),rt-n14u,RT-N14U)
 Image/Build/Profile/WR8305RT=$(call BuildFirmware/Default8M/$(1),$(1),wr8305rt,WR8305RT)
 Image/Build/Profile/WRTNODE=$(call BuildFirmware/Default16M/$(1),$(1),wrtnode,WRTNODE)
-Image/Build/Profile/WT3020=$(call BuildFirmware/DefaultDualSize/$(1),$(1),wt3020,WT3020)
+Image/Build/Profile/WT3020=$(call BuildFirmware/PorayDualSize/$(1),$(1),wt3020,WT3020)
 Image/Build/Profile/ZBT-WA05=$(call BuildFirmware/Default8M/$(1),$(1),zbt-wa05,ZBT-WA05)
 
 
diff --git a/tools/firmware-utils/src/mkporayfw.c b/tools/firmware-utils/src/mkporayfw.c
index 960c604a7e..6ec4f320d9 100644
--- a/tools/firmware-utils/src/mkporayfw.c
+++ b/tools/firmware-utils/src/mkporayfw.c
@@ -58,8 +58,8 @@
 #define HWID_PORAY_X5_X6	0x35353335
 #define HWID_PORAY_X8		0x36353335
 #define HWID_PORAY_X1		0x38353335
-#define HWID_NEXX_WT15XXX	0x30353332
-#define HWID_NEXX_WT3020A	0x30323033
+#define HWID_NEXX_WT1520	0x30353332
+#define HWID_NEXX_WT3020	0x30323033
 #define HWID_A5_V11		0x32473352
 
 /* Recognized XOR obfuscation keys */
@@ -212,16 +212,30 @@ static struct board_info boards[] = {
 		.layout_id	= "8M",
 		.key		= KEY_PORAY_1,
 	}, {
-		.id		= "WT15XXX",
-		.hw_id		= HWID_NEXX_WT15XXX,
+		.id		= "WT1520",
+		.hw_id		= HWID_NEXX_WT1520,
 		.layout_id	= "4M",
 		.key		= KEY_NEXX_1,
 	}, {
-		.id		= "WT3020A",
-		.hw_id		= HWID_NEXX_WT3020A,
-		.layout_id	= "4M",
-		.key		= KEY_NEXX_2,
-	}, {
+		.id		= "WT1520",
+		.hw_id		= HWID_NEXX_WT1520,
+		.layout_id	= "8M",
+		.key		= KEY_NEXX_1,
+        }, {
+                .id             = "WT3020",
+                .hw_id          = HWID_NEXX_WT3020,
+                .layout_id      = "4M",
+                .key            = KEY_NEXX_2,
+        }, {
+                .id             = "WT3020",
+                .hw_id          = HWID_NEXX_WT3020,
+                .layout_id      = "8M",
+                .key            = KEY_NEXX_2,
+        }, {
+
+
+
+
 		/* terminating entry */
 	}
 };
-- 
2.30.2