<div dir="ltr"><pre><code>A little HW-mod applied to WT3020 makes it more usable.<br></code></pre><pre><code>Some people can buy it and need an updated OpenWRT.<br></code></pre><pre><code><br>Signed-off-by: Dmitry Antonov <<a href="mailto:dantonov@gmail.com" target="_blank">dantonov@gmail.com</a>><br>---<br><br>diff --git a/openwrt_wt3020-16MB/target/linux/ramips/dts/WT3020-16M.dts b/openwrt_wt3020-16MB/target/linux/ramips/dts/WT3020-16M.dts<br>new file mode 100644<br>index 0000000..ff13560<br>--- /dev/null<br>+++ b/openwrt_wt3020-16MB/target/linux/ramips/dts/WT3020-16M.dts<br>@@ -0,0 +1,102 @@<br>+/dts-v1/;<br>+<br>+/include/ "mt7620n.dtsi"<br>+<br>+/ {<br>+   compatible = "wt3020", "ralink,mt7620n-soc";<br>+     model = "Nexx WT3020";<br>+<br>+  palmbus@10000000 {<br>+           gpio2: gpio@660 {<br>+                    status = "okay";<br>+           };<br>+<br>+                gpio3: gpio@688 {<br>+                    status = "okay";<br>+           };<br>+<br>+                spi@b00 {<br>+                    status = "okay";<br>+<br>+                        m25p80@0 {<br>+                           #address-cells = <1>;<br>+                          #size-cells = <1>;<br>+                             compatible = "jedec,spi-nor";<br>+                              reg = <0 0>;<br>+                           linux,modalias = "m25p80", "w25q128";<br>+                            spi-max-frequency = <10000000>;<br>+<br>+                             partition@0 {<br>+                                        label = "u-boot";<br>+                                  reg = <0x0 0x30000>;<br>+                                   read-only;<br>+                           };<br>+<br>+                                partition@30000 {<br>+                                    label = "u-boot-env";<br>+                                      reg = <0x30000 0x10000>;<br>+                                       read-only;<br>+                           };<br>+<br>+                                factory: partition@40000 {<br>+                                   label = "factory";<br>+                                 reg = <0x40000 0x10000>;<br>+                                       read-only;<br>+                           };<br>+<br>+                                partition@50000 {<br>+                                    label = "firmware";<br>+                                        reg = <0x50000 0xfb0000>;<br>+                              };<br>+                   };<br>+           };<br>+   };<br>+<br>+        ehci@101c0000 {<br>+              status = "okay";<br>+   };<br>+<br>+        ohci@101c1000 {<br>+              status = "okay";<br>+   };<br>+<br>+        ethernet@10100000 {<br>+          mtd-mac-address = <&factory 0x4>;<br>+          mediatek,portmap = "wllll";<br>+        };<br>+<br>+        wmac@10180000 {<br>+              ralink,mtd-eeprom = <&factory 0>;<br>+  };<br>+<br>+        pinctrl {<br>+            state_default: pinctrl0 {<br>+                    default {<br>+                            ralink,group = "ephy", "wled", "pa", "i2c", "wdt", "uartf";<br>+                              ralink,function = "gpio";<br>+                  };<br>+           };<br>+   };<br>+<br>+        gpio-keys-polled {<br>+           compatible = "gpio-keys-polled";<br>+           #address-cells = <1>;<br>+          #size-cells = <0>;<br>+             poll-interval = <20>;<br>+<br>+               reset {<br>+                      label = "reset";<br>+                   gpios = <&gpio0 1 1>;<br>+                      linux,code = <0x198>;<br>+          };<br>+   };<br>+<br>+        gpio-leds {<br>+          compatible = "gpio-leds";<br>+<br>+               power {<br>+                      label = "wt3020:blue:power";<br>+                       gpios = <&gpio3 0 0>;<br>+              };<br>+   };<br>+};<br>diff --git a/openwrt/target/linux/ramips/image/Makefile b/openwrt_wt3020-16MB/target/linux/ramips/image/Makefile<br>index 6e0349f..1d78c86 100644<br>--- a/openwrt/target/linux/ramips/image/Makefile<br>+++ b/openwrt_wt3020-16MB/target/linux/ramips/image/Makefile<br>@@ -145,24 +145,28 @@ endef<br> # $(1) = squashfs/initramfs<br> # $(2) = lowercase board name<br> # $(3) = dts file<br>+# $(4) = uImage header name field<br> ralink_default_fw_size_4M=3866624<br> BuildFirmware/Default4M/squashfs=$(call BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_4M),$(4))<br> BuildFirmware/Default4M/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))<br> <br> # Build images for default ralink layout for 8MB flash<br> # kernel + roots = 0x7b0000<br>-# $(1) = squashfs/initramfs<br>-# $(2) = lowercase board name<br>-# $(3) = dts file<br>-# $(4) = uImage header name field<br>+# parameters' descriptions the same as "... for 4MB flash"<br> ralink_default_fw_size_8M=8060928<br> BuildFirmware/Default8M/squashfs=$(call BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_8M),$(4))<br> BuildFirmware/Default8M/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))<br> <br>-ralink_default_fw_size_16M=16121856<br>+# Build images for default ralink layout for 16MB flash<br>+# kernel + roots = 0xfb0000<br>+# parameters' descriptions the same as "... for 4MB flash"<br>+ralink_default_fw_size_16M=16449536<br> BuildFirmware/Default16M/squashfs=$(call BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_16M),$(4))<br> BuildFirmware/Default16M/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))<br> <br>+# Build images for default ralink layout for 32MB flash<br>+# kernel + roots = 0x1fb0000<br>+# parameters' descriptions the same as "... for 4MB flash"<br> ralink_default_fw_size_32M=33226752<br> BuildFirmware/Default32M/squashfs=$(call BuildFirmware/OF,$(1),$(2),$(3),$(ralink_default_fw_size_32M),$(4))<br> BuildFirmware/Default32M/initramfs=$(call BuildFirmware/OF/initramfs,$(1),$(2),$(3),$(4))<br>@@ -192,6 +196,18 @@ define BuildFirmware/DefaultDualSize/initramfs<br>      $(call BuildFirmware/OF/initramfs,$(1),$(2)-8M,$(3)-8M)<br> endef<br> <br>+# wrappers for boards that have 4MB, 8MB and 16MB versions<br>+define BuildFirmware/DefaultThreeSize/squashfs<br>+     $(call BuildFirmware/Default4M/$(1),$(1),$(2)-4M,$(3)-4M)<br>+    $(call BuildFirmware/Default8M/$(1),$(1),$(2)-8M,$(3)-8M)<br>+    $(call BuildFirmware/Default16M/$(1),$(1),$(2)-16M,$(3)-16M)<br>+endef<br>+define BuildFirmware/DefaultThreeSize/initramfs<br>+       $(call BuildFirmware/OF/initramfs,$(1),$(2)-4M,$(3)-4M)<br>+      $(call BuildFirmware/OF/initramfs,$(1),$(2)-8M,$(3)-8M)<br>+      $(call BuildFirmware/OF/initramfs,$(1),$(2)-16M,$(3)-16M)<br>+endef<br>+<br> # build Seama header images<br> define BuildFirmware/Seama/squashfs<br>      $(call MkImageLzmaDtb,$(2),$(3),$(5))<br>@@ -239,6 +255,25 @@ define BuildFirmware/PorayDualSize/squashfs<br> endef<br> BuildFirmware/PorayDualSize/initramfs=$(call BuildFirmware/DefaultDualSize/initramfs,$(1),$(2),$(3))<br> <br>+define BuildFirmware/PorayThreeSize/squashfs<br>+     $(call BuildFirmware/DefaultThreeSize/$(1),$(1),$(2),$(3))<br>+   if [ -e "$(call sysupname,$(1),$(2)-4M)" ]; then \<br>+         mkporayfw -B $(3) -F 4M \<br>+                    -f $(call sysupname,$(1),$(2)-4M) \<br>+                  -o $(call imgname,$(1),$(2)-4M)-factory.bin; \<br>+       fi<br>+   if [ -e "$(call sysupname,$(1),$(2)-8M)" ]; then \<br>+         mkporayfw -B $(3) -F 8M \<br>+                    -f $(call sysupname,$(1),$(2)-8M) \<br>+                  -o $(call imgname,$(1),$(2)-8M)-factory.bin; \<br>+       fi<br>+   if [ -e "$(call sysupname,$(1),$(2)-16M)" ]; then \<br>+                mkporayfw -B $(3) -F 16M \<br>+                   -f $(call sysupname,$(1),$(2)-16M) \<br>+                 -o $(call imgname,$(1),$(2)-16M)-factory.bin; \<br>+      fi<br>+endef<br>+BuildFirmware/PorayThreeSize/initramfs=$(call BuildFirmware/DefaultThreeSize/initramfs,$(1),$(2),$(3))<br> <br> ifeq ($(SUBTARGET),rt288x)<br> include <a href="http://rt288x.mk" target="_blank">rt288x.mk</a><br>diff --git a/openwrt/target/linux/ramips/image/<a href="http://mt7620.mk" target="_blank">mt7620.mk</a> b/openwrt_wt3020-16MB/target/linux/ramips/image/<a href="http://mt7620.mk" target="_blank">mt7620.mk</a><br>index 09c0ec2..539149d 100644<br>--- a/openwrt/target/linux/ramips/image/<a href="http://mt7620.mk" target="_blank">mt7620.mk</a><br>+++ b/openwrt_wt3020-16MB/target/linux/ramips/image/<a href="http://mt7620.mk" target="_blank">mt7620.mk</a><br>@@ -116,7 +116,7 @@ Image/Build/Profile/WMR-300=$(call BuildFirmware/Default8M/$(1),$(1),wmr-300,WMR<br> Image/Build/Profile/RT-N14U=$(call BuildFirmware/Default8M/$(1),$(1),rt-n14u,RT-N14U)<br> Image/Build/Profile/WRH-300CR=$(call BuildFirmware/WRH-300CR/$(1),$(1),wrh-300cr,WRH-300CR)<br> Image/Build/Profile/WRTNODE=$(call BuildFirmware/Default16M/$(1),$(1),wrtnode,WRTNODE)<br>-Image/Build/Profile/WT3020=$(call BuildFirmware/PorayDualSize/$(1),$(1),wt3020,WT3020)<br>+Image/Build/Profile/WT3020=$(call BuildFirmware/PorayThreeSize/$(1),$(1),wt3020,WT3020)<br> Image/Build/Profile/MIWIFI-MINI=$(call BuildFirmware/Default16M/$(1),$(1),miwifi-mini,MIWIFI-MINI)<br> Image/Build/Profile/GL-MT300A=$(call BuildFirmware/Default16M/$(1),$(1),gl-mt300a,GL-MT300A)<br> Image/Build/Profile/GL-MT300N=$(call BuildFirmware/Default16M/$(1),$(1),gl-mt300n,GL-MT300N)<br>diff --git a/openwrt/tools/firmware-utils/src/mkporayfw.c b/openwrt_wt3020-16MB/tools/firmware-utils/src/mkporayfw.c<br>index 6ec4f32..1463e03 100644<br>--- a/openwrt/tools/firmware-utils/src/mkporayfw.c<br>+++ b/openwrt_wt3020-16MB/tools/firmware-utils/src/mkporayfw.c<br>@@ -136,6 +136,10 @@ static struct flash_layout layouts[] = {<br>            .id             = "8M",<br>             .fw_max_len     = 0x7c0000,<br>   }, {<br>+         .id             = "16M",<br>+           .fw_max_len     = 0xfc0000,<br>+  }, {<br>          /* terminating entry */<br>       }<br> };</code></pre></div>