[openwrt/openwrt] ramips: add support for Senao Engenius EPG600

LEDE Commits lede-commits at lists.infradead.org
Sat Feb 18 07:57:16 PST 2023


hauke pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/4ef86c620f03b3b8b3220d11f77948e7a10469d8

commit 4ef86c620f03b3b8b3220d11f77948e7a10469d8
Author: Michael Pratt <mcpratt at pm.me>
AuthorDate: Mon Apr 19 15:45:32 2021 -0400

    ramips: add support for Senao Engenius EPG600
    
    FCC ID: A8J-EPG600
    
    Engenius EPG600 is an indoor wireless router with
    1 Gb ethernet switch, dual-band wireless,
    internal antenna plates, USB, and phone lines (not supported)
    
    this board is a Senao device:
    the hardware is equivalent to EnGenius ESR600 (except for phone lines)
    the software is Senao SDK which is based on openwrt and uboot
    which uses the legacy Senao header with Vendor / Product IDs
    to verify the firmware upgrade image.
    
    **Specification:**
    
      - MT7620 SOC          MIPS 24kec, 2.4 GHz WMAC, 2x2
      - RT5592N WLAN        PCI chip, 5 GHz, 2x2
      - QCA8337N Gb SW      RGMII GbE, SW P0 -- SOC P5, 5 LEDs
      - 40 MHz clock
      - 16 MB FLASH         MX25L12845EMI-10G
      - 64 MB RAM           NT5TU32M16
      - UART console        J2, populated
      - USB 2.0 port        direct to SOC
      - 6 GPIO LEDs         power, 2G, 5G, wps2g, wps5g, line
      - 3 buttons           reset, wps, "reg" (registeration)
      - 4 antennas          internal omni-directional plates
    
    NOT YET SUPPORTED: VoIP
    
      - Si3050-FT + Si3019-FT       Voice DAA, SPI control, PCM data
      - Phone Ports "TEL", "LINE"   RJ11, 4P2C (2 pins)
    
    **MAC addresses:**
    
      MAC address labeled as MAC ADDRESS
      MACs present in both wifi cal data and uboot environment
    
      eth0.1/phy1   ----    *:82    rf 0x4
      phy0          ----    *:83    factory 0x4
      eth0.2        MAC     *:b8    "wanaddr"
    
    **Installation:**
    
      Method 1: Firmware upgrade page:
    
        (if you cannot access the APs webpage)
        factory reset with the reset button
        connect ethernet to a computer
        OEM webpage at 192.168.0.1
        username and password 'admin'
    
        Navigate to gear icon, "Device Management", "Tools"
        select the factory.dlf image
        Upload and verify checksum
    
      Method 2: Serial to upload initramfs:
    
        Follow directions for TFTP recovery
        upload and boot initramfs and do a sysupgrade
    
    **TFTP recovery:**
    
      Requires UART serial console, reset button does nothing
    
      rename initramfs-kernel.bin to 'uImageEPG600'
      make available on TFTP server at 192.168.99.8
      power board, interrupt boot with "4"
      execute `tftpboot` and `bootm` (with the load address)
    
    **Return to OEM:**
    
      Images from OEM are provided, but not compatible
      with openwrt sysupgrade. So it must be modified.
    
      Alternatively, back up all mtd partitions before flashing
    
    **Note on switch registers:**
    
      The necessary registers needed for the QCA8337 switch
      can be read from interrupted boot (tftpboot, bootm)
      by using the following lines in the switch driver ar8327.c
      in the function 'ar8327_hw_config_of'
      where 'qca,ar8327-initvals' is parsed from DTS
      before the new register values are written:
    
        pr_info("0x04 %08x\n", ar8xxx_read(priv, AR8327_REG_PAD0_MODE));
        pr_info("0x08 %08x\n", ar8xxx_read(priv, AR8327_REG_PAD5_MODE));
        pr_info("0x0c %08x\n", ar8xxx_read(priv, AR8327_REG_PAD6_MODE));
        pr_info("0x10 %08x\n", ar8xxx_read(priv, AR8327_REG_POWER_ON_STRAP));
    
    Signed-off-by: Michael Pratt <mcpratt at pm.me>
---
 package/boot/uboot-envtools/files/ramips           |   1 +
 .../linux/ramips/dts/mt7620a_engenius_epg600.dts   | 228 +++++++++++++++++++++
 target/linux/ramips/image/mt7620.mk                |  15 ++
 .../mt7620/base-files/etc/board.d/02_network       |   2 +
 4 files changed, 246 insertions(+)

diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips
index 812bd18116..350330779c 100644
--- a/package/boot/uboot-envtools/files/ramips
+++ b/package/boot/uboot-envtools/files/ramips
@@ -17,6 +17,7 @@ alfa-network,awusfree1|\
 alfa-network,quad-e4g|\
 alfa-network,r36m-e4g|\
 alfa-network,tube-e4g|\
+engenius,epg600|\
 engenius,esr600h|\
 sitecom,wlr-4100-v1-002)
 	ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x1000"
