[PATCH v3 1/4] ipq806x: add support for Linksys E8350
Todor Colov
todorcolov at abv.bg
Tue Sep 1 00:37:05 EDT 2020
---
.../ipq806x/base-files/etc/board.d/01_leds | 3 +
.../ipq806x/base-files/etc/board.d/02_network | 1 +
.../base-files/lib/upgrade/platform.sh | 3 +-
.../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, 283 insertions(+), 2 deletions(-)
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..3dfad72232 100755
--- a/target/linux/ipq806x/base-files/etc/board.d/02_network
+++ b/target/linux/ipq806x/base-files/etc/board.d/02_network
@@ -55,6 +55,7 @@ qcom,ipq8064-db149)
ucidef_add_switch "switch0" \
"1:lan" "2:lan" "3:lan" "4:lan" "6u at eth1" "5:wan" "0u at eth0"
;;
+linksys,e8350-v1 |\
zyxel,nbg6817)
hw_mac_addr=$(mtd_get_mac_ascii 0:APPSBLENV ethaddr)
ucidef_add_switch "switch0" \
diff --git a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
index 560e64af3a..4f4fb12ef0 100644
--- a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
@@ -1,7 +1,7 @@
PART_NAME=firmware
REQUIRE_IMAGE_METADATA=1
-RAMFS_COPY_BIN='fw_printenv fw_setenv'
+RAMFS_COPY_BIN='fw_printenv fw_setenv fwtool'
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
platform_check_image() {
@@ -16,6 +16,7 @@ platform_do_upgrade() {
nand_do_upgrade "$1"
;;
compex,wpq864|\
+ linksys,e8350-v1|\
netgear,d7800 |\
netgear,r7500 |\
netgear,r7500v2 |\
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..cc478963c7
--- /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 E8350 V1 WiFi Router";
+ compatible = "linksys,e8350-v1", "qcom,ipq8064";
+
+ memory at 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 at 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 at 0 {
+ reg = <0>;
+
+ nand-ecc-strength = <4>;
+ nand-bus-width = <8>;
+
+ partitions {
+ compatible = "fixed-partitions";
+
+ partition at 0 {
+ label = "ubi";
+ reg = <0 0x4000000>;
+ };
+
+ partition at 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 at 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 at 1a280000 {
+ status = "okay";
+
+ pinctrl-0 = <&spi_pins>;
+ pinctrl-names = "default";
+
+ cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;
+
+ m25p80 at 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 at 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 <john at 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 <john at 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.28.0
More information about the openwrt-devel
mailing list