Device specifications:

Device specifications:
* SoC:  Qualcomm dual-core IPQ8064 @ 1.4 GHz
* RAM: 512MiB
* Flash: 4MiB SPI-NOR + 128 Nand
* Wireless 2.4GHz (SoC): b/g/n, Qualcomm QCA9880
* Wireless 5Ghz (QCA9886): a/n/ac, Quantenna QSR1000
* Ethernet (QCA8337): 1× 1GbE WAN + 4 x 1GbE LAN
* 1 x USB3.0 + 1 x USB2.0
* 1 eSata up to 3.0 Gbps

Flashing instructions:
* Upgrade with factory image via web interface

Debricking:
*  Get the original firmware: 
https://downloads.linksys.com/downloads/firmware/FW_E8350_1.0.03.003_20180929.bin
1. power off the device and disconnect the WAN port. (Only LAN port to be 
connected)
2. press & hold the “Reset” button
3. power on the deiece & wait for 10 seconds with pressed “Reset” button
- the Router will open Firmware Recovery “http” server on IP: 192.168.1.1
4. set IP on your PC from 192.168.1.0/24 network ( Router is on IP 192.168.1.1 )
5. open in browser URL:
http://192.168.1.1/index.shtml

MAC addresses:
MAC address (as on device label) is stored in u-boot env
WLAN uses address incremented by 1.

Signed-off-by: Todor Colov <todorco...@abv.bg>
---
 .../ipq806x/base-files/etc/board.d/01_leds    |   3 +
 .../ipq806x/base-files/etc/board.d/02_network |   1 +
 .../base-files/lib/upgrade/platform.sh        |   5 +
 .../arm/boot/dts/qcom-ipq8064-e8350-v1.dts    | 246 ++++++++++++++++++
 target/linux/ipq806x/image/Makefile           |  29 +++
 .../0069-arm-boot-add-dts-files.patch         |   3 +-
 6 files changed, 286 insertions(+), 1 deletion(-)
 create mode 100644 
target/linux/ipq806x/files-5.4/arch/arm/boot/dts/qcom-ipq8064-e8350-v1.dts

diff --git a/target/linux/ipq806x/base-files/etc/board.d/01_leds 
b/target/linux/ipq806x/base-files/etc/board.d/01_leds
index f8b6c32358..802fb41d74 100755
--- a/target/linux/ipq806x/base-files/etc/board.d/01_leds
+++ b/target/linux/ipq806x/base-files/etc/board.d/01_leds
@@ -19,6 +19,9 @@ compex,wpq864)
        ucidef_set_led_usbport "usb" "USB" "wpq864:green:usb" "usb1-port1" 
"usb2-port1"
        ucidef_set_led_usbport "pcie-usb" "PCIe USB" "wpq864:green:usb-pcie" 
"usb3-port1"
        ;;
+linksys,e8350-v1)
+        ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wifi" "phy0tpt"
+        ;;
 nec,wg2600hp)
        ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:green:wlan2g" 
"phy1tpt"
        ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:green:wlan5g" 
"phy0tpt"
diff --git a/target/linux/ipq806x/base-files/etc/board.d/02_network 
b/target/linux/ipq806x/base-files/etc/board.d/02_network
index 529a8d9f39..5e26fa2a8b 100755
--- a/target/linux/ipq806x/base-files/etc/board.d/02_network
+++ b/target/linux/ipq806x/base-files/etc/board.d/02_network
@@ -14,6 +14,7 @@ board=$(board_name)
 case "$board" in
 buffalo,wxr-2533dhp |\
 compex,wpq864 |\
+linksys,e8350-v1 |\
 netgear,d7800 |\
 netgear,r7500 |\
 netgear,r7500v2 |\
diff --git a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh 
b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
index 560e64af3a..34b9da47af 100644
--- a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
@@ -27,6 +27,11 @@ platform_do_upgrade() {
        zyxel,nbg6817)
                zyxel_do_upgrade "$1"
                ;;
+       linksys,e8350-v1)
+               # KERNEL_IN_UBI first remove metadata trailer from the UBI 
volume
+               /tmp/fwtool -q -t -i /dev/null "$1"
+               nand_do_upgrade "$1"
+               ;;
        linksys,ea7500-v1 |\
        linksys,ea8500)
                platform_do_upgrade_linksys "$1"
