[OpenWrt-Devel] ramips: add WT3020 with 16MB flash

Message ID CANBdSQg2ebedknPB9eE3nYjYT40p7kHp2qK=_uiURU1_N4UbkA@mail.gmail.com
State New
Headers show

Commit Message

Dmitry Antonov May 6, 2016, 4:02 p.m.
A little HW-mod applied to WT3020 makes it more usable.

Some people can buy it and need an updated OpenWRT.


Signed-off-by: Dmitry Antonov <dantonov@gmail.com>
---

Patch

diff --git a/openwrt_wt3020-16MB/target/linux/ramips/dts/WT3020-16M.dts
b/openwrt_wt3020-16MB/target/linux/ramips/dts/WT3020-16M.dts
new file mode 100644
index 0000000..ff13560
--- /dev/null
+++ b/openwrt_wt3020-16MB/target/linux/ramips/dts/WT3020-16M.dts
@@ -0,0 +1,102 @@ 
+/dts-v1/;
+
+/include/ "mt7620n.dtsi"
+
+/ {
+	compatible = "wt3020", "ralink,mt7620n-soc";
+	model = "Nexx WT3020";
+
+	palmbus@10000000 {
+		gpio2: gpio@660 {
+			status = "okay";
+		};
+
+		gpio3: gpio@688 {
+			status = "okay";
+		};
+
+		spi@b00 {
+			status = "okay";
+
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "jedec,spi-nor";
+				reg = <0 0>;
+				linux,modalias = "m25p80", "w25q128";
+				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 0xfb0000>;
+				};
+			};
+		};
+	};
+
+	ehci@101c0000 {
+		status = "okay";
+	};
+
+	ohci@101c1000 {
+		status = "okay";
+	};
+
+	ethernet@10100000 {
+		mtd-mac-address = <&factory 0x4>;
+		mediatek,portmap = "wllll";
+	};
+
+	wmac@10180000 {
+		ralink,mtd-eeprom = <&factory 0>;
+	};
+
+	pinctrl {
+		state_default: pinctrl0 {
+			default {
+				ralink,group = "ephy", "wled", "pa", "i2c", "wdt", "uartf";
+				ralink,function = "gpio";
+			};
+		};
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio0 1 1>;
+			linux,code = <0x198>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		power {
+			label = "wt3020:blue:power";
+			gpios = <&gpio3 0 0>;
+		};
+	};
+};
diff --git a/openwrt/target/linux/ramips/image/Makefile
b/openwrt_wt3020-16MB/target/linux/ramips/image/Makefile
index 6e0349f..1d78c86 100644
--- a/openwrt/target/linux/ramips/image/Makefile
+++ b/openwrt_wt3020-16MB/target/linux/ramips/image/Makefile
@@ -145,24 +145,28 @@  endef
 # $(1) = squashfs/initramfs
 # $(2) = lowercase board name
 # $(3) = dts file
+# $(4) = uImage header name field
 ralink_default_fw_size_4M=3866624
 BuildFirmware/Default4M/squashfs=$(call
BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_4M),$(4))
 BuildFirmware/Default4M/initramfs=$(call
BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))

 # Build images for default ralink layout for 8MB flash
 # kernel + roots = 0x7b0000
-# $(1) = squashfs/initramfs
-# $(2) = lowercase board name
-# $(3) = dts file
-# $(4) = uImage header name field
+# parameters' descriptions the same as "... for 4MB flash"
 ralink_default_fw_size_8M=8060928
 BuildFirmware/Default8M/squashfs=$(call
BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_8M),$(4))
 BuildFirmware/Default8M/initramfs=$(call
BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))

-ralink_default_fw_size_16M=16121856
+# Build images for default ralink layout for 16MB flash
+# kernel + roots = 0xfb0000
+# parameters' descriptions the same as "... for 4MB flash"
+ralink_default_fw_size_16M=16449536
 BuildFirmware/Default16M/squashfs=$(call
BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_16M),$(4))
 BuildFirmware/Default16M/initramfs=$(call
BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))

+# Build images for default ralink layout for 32MB flash
+# kernel + roots = 0x1fb0000
+# parameters' descriptions the same as "... for 4MB flash"
 ralink_default_fw_size_32M=33226752
 BuildFirmware/Default32M/squashfs=$(call
BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_32M),$(4))
 BuildFirmware/Default32M/initramfs=$(call
BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))
@@ -192,6 +196,18 @@  define BuildFirmware/DefaultDualSize/initramfs
 	$(call BuildFirmware/OF/initramfs,$(1),$(2)-8M,$(3)-8M)
 endef