diff --git a/target/linux/ramips/dts/mt7620a_engenius_epg600.dts b/target/linux/ramips/dts/mt7620a_engenius_epg600.dts
new file mode 100644
index 0000000000..311103f3e8
--- /dev/null
+++ b/target/linux/ramips/dts/mt7620a_engenius_epg600.dts
@@ -0,0 +1,228 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7620a.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+	compatible = "engenius,epg600", "ralink,mt7620a-soc";
+	model = "EnGenius EPG600";
+
+	aliases {
+		led-boot = &led_power;
+		led-failsafe = &led_power;
+		led-running = &led_power;
+		led-upgrade = &led_power;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+
+		reg {
+			linux,code = <BTN_0>;
+			gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_power: power {
+			label = "amber:power";
+			gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
+			default-state = "on";
+		};
+
+		wlan2g {
+			label = "blue:wlan2g";
+			gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1tpt";
+		};
+
+		wlan5g {
+			label = "blue:wlan5g";
+			gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
+		};
+
+		wps2g {
+			label = "blue:wps2g";
+			gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
+		};
+
+		wps5g {
+			label = "amber:wps5g";
+			gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
+		};
+
+		line {
+			label = "blue:line";
+			gpios = <&gpio2 14 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&gpio1 {
+	status = "okay";
+};
+
+&gpio2 {
+	status = "okay";
+};
+
+&gpio3 {
+	status = "okay";
+};
+
+&spi0 {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <30000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x0 0x30000>;
+				read-only;
+			};
+
+			partition at 30000 {
+				label = "u-boot-env";
+				reg = <0x30000 0x10000>;
+			};
+
+			factory: partition at 40000 {
+				label = "factory";
+				reg = <0x40000 0x10000>;
+				read-only;
+			};
+
+			rf: partition at 50000 {
+				label = "rf";
+				reg = <0x50000 0x10000>;
+				read-only;
+			};
+
+			partition at 60000 {
+				label = "firmware";
+				reg = <0x60000 0xf40000>;
+				compatible = "denx,uimage";
+			};
+
+			partition at fa0000 {
+				label = "backup";
+				reg = <0xfa0000 0x10000>;
+				read-only;
+			};
+
+			partition at fb0000 {
+				label = "storage";
+				reg = <0xfb0000 0x50000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&ethernet {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mdio_pins &rgmii1_pins &rgmii2_pins>;
+
+	nvmem-cells = <&macaddr_rf_4>;
+	nvmem-cell-names = "mac-address";
+
+	port at 5 {
+		status = "okay";
+
+		phy-mode = "rgmii-txid";
+
+		mediatek,fixed-link = <1000 1 1 1>;
+	};
+
+	mdio-bus {
+		status = "okay";
+
+		ethernet-phy at 0 {
+			reg = <0>;
+			phy-mode = "rgmii";
+
+			qca,ar8327-initvals = <
+				0x04 0x07600000 /* PORT0 PAD MODE CTRL */
+				0x08 0x01000000 /* PORT5 PAD MODE CTRL */
+				0x0c 0x07600000 /* PORT6 PAD MODE CTRL */
+				0x10 0x40000000 /* POWER-ON STRAPPING  */
+				0x7c 0x0000007e /* PORT0_STATUS */
+				0x94 0x0000007e /* PORT6_STATUS */
+			>;
+		};
+	};
+};
+
+&gsw {
+	mediatek,ephy-disable;
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie0 {
+	wifi at 0,1,0 {
+		compatible = "pci1814,3091";
+		reg = <0x0 1 0 0 0>;
+		ralink,mtd-eeprom = <&factory 0x0>;
+	};
+};
+
+&wmac {
+	ralink,mtd-eeprom = <&rf 0x0>;
+};
+
+&ehci {
+	status = "okay";
+};
+
+&ohci {
+	status = "okay";
+};
+
+&state_default {
+	default {
+		groups = "ephy", "wled", "spi refclk", "i2c", "uartf", "nd_sd";
+		function = "gpio";
+	};
+};
+
+&rf {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_rf_4: macaddr at 4 {
+		reg = <0x4 0x6>;
+	};
+};
diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
index e723fe93e0..6e528a930b 100644
--- a/target/linux/ramips/image/mt7620.mk
+++ b/target/linux/ramips/image/mt7620.mk
@@ -446,6 +446,21 @@ define Device/elecom_wrh-300cr
 endef
 TARGET_DEVICES += elecom_wrh-300cr
 
+define Device/engenius_epg600
+  $(Device/uimage-lzma-loader)
+  SOC := mt7620a
+  BLOCKSIZE := 4k
+  IMAGE_SIZE := 15616k
+  IMAGES += factory.dlf
+  IMAGE/factory.dlf := $$(sysupgrade_bin) | check-size | \
+	senao-header -r 0x101 -p 0x6a -t 2
+  DEVICE_VENDOR := EnGenius
+  DEVICE_MODEL := EPG600
+  DEVICE_PACKAGES += kmod-rt2800-pci kmod-usb-storage \
+	kmod-usb-ohci kmod-usb2 uboot-envtools
+endef
+TARGET_DEVICES += engenius_epg600
+
 define Device/engenius_esr600
   SOC := mt7620a
   BLOCKSIZE := 64k
diff --git a/target/linux/ramips/mt7620/base-files/etc/board.d/02_network b/target/linux/ramips/mt7620/base-files/etc/board.d/02_network
index 424e370996..a55a8ed356 100644
--- a/target/linux/ramips/mt7620/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt7620/base-files/etc/board.d/02_network
@@ -149,6 +149,7 @@ ramips_setup_interfaces()
 		ucidef_add_switch "switch1" \
 			"1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "6 at eth0"
 		;;
+	engenius,epg600|\
 	engenius,esr600|\
 	lava,lr-25g001|\
 	sitecom,wlr-4100-v1-002)
@@ -332,6 +333,7 @@ ramips_setup_macs()
 	edimax,br-6478ac-v2)
 		wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory 0x4)" 2)
 		;;
+	engenius,epg600|\
 	engenius,esr600)
 		lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
 		wan_mac=$(mtd_get_mac_ascii u-boot-env wanaddr)




More information about the lede-commits mailing list