diff --git 
a/target/linux/ipq806x/files-5.4/arch/arm/boot/dts/qcom-ipq8064-e8350-v1.dts 
b/target/linux/ipq806x/files-5.4/arch/arm/boot/dts/qcom-ipq8064-e8350-v1.dts
new file mode 100644
index 0000000000..5b8cdd205d
--- /dev/null
+++ b/target/linux/ipq806x/files-5.4/arch/arm/boot/dts/qcom-ipq8064-e8350-v1.dts
@@ -0,0 +1,246 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+#include "qcom-ipq8064-v2.0.dtsi"
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+       model = "Linksys EA8350 V1 WiFi Router";
+       compatible = "linksys,e8350-v1", "qcom,ipq8064";
+
+       memory@0 {
+               reg = <0x42000000 0x1e000000>;
+               device_type = "memory";
+       };
+
+       aliases {
+               serial0 = &gsbi4_serial;
+
+               led-boot = &led_power;
+               led-failsafe = &led_power;
+               led-running = &led_power;
+               led-upgrade = &led_power;
+       };
+
+       keys {
+               compatible = "gpio-keys";
+               pinctrl-0 = <&button_pins>;
+               pinctrl-names = "default";
+
+               reset {
+                       label = "reset";
+                       gpios = <&qcom_pinmux 68 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+
+               wps {
+                       label = "wps";
+                       gpios = <&qcom_pinmux 65 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WPS_BUTTON>;
+               };
+
+               wifi {
+                       label = "wifi";
+                       gpios = <&qcom_pinmux 67 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RFKILL>;
+               };
+       };
+
+       nand-controller@1ac00000 {
+               compatible = "qcom,ipq806x-nand";
+               reg = <0x1ac00000 0x800>;
+               clocks = <&gcc EBI2_CLK>,
+                       <&gcc EBI2_AON_CLK>;
+               clock-names = "core", "aon";
+               dmas = <&adm_dma 3>;
+               dma-names = "rxtx";
+               qcom,cmd-crci = <15>;
+               qcom,data-crci = <3>;
+
+               nand@0 {
+                       reg = <0>;
+
+                       nand-ecc-strength = <4>;
+                       nand-bus-width = <8>;
+
+                       partitions {
+                               compatible = "fixed-partitions";
+
+                               partition@0 {
+                                       label = "ubi";
+                                       reg = <0 0x4000000>;
+                               };
+       
+                               partition@4000000 {
+                                       label = "extra";
+                                       reg = <0x4000000 0x4000000>;
+                               };
+                       };
+               };
+       };
+
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-0 = <&led_pins>;
+               pinctrl-names = "default";
+
+               led_power: power {
+                       label = "e8350-v1:green:power";
+                       gpios = <&qcom_pinmux 26 GPIO_ACTIVE_HIGH>;
+                       default-state = "keep";
+               };
+
+               wps {
+                       label = "e8350-v1:green:wps";
+                       gpios = <&qcom_pinmux 53 GPIO_ACTIVE_HIGH>;
+                };
+
+               wifi {
+                       label = "e8350-v1:green:wifi";
+                       gpios = <&qcom_pinmux 54 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&qcom_pinmux {
+       button_pins: button_pins {
+               mux {
+                       pins = "gpio68","gpio65", "gpio67";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       led_pins: led_pins {
+               mux {
+                       pins = "gpio26","gpio53", "gpio54";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+};
+
+&gsbi4 {
+       qcom,mode = <GSBI_PROT_I2C_UART>;
+       status = "okay";
+       serial@16340000 {
+               status = "okay";
+       };
+       /*
+       * The i2c device on gsbi4 should not be enabled.
+       * On ipq806x designs gsbi4 i2c is meant for exclusive
+       * RPM usage. Turning this on in kernel manifests as
+       * i2c failure for the RPM.
+       */
+};
+&gsbi5 {
+       qcom,mode = <GSBI_PROT_SPI>;
+       status = "okay";
+
+       spi5: spi@1a280000 {
+               status = "okay";
+
+               pinctrl-0 = <&spi_pins>;
+               pinctrl-names = "default";
+
+               cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;
+
+               m25p80@0 {
+                       compatible = "jedec,spi-nor";
+                       spi-max-frequency = <51200000>;
+                       reg = <0>;
+
+                       partitions {
+                               compatible = "qcom,smem";
+                       };
+               };
+       };
+};
+
+&sata_phy {
+       status = "okay";
+};
+
+&sata {
+       status = "okay";
+};
+
+&usb3_0 {
+       clocks = <&gcc USB30_1_MASTER_CLK>;
+       status = "okay";
+};
+
+&usb3_1 {
+       clocks = <&gcc USB30_0_MASTER_CLK>;
+       status = "okay";
+};
+
+&pcie0 {
+       status = "okay";
+};
+
+&pcie1 {
+       status = "okay";
+};
+
+&pcie2 {
+       status = "okay";
+};
+
+&mdio0 {
+       status = "okay";
+
+       pinctrl-0 = <&mdio0_pins>;
+       pinctrl-names = "default";
+
+       phy0: ethernet-phy@0 {
+               reg = <0>;
+               qca,ar8327-initvals = <
+                       0x00004 0x7600000   /* PAD0_MODE */
+                       0x00008 0x1000000   /* PAD5_MODE */
+                       0x0000c 0x80        /* PAD6_MODE */
+                       0x00010 0x2613a0    /* PWS_REG */
+                       0x000e4 0x6a545     /* MAC_POWER_SEL */
+                       0x000e0 0xc74164de  /* SGMII_CTRL */
+                       0x0007c 0x4e        /* PORT0_STATUS */
+                       0x00094 0x4e        /* PORT6_STATUS */
+                       >;
+       };
+};
+
+&gmac1 {
+       status = "okay";
+       phy-mode = "rgmii";
+       qcom,id = <1>;
+
+       pinctrl-0 = <&rgmii2_pins>;
+       pinctrl-names = "default";
+
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
+
+&gmac2 {
+       status = "okay";
+       phy-mode = "sgmii";
+       qcom,id = <2>;
+
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
+
+&tcsr {
+       qcom,usb-ctrl-select = <TCSR_USB_SELECT_USB3_DUAL>;
+       compatible = "qcom,tcsr";
+};
+
+&adm_dma {
+       status = "okay";
+};
diff --git a/target/linux/ipq806x/image/Makefile 
b/target/linux/ipq806x/image/Makefile
index 5cc66daa21..af428db9fd 100644
--- a/target/linux/ipq806x/image/Makefile
+++ b/target/linux/ipq806x/image/Makefile
@@ -13,6 +13,17 @@ define Build/buffalo-rootfs-cksum
        ) >> $@
 endef
 
+# tune addpattern for Linksys E8350-V1 fw pattern generation
+define Build/linksys-bin
+        $(STAGING_DIR_HOST)/bin/addpattern -p $(FW_DEVICE_ID) -v $(FW_VERSION) 
$(if $(SERIAL),-s $(SERIAL)) -i $@ -o $@.new
+        mv $@.new $@
+endef
+# Use Linksys fw header generator to upgrade openwrt factory image over the 
native Linksys WEB interface
+define Build/linksys-addfwhdr
+        -$(STAGING_DIR_HOST)/bin/linksys/addfwhdr -i $@ -o $@.new \
+               ;mv "$@.new" "$@"
+endef
+
 define Device/Default
        PROFILES := Default
        KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
@@ -109,6 +120,24 @@ define Device/compex_wpq864
 endef
 TARGET_DEVICES += compex_wpq864
 
+define Device/linksys_e8350-v1
+        $(call Device/LegacyImage)
+        DEVICE_VENDOR := Linksys
+        DEVICE_MODEL := E8350
+        DEVICE_VARIANT := v1
+        SOC := qcom-ipq8064
+        FW_VERSION := v1.0.03.003
+        FW_DEVICE_ID := 8350
+        PAGESIZE := 2048
+        BLOCKSIZE := 128k
+        KERNEL_IN_UBI := 1
+        IMAGES = factory.bin sysupgrade.ubi
+        IMAGE/sysupgrade.ubi := append-ubi | check-size 0x04000000 | 
append-metadata
+        IMAGE/factory.bin := append-ubi | check-size 0x04000000 | 
linksys-addfwhdr | linksys-bin
+        DEVICE_PACKAGES := ath10k-firmware-qca988x-ct
+endef
+TARGET_DEVICES += linksys_e8350-v1
+
 define Device/linksys_ea7500-v1
        $(call Device/LegacyImage)
        DEVICE_VENDOR := Linksys
diff --git a/target/linux/ipq806x/patches-5.4/0069-arm-boot-add-dts-files.patch 
b/target/linux/ipq806x/patches-5.4/0069-arm-boot-add-dts-files.patch
index 8cdd198c29..f88252d8a6 100644
--- a/target/linux/ipq806x/patches-5.4/0069-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq806x/patches-5.4/0069-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <j...@phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -843,6 +843,19 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -843,6 +843,20 @@ dtb-$(CONFIG_ARCH_QCOM) += \
        qcom-ipq4019-ap.dk07.1-c1.dtb \
        qcom-ipq4019-ap.dk07.1-c2.dtb \
        qcom-ipq8064-ap148.dtb \
@@ -18,6 +18,7 @@ Signed-off-by: John Crispin <j...@phrozen.org>
 +      qcom-ipq8064-d7800.dtb \
 +      qcom-ipq8064-db149.dtb \
 +      qcom-ipq8064-ap161.dtb \
++      qcom-ipq8064-e8350-v1.dtb \
 +      qcom-ipq8064-ea7500-v1.dtb \
 +      qcom-ipq8064-ea8500.dtb \
 +      qcom-ipq8064-r7500.dtb \
-- 
2.27.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to