ramips: consolidate Netgear devices for mt7628
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>
Fri, 10 Jul 2020 10:00:08 +0000 (12:00 +0200)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Mon, 13 Jul 2020 08:37:22 +0000 (10:37 +0200)
This creates a common DTSI and shared image definition for the
relatively similar Netgear devices for mt7628 platform.

As a side effect, this raises SPI flash frequency for the R6120,
as it's expected to work there as well if it works for R6080 and
R6020.

Based on the data from the other devices, it also seems probable
the 5g MAC address for R6120 could be extracted from the caldata,
and the mtd-mac-address there could be dropped.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
target/linux/ramips/dts/mt7628an_netgear_r6020.dts
target/linux/ramips/dts/mt7628an_netgear_r6080.dts
target/linux/ramips/dts/mt7628an_netgear_r6120.dts
target/linux/ramips/dts/mt7628an_netgear_r6xxx.dtsi [new file with mode: 0644]
target/linux/ramips/image/Makefile
target/linux/ramips/image/mt7621.mk
target/linux/ramips/image/mt76x8.mk

index 83a751c2f734d13ea4add2f20d1011717efb6d8b..b0be381ecaa9f45d90d2a4ac3b5ab84c24381a8f 100644 (file)
@@ -1,10 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 /dts-v1/;
 
-#include "mt7628an.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#include "mt7628an_netgear_r6xxx.dtsi"
 
 / {
        compatible = "netgear,r6020", "mediatek,mt7628an-soc";
                led-upgrade = &led_power;
        };
 