+# wrappers for boards that have 4MB, 8MB and 16MB versions
+define BuildFirmware/DefaultThreeSize/squashfs
+	$(call BuildFirmware/Default4M/$(1),$(1),$(2)-4M,$(3)-4M)
+	$(call BuildFirmware/Default8M/$(1),$(1),$(2)-8M,$(3)-8M)
+	$(call BuildFirmware/Default16M/$(1),$(1),$(2)-16M,$(3)-16M)
+endef
+define BuildFirmware/DefaultThreeSize/initramfs
+	$(call BuildFirmware/OF/initramfs,$(1),$(2)-4M,$(3)-4M)
+	$(call BuildFirmware/OF/initramfs,$(1),$(2)-8M,$(3)-8M)
+	$(call BuildFirmware/OF/initramfs,$(1),$(2)-16M,$(3)-16M)
+endef
+
 # build Seama header images
 define BuildFirmware/Seama/squashfs
 	$(call MkImageLzmaDtb,$(2),$(3),$(5))
@@ -239,6 +255,25 @@  define BuildFirmware/PorayDualSize/squashfs
 endef
 BuildFirmware/PorayDualSize/initramfs=$(call
BuildFirmware/DefaultDualSize/initramfs,$(1),$(2),$(3))

+define BuildFirmware/PorayThreeSize/squashfs
+	$(call BuildFirmware/DefaultThreeSize/$(1),$(1),$(2),$(3))
+	if [ -e "$(call sysupname,$(1),$(2)-4M)" ]; then \
+		mkporayfw -B $(3) -F 4M \
+			-f $(call sysupname,$(1),$(2)-4M) \
+			-o $(call imgname,$(1),$(2)-4M)-factory.bin; \
+	fi
+	if [ -e "$(call sysupname,$(1),$(2)-8M)" ]; then \
+		mkporayfw -B $(3) -F 8M \
+			-f $(call sysupname,$(1),$(2)-8M) \
+			-o $(call imgname,$(1),$(2)-8M)-factory.bin; \
+	fi
+	if [ -e "$(call sysupname,$(1),$(2)-16M)" ]; then \
+		mkporayfw -B $(3) -F 16M \
+			-f $(call sysupname,$(1),$(2)-16M) \
+			-o $(call imgname,$(1),$(2)-16M)-factory.bin; \
+	fi
+endef
+BuildFirmware/PorayThreeSize/initramfs=$(call
BuildFirmware/DefaultThreeSize/initramfs,$(1),$(2),$(3))

 ifeq ($(SUBTARGET),rt288x)
 include rt288x.mk
diff --git a/openwrt/target/linux/ramips/image/mt7620.mk
b/openwrt_wt3020-16MB/target/linux/ramips/image/mt7620.mk
index 09c0ec2..539149d 100644
--- a/openwrt/target/linux/ramips/image/mt7620.mk
+++ b/openwrt_wt3020-16MB/target/linux/ramips/image/mt7620.mk
@@ -116,7 +116,7 @@  Image/Build/Profile/WMR-300=$(call
BuildFirmware/Default8M/$(1),$(1),wmr-300,WMR
 Image/Build/Profile/RT-N14U=$(call
BuildFirmware/Default8M/$(1),$(1),rt-n14u,RT-N14U)
 Image/Build/Profile/WRH-300CR=$(call
BuildFirmware/WRH-300CR/$(1),$(1),wrh-300cr,WRH-300CR)
 Image/Build/Profile/WRTNODE=$(call
BuildFirmware/Default16M/$(1),$(1),wrtnode,WRTNODE)
-Image/Build/Profile/WT3020=$(call
BuildFirmware/PorayDualSize/$(1),$(1),wt3020,WT3020)
+Image/Build/Profile/WT3020=$(call
BuildFirmware/PorayThreeSize/$(1),$(1),wt3020,WT3020)
 Image/Build/Profile/MIWIFI-MINI=$(call
BuildFirmware/Default16M/$(1),$(1),miwifi-mini,MIWIFI-MINI)
 Image/Build/Profile/GL-MT300A=$(call
BuildFirmware/Default16M/$(1),$(1),gl-mt300a,GL-MT300A)
 Image/Build/Profile/GL-MT300N=$(call
BuildFirmware/Default16M/$(1),$(1),gl-mt300n,GL-MT300N)
diff --git a/openwrt/tools/firmware-utils/src/mkporayfw.c
b/openwrt_wt3020-16MB/tools/firmware-utils/src/mkporayfw.c
index 6ec4f32..1463e03 100644
--- a/openwrt/tools/firmware-utils/src/mkporayfw.c
+++ b/openwrt_wt3020-16MB/tools/firmware-utils/src/mkporayfw.c
@@ -136,6 +136,10 @@  static struct flash_layout layouts[] = {
 		.id		= "8M",
 		.fw_max_len	= 0x7c0000,
 	}, {
+		.id		= "16M",
+		.fw_max_len	= 0xfc0000,
+	}, {
 		/* terminating entry */
 	}
 };