-       keys {
-               compatible = "gpio-keys";
-
-               reset {
-                       label = "reset";
-                       gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_RESTART>;
-               };
-       };
-
        leds {
                compatible = "gpio-leds";
 
 
 &state_default {
        gpio {
-               groups = "p0led_an", "p1led_an", "p2led_an",
-                              "p3led_an", "p4led_an", "wdt",
-                              "wled_an";
+               groups = "p0led_an", "p1led_an", "p2led_an", "p3led_an",
+                        "p4led_an", "wdt", "wled_an";
                function = "gpio";
        };
 };
 
-&spi0 {
-       status = "okay";
-
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <86000000>;
-               m25p,fast-read;
-
-               partitions {
-                       compatible = "fixed-partitions";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0 0x40000>;
-                               read-only;
-                       };
-
-                       factory: partition@40000 {
-                               label = "factory";
-                               reg = <0x40000 0x20000>;
-                               read-only;
-                       };
-
-                       partition@60000 {
-                               label = "nvram";
-                               reg = <0x60000 0x30000>;
-                               read-only;
-                       };
-
-                       partition@90000 {
-                               compatible = "denx,uimage";
-                               label = "firmware";
-                               reg = <0x90000 0x6f0000>;
-                       };
-
-                       partition@780000 {
-                               label = "ML";
-                               reg = <0x780000 0x20000>;
-                               read-only;
-                       };
-
-                       partition@7a0000 {
-                               label = "ML1";
-                               reg = <0x7a0000 0x20000>;
-                               read-only;
-                       };
-
-                       partition@7c0000 {
-                               label = "ML2";
-                               reg = <0x7c0000 0x20000>;
-                               read-only;
-                       };
-
-                       partition@7e0000 {
-                               label = "POT";
-                               reg = <0x7e0000 0x10000>;
-                               read-only;
-                       };
-
-                       partition@7f0000 {
-                               label = "reserved";
-                               reg = <0x7f0000 0x10000>;
-                               read-only;
-                       };
-               };
+&partitions {
+       partition@90000 {
+               compatible = "denx,uimage";
+               label = "firmware";
+               reg = <0x90000 0x6f0000>;
        };
-};
 
-&wmac {
-       status = "okay";
-};
+       partition@780000 {
+               label = "ML";
+               reg = <0x780000 0x20000>;
+               read-only;
+       };
 
-&ethernet {
-       mtd-mac-address = <&factory 0x4>;
-};
+       partition@7a0000 {
+               label = "ML1";
+               reg = <0x7a0000 0x20000>;
+               read-only;
+       };
 
-&pcie {
-       status = "okay";
-};
+       partition@7c0000 {
+               label = "ML2";
+               reg = <0x7c0000 0x20000>;
+               read-only;
+       };
+
+       partition@7e0000 {
+               label = "POT";
+               reg = <0x7e0000 0x10000>;
+               read-only;
+       };
 
-&pcie0 {
-       wifi@0,0 {
-               reg = <0x0000 0 0 0 0>;
-               mediatek,mtd-eeprom = <&factory 0x8000>;
-               ieee80211-freq-limit = <5000000 6000000>;
+       partition@7f0000 {
+               label = "reserved";
+               reg = <0x7f0000 0x10000>;
+               read-only;
        };
 };
 
index 5bca023c71818d256d5961dae5b28de2d958cdc9..b56bab8b419ef2121a3dc660d0cd1c49d9bd6ef7 100644 (file)
@@ -1,10 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 /dts-v1/;
 
-#include "mt7628an.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#include "mt7628an_netgear_r6xxx.dtsi"
 
 / {
        compatible = "netgear,r6080", "mediatek,mt7628an-soc";
                label-mac-device = &ethernet;
        };
 
-       keys {
-               compatible = "gpio-keys";
-
-               reset {
-                       label = "reset";
-                       gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_RESTART>;
-               };
-       };
-
        leds {
                compatible = "gpio-leds";
 
        };
 };
 
-&spi0 {
-       status = "okay";
-
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <86000000>;
-               m25p,fast-read;
-
-               partitions {
-                       compatible = "fixed-partitions";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0 0x40000>;
-                               read-only;
-                       };
-
-                       factory: partition@40000 {
-                               label = "factory";
-                               reg = <0x40000 0x20000>;
-                               read-only;
-                       };
-
-                       partition@60000 {
-                               label = "nvram";
-                               reg = <0x60000 0x30000>;
-                               read-only;
-                       };
-
-                       partition@90000 {
-                               compatible = "denx,uimage";
-                               label = "firmware";
-                               reg = <0x90000 0x760000>;
-                       };
-
-                       partition@7f0000 {
-                               label = "reserved";
-                               reg = <0x7f0000 0x10000>;
-                               read-only;
-                       };
-               };
+&partitions {
+       partition@90000 {
+               compatible = "denx,uimage";
+               label = "firmware";
+               reg = <0x90000 0x760000>;
        };
-};
-
-&wmac {
-       status = "okay";
-};
-
-&ethernet {
-       mtd-mac-address = <&factory 0x4>;
-};
-
-&pcie {
-       status = "okay";
-};
 
-&pcie0 {
-       wifi@0,0 {
-               reg = <0x0000 0 0 0 0>;
-               mediatek,mtd-eeprom = <&factory 0x8000>;
-               ieee80211-freq-limit = <5000000 6000000>;
+       partition@7f0000 {
+               label = "reserved";
+               reg = <0x7f0000 0x10000>;
+               read-only;
        };
 };
 
index 191538100c4eee9b327685bb98673815c247033a..51e51db3ecb66efcdfde55aef8b782aa1eb40ecb 100644 (file)
@@ -1,9 +1,6 @@
 /dts-v1/;
 
-#include "mt7628an.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#include "mt7628an_netgear_r6xxx.dtsi"
 
 / {
        compatible = "netgear,r6120", "mediatek,mt7628an-soc";
                label-mac-device = &ethernet;
        };
 
-       keys {
-               compatible = "gpio-keys";
-
-               reset {
-                       label = "reset";
-                       gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_RESTART>;
-               };
-       };
-
        leds {
                compatible = "gpio-leds";
 
 
 &state_default {
        gpio {
-               groups = "p0led_an", "p1led_an", "p2led_an",
-                              "p3led_an", "p4led_an", "wdt",
-                              "wled_an", "uart1";
+               groups = "p0led_an", "p1led_an", "p2led_an", "p3led_an",
+                        "p4led_an", "wdt", "wled_an", "uart1";
                function = "gpio";
        };
 };
 
-&spi0 {
-       status = "okay";
-
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <10000000>;
-
-               partitions {
-                       compatible = "fixed-partitions";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0 0x40000>;
-                               read-only;
-                       };
-
-                       factory: partition@40000 {
-                               label = "factory";
-                               reg = <0x40000 0x20000>;
-                               read-only;
-                       };
-
-                       partition@60000 {
-                               label = "nvram";
-                               reg = <0x60000 0x30000>;
-                               read-only;
-                       };
-
-                       partition@90000 {
-                               compatible = "denx,uimage";
-                               label = "firmware";
-                               reg = <0x90000 0xf60000>;
-                       };
-
-                       partition@ff0000 {
-                               label = "reserved";
-                               reg = <0xff0000 0x10000>;
-                               read-only;
-                       };
-               };
+&partitions {
+       partition@90000 {
+               compatible = "denx,uimage";
+               label = "firmware";
+               reg = <0x90000 0xf60000>;
        };
-};
 
-&wmac {
-       status = "okay";
+       partition@ff0000 {
+               label = "reserved";
+               reg = <0xff0000 0x10000>;
+               read-only;
+       };
 };
 
-&ethernet {
+&wifi5 {
        mtd-mac-address = <&factory 0x4>;
-};
-
-&pcie {
-       status = "okay";
-};
-
-&pcie0 {
-       wifi@0,0 {
-               reg = <0x0000 0 0 0 0>;
-               mediatek,mtd-eeprom = <&factory 0x8000>;
-               ieee80211-freq-limit = <5000000 6000000>;
-               mtd-mac-address = <&factory 0x4>;
-               mtd-mac-address-increment = <(2)>;
-       };
+       mtd-mac-address-increment = <(2)>;
 };
diff --git a/target/linux/ramips/dts/mt7628an_netgear_r6xxx.dtsi b/target/linux/ramips/dts/mt7628an_netgear_r6xxx.dtsi
new file mode 100644 (file)
index 0000000..640591c
--- /dev/null
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7628an.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+};
+
+&spi0 {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <86000000>;
+               m25p,fast-read;
+
+               partitions: partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "u-boot";
+                               reg = <0x0 0x40000>;
+                               read-only;
+                       };
+
+                       factory: partition@40000 {
+                               label = "factory";
+                               reg = <0x40000 0x20000>;
+                               read-only;
+                       };
+
+                       partition@60000 {
+                               label = "nvram";
+                               reg = <0x60000 0x30000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&wmac {
+       status = "okay";
+};
+
+&ethernet {
+       mtd-mac-address = <&factory 0x4>;
+};
+
+&pcie {
+       status = "okay";
+};
+
+&pcie0 {
+       wifi5: wifi@0,0 {
+               reg = <0x0000 0 0 0 0>;
+               mediatek,mtd-eeprom = <&factory 0x8000>;
+               ieee80211-freq-limit = <5000000 6000000>;
+       };
+};
index 3ee9828a646683cfda303740e83cc3da9097fa0d..d72d937ab82824ac7adad09c130cbbb5a1da33a5 100644 (file)
@@ -11,7 +11,7 @@ DEVICE_VARS += LOADER_TYPE
 DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_HW_ID
 DEVICE_VARS += BUFFALO_TAG_PLATFORM BUFFALO_TAG_VERSION BUFFALO_TAG_MINOR
 DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
-DEVICE_VARS += SERCOMM_HWID SERCOMM_HWVER SERCOMM_SWVER
+DEVICE_VARS += SERCOMM_HWNAME SERCOMM_HWID SERCOMM_HWVER SERCOMM_SWVER
 DEVICE_VARS += JCG_MAXSIZE
 
 loadaddr-y := 0x80000000
index 25de2fa5973163417fb843370c6979bb5239f81d..9e5bd811b01ccd2214ef292cf17ef380b28cd7d9 100644 (file)
@@ -7,7 +7,7 @@ include ./common-tp-link.mk
 DEFAULT_SOC := mt7621
 
 KERNEL_DTB += -d21
-DEVICE_VARS += UIMAGE_MAGIC SERCOMM_HWNAME
+DEVICE_VARS += UIMAGE_MAGIC
 
 # The OEM webinterface expects an kernel with initramfs which has the uImage
 # header field ih_name.
index de92c982cc3ef64ef446b1387d3840eb0f419f10..4b2255bd6ac38db496df53be3c18dbc61250efd8 100644 (file)
@@ -189,60 +189,51 @@ define Device/mercury_mac1200r-v2
 endef
 TARGET_DEVICES += mercury_mac1200r-v2
 
-define Device/netgear_r6020
+define Device/netgear_r6xxx
   BLOCKSIZE := 64k
-  IMAGE_SIZE := 7104k
   DEVICE_VENDOR := NETGEAR
-  DEVICE_MODEL := R6020
-  DEVICE_PACKAGES := kmod-mt76x2
-  SERCOMM_HWID := CFR
-  SERCOMM_HWVER := A001
-  SERCOMM_SWVER := 0x0040
   IMAGES += factory.img
   IMAGE/default := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | \
        pad-rootfs
   IMAGE/sysupgrade.bin := $$(IMAGE/default) | append-metadata | check-size
   IMAGE/factory.img := pad-extra 576k | $$(IMAGE/default) | \
-       pad-to $$$$(BLOCKSIZE) | sercom-footer | pad-to 128 | zip R6020.bin | \
-       sercom-seal
+       pad-to $$$$(BLOCKSIZE) | sercom-footer | pad-to 128 | \
+       zip $$$$(SERCOMM_HWNAME).bin | sercom-seal
+endef
+
+define Device/netgear_r6020
+  $(Device/netgear_r6xxx)
+  IMAGE_SIZE := 7104k
+  DEVICE_MODEL := R6020
+  DEVICE_PACKAGES := kmod-mt76x2
+  SERCOMM_HWNAME := R6020
+  SERCOMM_HWID := CFR
+  SERCOMM_HWVER := A001
+  SERCOMM_SWVER := 0x0040
 endef
 TARGET_DEVICES += netgear_r6020
 
 define Device/netgear_r6080
-  BLOCKSIZE := 64k
+  $(Device/netgear_r6xxx)
   IMAGE_SIZE := 7552k
-  DEVICE_VENDOR := NETGEAR
   DEVICE_MODEL := R6080
   DEVICE_PACKAGES := kmod-mt76x2
+  SERCOMM_HWNAME := R6080
   SERCOMM_HWID := CFR
   SERCOMM_HWVER := A001
   SERCOMM_SWVER := 0x0040
-  IMAGES += factory.img
-  IMAGE/default := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | \
-       pad-rootfs
-  IMAGE/sysupgrade.bin := $$(IMAGE/default) | append-metadata | check-size
-  IMAGE/factory.img := pad-extra 576k | $$(IMAGE/default) | \
-       pad-to $$$$(BLOCKSIZE) | sercom-footer | pad-to 128 | zip R6080.bin | \
-       sercom-seal
 endef
 TARGET_DEVICES += netgear_r6080
 
 define Device/netgear_r6120
-  BLOCKSIZE := 64k
+  $(Device/netgear_r6xxx)
   IMAGE_SIZE := 15744k
-  DEVICE_VENDOR := NETGEAR
   DEVICE_MODEL := R6120
   DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci
+  SERCOMM_HWNAME := R6120
   SERCOMM_HWID := CGQ
   SERCOMM_HWVER := A001
   SERCOMM_SWVER := 0x0040
-  IMAGES += factory.img
-  IMAGE/default := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | \
-       pad-rootfs
-  IMAGE/sysupgrade.bin := $$(IMAGE/default) | append-metadata | check-size
-  IMAGE/factory.img := pad-extra 576k | $$(IMAGE/default) | \
-       pad-to $$$$(BLOCKSIZE) | sercom-footer | pad-to 128 | zip R6120.bin | \
-       sercom-seal
 endef
 TARGET_DEVICES += netgear_r6120