aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/boot/uboot-envtools/files/ipq40xx3
-rw-r--r--package/firmware/ipq-wifi/Makefile2
-rw-r--r--package/firmware/ipq-wifi/board-linksys_ea8300.qca4019bin0 -> 97236 bytes
-rw-r--r--package/firmware/ipq-wifi/board-linksys_ea8300.qca9888bin0 -> 48628 bytes
-rwxr-xr-xtarget/linux/ipq40xx/base-files/etc/board.d/02_network3
-rw-r--r--target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata14
-rwxr-xr-xtarget/linux/ipq40xx/base-files/etc/init.d/bootcount3
-rw-r--r--target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh5
-rw-r--r--target/linux/ipq40xx/base-files/lib/preinit/06_set_preinit_iface_ipq40xx.sh1
-rw-r--r--target/linux/ipq40xx/base-files/lib/upgrade/platform.sh13
-rw-r--r--target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-linksys_ea8300.dts399
-rw-r--r--target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-linksys_ea8300.dts399
-rw-r--r--target/linux/ipq40xx/image/Makefile15
-rw-r--r--target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch3
-rw-r--r--target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch3
15 files changed, 852 insertions, 11 deletions
diff --git a/package/boot/uboot-envtools/files/ipq40xx b/package/boot/uboot-envtools/files/ipq40xx
index c16e60bac5..7bcad00b01 100644
--- a/package/boot/uboot-envtools/files/ipq40xx
+++ b/package/boot/uboot-envtools/files/ipq40xx
@@ -40,6 +40,9 @@ openmesh,a62)
linksys,ea6350v3)
ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x20000" "0x20000"
;;
+linksys,ea8300)
+ ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x40000" "0x20000"
+ ;;
zyxel,nbg6617)
ubootenv_add_uci_config "/dev/mtd6" "0x0" "0x10000" "0x10000"
;;
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index 5c4ebb23c4..922064b7f7 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -31,6 +31,7 @@ ALLWIFIBOARDS:= \
engenius_eap1300 \
engenius_ens620ext \
linksys_ea6350v3 \
+ linksys_ea8300 \
qxwlan_e2600ac
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
@@ -101,6 +102,7 @@ $(eval $(call generate-ipq-wifi-package,avm_fritzrepeater-3000,AVM FRITZ!Repeate
$(eval $(call generate-ipq-wifi-package,engenius_eap1300,EnGenius EAP1300))
$(eval $(call generate-ipq-wifi-package,engenius_ens620ext,EnGenius ENS620EXT))
$(eval $(call generate-ipq-wifi-package,linksys_ea6350v3,Linksys EA6350v3))
+$(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300))
$(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac,Qxwlan E2600AC))
$(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
diff --git a/package/firmware/ipq-wifi/board-linksys_ea8300.qca4019 b/package/firmware/ipq-wifi/board-linksys_ea8300.qca4019
new file mode 100644
index 0000000000..0a1f6ebd47
--- /dev/null
+++ b/package/firmware/ipq-wifi/board-linksys_ea8300.qca4019
Binary files differ
diff --git a/package/firmware/ipq-wifi/board-linksys_ea8300.qca9888 b/package/firmware/ipq-wifi/board-linksys_ea8300.qca9888
new file mode 100644
index 0000000000..e3c2039924
--- /dev/null
+++ b/package/firmware/ipq-wifi/board-linksys_ea8300.qca9888
Binary files differ
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network
index d8a5697361..6a7b09cc60 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -29,7 +29,8 @@ ipq40xx_setup_interfaces()
"0u@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
;;
avm,fritzbox-4040|\
- linksys,ea6350v3)
+ linksys,ea6350v3|\
+ linksys,ea8300)
ucidef_set_interfaces_lan_wan "eth0" "eth1"
ucidef_add_switch "switch0" \
"0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan"
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index af84e4e84a..1e64b93a46 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -93,7 +93,6 @@ ath10kcal_is_caldata_valid() {
board=$(board_name)
-
case "$FIRMWARE" in
"ath10k/cal-pci-0000:01:00.0.bin")
case "$board" in
@@ -115,6 +114,11 @@ case "$FIRMWARE" in
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
/usr/bin/fritz_cal_extract -i 1 -s 0x3D000 -e 0x212 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
;;
+ linksys,ea8300)
+ ath10kcal_extract "ART" 36864 12064
+ # OEM assigns 4 sequential MACs
+ ath10kcal_patch_mac_crc $(macaddr_setbit_la $(macaddr_add "$(cat /sys/class/net/eth0/address)" 4))
+ ;;
openmesh,a62)
ath10kcal_extract "0:ART" 36864 12064
;;
@@ -156,6 +160,10 @@ case "$FIRMWARE" in
ath10kcal_extract "ART" 4096 12064
ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +2)
;;
+ linksys,ea8300)
+ ath10kcal_extract "ART" 4096 12064
+ ath10kcal_patch_mac_crc $(macaddr_add "$(cat /sys/class/net/eth0/address)" 2)
+ ;;
meraki,mr33)
ath10kcal_ubi_extract "ART" 4096 12064
ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 4096 12064
@@ -209,6 +217,10 @@ case "$FIRMWARE" in
ath10kcal_extract "ART" 20480 12064
ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +3)
;;
+ linksys,ea8300)
+ ath10kcal_extract "ART" 20480 12064
+ ath10kcal_patch_mac_crc $(macaddr_add "$(cat /sys/class/net/eth0/address)" 3)
+ ;;
meraki,mr33)
ath10kcal_ubi_extract "ART" 20480 12064
ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 20480 12064
diff --git a/target/linux/ipq40xx/base-files/etc/init.d/bootcount b/target/linux/ipq40xx/base-files/etc/init.d/bootcount
index abde12412a..f2d76f125f 100755
--- a/target/linux/ipq40xx/base-files/etc/init.d/bootcount
+++ b/target/linux/ipq40xx/base-files/etc/init.d/bootcount
@@ -10,7 +10,8 @@ start() {
[ -n "$(fw_printenv bootcount changed 2>/dev/null)" ] &&\
echo -e "bootcount\nchanged\n" | /usr/sbin/fw_setenv -s -
;;
- linksys,ea6350v3)
+ linksys,ea6350v3|\
+ linksys,ea8300)
mtd resetbc s_env || true
;;
esac
diff --git a/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh b/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh
index ce5c1fc4bf..fc64441e1a 100644
--- a/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh
+++ b/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh
@@ -9,6 +9,11 @@ preinit_set_mac_address() {
ip link set dev eth0 address $(macaddr_add "$base_mac" +1)
ip link set dev eth1 address $(macaddr_add "$base_mac" +3)
;;
+ linksys,ea8300)
+ base_mac=$(mtd_get_mac_ascii devinfo hw_mac_addr)
+ ip link set dev eth0 address "${base_mac}"
+ ip link set dev eth1 address $(macaddr_add "${base_mac}" 1)
+ ;;
meraki,mr33)
mac_lan=$(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102)
[ -n "$mac_lan" ] && ip link set dev eth0 address "$mac_lan"
diff --git a/target/linux/ipq40xx/base-files/lib/preinit/06_set_preinit_iface_ipq40xx.sh b/target/linux/ipq40xx/base-files/lib/preinit/06_set_preinit_iface_ipq40xx.sh
index 578ddbe4c4..be4b6322cb 100644
--- a/target/linux/ipq40xx/base-files/lib/preinit/06_set_preinit_iface_ipq40xx.sh
+++ b/target/linux/ipq40xx/base-files/lib/preinit/06_set_preinit_iface_ipq40xx.sh
@@ -7,6 +7,7 @@ set_preinit_iface() {
asus,rt-ac58u| \
avm,fritzbox-4040| \
glinet,gl-b1300| \
+ linksys,ea8300| \
meraki,mr33| \
zyxel,nbg6617)
ifname=eth0
diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
index 84b123335c..e62d16c449 100644
--- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
@@ -49,7 +49,7 @@ platform_do_upgrade() {
8dev,jalapeno |\
alfa-network,ap120c-ac |\
avm,fritzbox-7530 |\
- avm,fritzrepeater-3000|\
+ avm,fritzrepeater-3000 |\
qxwlan,e2600ac-c2)
nand_do_upgrade "$ARGV"
;;
@@ -62,18 +62,19 @@ platform_do_upgrade() {
CI_KERNPART="linux"
nand_do_upgrade "$1"
;;
- linksys,ea6350v3)
+ linksys,ea6350v3 |\
+ linksys,ea8300)
platform_do_upgrade_linksys "$ARGV"
;;
+ meraki,mr33)
+ CI_KERNPART="part.safe"
+ nand_do_upgrade "$1"
+ ;;
openmesh,a42 |\
openmesh,a62)
PART_NAME="inactive"
platform_do_upgrade_openmesh "$ARGV"
;;
- meraki,mr33)
- CI_KERNPART="part.safe"
- nand_do_upgrade "$1"
- ;;
zyxel,nbg6617)
zyxel_do_upgrade "$1"
;;
diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-linksys_ea8300.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-linksys_ea8300.dts
new file mode 100644
index 0000000000..cfc3037fb2
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-linksys_ea8300.dts
@@ -0,0 +1,399 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+/*
+ * Device Tree Source for Linksys EA8300 (Dallas)
+ *
+ * Copyright (C) 2019 Jeff Kletsky
+ *
+ */
+
+/dts-v1/;
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+ model = "Linksys EA8300 (Dallas)";
+ compatible = "linksys,ea8300", "qcom,ipq4019";
+
+
+ aliases {
+ led-boot = &led_wps_amber;
+ led-failsafe = &led_wps;
+ led-running = &led_linksys;
+ led-upgrade = &led_world;
+ serial0 = &blsp1_uart1;
+ };
+
+
+ leds {
+ compatible = "gpio-leds";
+
+ // Retain node names from running OEM on EA8300
+
+ // Front panel LEDs, top to bottom
+
+ led_plug: diag {
+ label = "ea8300:amber:plug";
+ gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
+ };
+
+ led_world: internet {
+ label = "ea8300:amber:world";
+ gpios = <&tlmm 49 GPIO_ACTIVE_HIGH>;
+ };
+
+ led_wps: wps {
+ label = "ea8300:white:wps";
+ gpios = <&tlmm 46 GPIO_ACTIVE_HIGH>;
+ };
+
+ led_wps_amber: wps_amber {
+ label = "ea8300:amber:wps";
+ gpios = <&tlmm 22 GPIO_ACTIVE_HIGH>;
+ panic-indicator;
+ };
+
+ led_linksys: pwr {
+ label = "ea8300:white:linksys";
+ gpios = <&tlmm 45 GPIO_ACTIVE_HIGH>;
+ };
+
+ // On back panel, above USB socket
+
+ led_usb: usb {
+ label = "ea8300:green:usb";
+ gpios = <&tlmm 61 GPIO_ACTIVE_LOW>;
+ trigger-sources = <&usb3_port1>, <&usb3_port2>,
+ <&usb2_port1>;
+ linux,default-trigger = "usbport";
+ };
+ };
+
+
+ keys {
+ compatible = "gpio-keys";
+
+ button@0 {
+ label = "reset";
+ linux,code = <KEY_RESTART>;
+ gpios = <&tlmm 50 GPIO_ACTIVE_LOW>;
+ };
+
+ button@1 {
+ label = "wps";
+ linux,code = <KEY_WPS_BUTTON>;
+ gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+
+ //
+ // OEM U-Boot provides either
+ // init=/sbin/init rootfstype=ubifs ubi.mtd=11,2048 \
+ // root=ubi0:ubifs rootwait rw
+ // or the same with ubi.mtd=13,2048
+ //
+
+ chosen {
+ bootargs-append = " root=/dev/ubiblock0_0 rootfstype=squashfs ro";
+ };
+
+
+ memory {
+ device_type = "memory";
+ reg = <0x80000000 0x10000000>;
+ };
+
+
+ soc {
+ rng@22000 {
+ status = "okay";
+ };
+
+ mdio@90000 {
+ status = "okay";
+ };
+
+ ess-psgmii@98000 {
+ status = "okay";
+ };
+
+ tcsr@1949000 {
+ compatible = "qcom,tcsr";
+ reg = <0x1949000 0x100>;
+ qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+ };
+
+ tcsr@194b000 {
+ compatible = "qcom,tcsr";
+ reg = <0x194b000 0x100>;
+ qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+ };
+
+ ess_tcsr@1953000 {
+ compatible = "qcom,tcsr";
+ reg = <0x1953000 0x1000>;
+ qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+ };
+
+ tcsr@1957000 {
+ compatible = "qcom,tcsr";
+ reg = <0x1957000 0x100>;
+ qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+ };
+
+ usb2@60f8800 {
+ status = "okay";
+
+ dwc3@6000000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb2_port1: port@1 {
+ reg = <1>;
+ #trigger-source-cells = <0>;
+ };
+ };
+ };
+
+ usb3@8af8800 {
+ status = "okay";
+
+ dwc3@8a00000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb3_port1: port@1 {
+ reg = <1>;
+ #trigger-source-cells = <0>;
+ };
+
+ usb3_port2: port@2 {
+ reg = <2>;
+ #trigger-source-cells = <0>;
+ };
+ };
+ };
+
+ crypto@8e3a000 {
+ status = "okay";
+ };
+
+ watchdog@b017000 {
+ status = "okay";
+ };
+
+ ess-switch@c000000 {
+ status = "okay";
+ };
+
+ edma@c080000 {
+ status = "okay";
+ };
+ };
+};
+
+
+&blsp_dma {
+ status = "okay";
+};
+
+&blsp1_uart1 {
+ status = "okay";
+ pinctrl-0 = <&serial_0_pins>;
+ pinctrl-names = "default";
+
+};
+
+&cryptobam {
+ status = "okay";
+};
+
+&nand {
+ status = "okay";
+
+ pinctrl-0 = <&nand_pins>;
+ pinctrl-names = "default";
+
+ nand@0 {
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "sbl1";
+ reg = <0x0 0x100000>;
+ read-only;
+ };
+
+ partition@100000 {
+ label = "mibib";
+ reg = <0x100000 0x100000>;
+ read-only;
+ };
+
+ partition@200000 {
+ label = "qsee";
+ reg = <0x200000 0x100000>;
+ read-only;
+ };
+
+ partition@300000 {
+ label = "cdt";
+ reg = <0x300000 0x80000>;
+ read-only;
+ };
+
+ partition@380000 {
+ label = "appsblenv";
+ reg = <0x380000 0x80000>;
+ read-only;
+ };
+
+ partition@400000 {
+ label = "ART";
+ reg = <0x400000 0x80000>;
+ read-only;
+ };
+
+ partition@480000 {
+ label = "appsbl";
+ reg = <0x480000 0x200000>;
+ read-only;
+ };
+
+ partition@680000 {
+ label = "u_env";
+ reg = <0x680000 0x80000>;
+ // writable -- U-Boot environment
+ };
+
+ partition@700000 {
+ label = "s_env";
+ reg = <0x700000 0x40000>;
+ // writable -- Boot counter records
+ };
+
+ partition@740000 {
+ label = "devinfo";
+ reg = <0x740000 0x40000>;
+ read-only;
+ };
+
+ partition@780000 {
+ label = "kernel";
+ reg = <0x780000 0x5800000>;
+ };
+
+ partition@a80000 {
+ label = "rootfs";
+ reg = <0xa80000 0x5500000>;
+ };
+
+ partition@5f80000 {
+ label = "alt_kernel";
+ reg = <0x5f80000 0x5800000>;
+ };
+
+ partition@6280000 {
+ label = "alt_rootfs";
+ reg = <0x6280000 0x5500000>;
+ };
+
+ partition@b780000 {
+ label = "sysdiag";
+ reg = <0xb780000 0x100000>;
+ read-only;
+ };
+
+ partition@b880000 {
+ label = "syscfg";
+ reg = <0xb880000 0x4680000>;
+ read-only;
+ };
+ };
+ };
+};
+
+&pcie0 {
+ status = "okay";
+
+ perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+ wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+ bridge@0,0 {
+ reg = <0x00000000 0 0 0 0>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ ranges;
+
+ wifi2: wifi@1,0 {
+ compatible = "qcom,ath10k";
+ reg = <0x00010000 0 0 0 0>;
+ };
+ };
+};
+
+&qpic_bam {
+ status = "okay";
+};
+
+&tlmm {
+ serial_0_pins: serial0-pinmux {
+ pins = "gpio16", "gpio17";
+ function = "blsp_uart0";
+ bias-disable;
+ };
+
+ nand_pins: nand_pins {
+ pullups {
+ pins = "gpio53", "gpio58", "gpio59";
+ function = "qpic";
+ bias-pull-up;
+ };
+
+ // gpio61 controls led_usb
+
+ pulldowns {
+ pins = "gpio55", "gpio56", "gpio57",
+ "gpio60", "gpio62", "gpio63",
+ "gpio64", "gpio65", "gpio66",
+ "gpio67", "gpio68", "gpio69";
+ function = "qpic";
+ bias-pull-down;
+ };
+ };
+};
+
+&usb2_hs_phy {
+ status = "okay";
+};
+
+&usb3_hs_phy {
+ status = "okay";
+};
+
+&usb3_ss_phy {
+ status = "okay";
+};
+
+&wifi0 {
+ status = "okay";
+ qcom,ath10k-calibration-variant = "linksys-ea8300-fcc";
+};
+
+&wifi1 {
+ status = "okay";
+ ieee80211-freq-limit = <5170000 5330000>;
+ qcom,ath10k-calibration-variant = "linksys-ea8300-fcc";
+};
+
+&wifi2 {
+ status = "okay";
+ ieee80211-freq-limit = <5490000 5835000>;
+ qcom,ath10k-calibration-variant = "linksys-ea8300-fcc";
+};
diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-linksys_ea8300.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-linksys_ea8300.dts
new file mode 100644
index 0000000000..cfc3037fb2
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-linksys_ea8300.dts
@@ -0,0 +1,399 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+/*
+ * Device Tree Source for Linksys EA8300 (Dallas)
+ *
+ * Copyright (C) 2019 Jeff Kletsky
+ *
+ */
+
+/dts-v1/;
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+ model = "Linksys EA8300 (Dallas)";
+ compatible = "linksys,ea8300", "qcom,ipq4019";
+
+
+ aliases {
+ led-boot = &led_wps_amber;
+ led-failsafe = &led_wps;
+ led-running = &led_linksys;
+ led-upgrade = &led_world;
+ serial0 = &blsp1_uart1;
+ };
+
+
+ leds {
+ compatible = "gpio-leds";
+
+ // Retain node names from running OEM on EA8300
+
+ // Front panel LEDs, top to bottom
+
+ led_plug: diag {
+ label = "ea8300:amber:plug";
+ gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
+ };
+
+ led_world: internet {
+ label = "ea8300:amber:world";
+ gpios = <&tlmm 49 GPIO_ACTIVE_HIGH>;
+ };
+
+ led_wps: wps {
+ label = "ea8300:white:wps";
+ gpios = <&tlmm 46 GPIO_ACTIVE_HIGH>;
+ };
+
+ led_wps_amber: wps_amber {
+ label = "ea8300:amber:wps";
+ gpios = <&tlmm 22 GPIO_ACTIVE_HIGH>;
+ panic-indicator;
+ };
+
+ led_linksys: pwr {
+ label = "ea8300:white:linksys";
+ gpios = <&tlmm 45 GPIO_ACTIVE_HIGH>;
+ };
+
+ // On back panel, above USB socket
+
+ led_usb: usb {
+ label = "ea8300:green:usb";
+ gpios = <&tlmm 61 GPIO_ACTIVE_LOW>;
+ trigger-sources = <&usb3_port1>, <&usb3_port2>,
+ <&usb2_port1>;
+ linux,default-trigger = "usbport";
+ };
+ };
+
+
+ keys {
+ compatible = "gpio-keys";
+
+ button@0 {
+ label = "reset";
+ linux,code = <KEY_RESTART>;
+ gpios = <&tlmm 50 GPIO_ACTIVE_LOW>;
+ };
+
+ button@1 {
+ label = "wps";
+ linux,code = <KEY_WPS_BUTTON>;
+ gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+
+ //
+ // OEM U-Boot provides either
+ // init=/sbin/init rootfstype=ubifs ubi.mtd=11,2048 \
+ // root=ubi0:ubifs rootwait rw
+ // or the same with ubi.mtd=13,2048
+ //
+
+ chosen {
+ bootargs-append = " root=/dev/ubiblock0_0 rootfstype=squashfs ro";
+ };
+
+
+ memory {
+ device_type = "memory";
+ reg = <0x80000000 0x10000000>;
+ };
+
+
+ soc {
+ rng@22000 {
+ status = "okay";
+ };
+
+ mdio@90000 {
+ status = "okay";
+ };
+
+ ess-psgmii@98000 {
+ status = "okay";
+ };
+
+ tcsr@1949000 {
+ compatible = "qcom,tcsr";
+ reg = <0x1949000 0x100>;
+ qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+ };
+
+ tcsr@194b000 {
+ compatible = "qcom,tcsr";
+ reg = <0x194b000 0x100>;
+ qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+ };
+
+ ess_tcsr@1953000 {
+ compatible = "qcom,tcsr";
+ reg = <0x1953000 0x1000>;
+ qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+ };
+
+ tcsr@1957000 {
+ compatible = "qcom,tcsr";
+ reg = <0x1957000 0x100>;
+ qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+ };
+
+ usb2@60f8800 {
+ status = "okay";
+
+ dwc3@6000000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb2_port1: port@1 {
+ reg = <1>;
+ #trigger-source-cells = <0>;
+ };
+ };
+ };
+
+ usb3@8af8800 {
+ status = "okay";
+
+ dwc3@8a00000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ usb3_port1: port@1 {
+ reg = <1>;
+ #trigger-source-cells = <0>;
+ };
+
+ usb3_port2: port@2 {
+ reg = <2>;
+ #trigger-source-cells = <0>;
+ };
+ };
+ };
+
+ crypto@8e3a000 {
+ status = "okay";
+ };
+
+ watchdog@b017000 {
+ status = "okay";
+ };
+
+ ess-switch@c000000 {
+ status = "okay";
+ };
+
+ edma@c080000 {
+ status = "okay";
+ };
+ };
+};
+
+
+&blsp_dma {
+ status = "okay";
+};
+
+&blsp1_uart1 {
+ status = "okay";
+ pinctrl-0 = <&serial_0_pins>;
+ pinctrl-names = "default";
+
+};
+
+&cryptobam {
+ status = "okay";
+};
+
+&nand {
+ status = "okay";
+
+ pinctrl-0 = <&nand_pins>;
+ pinctrl-names = "default";
+
+ nand@0 {
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "sbl1";
+ reg = <0x0 0x100000>;
+ read-only;
+ };
+
+ partition@100000 {
+ label = "mibib";
+ reg = <0x100000 0x100000>;
+ read-only;
+ };
+
+ partition@200000 {
+ label = "qsee";
+ reg = <0x200000 0x100000>;
+ read-only;
+ };
+
+ partition@300000 {
+ label = "cdt";
+ reg = <0x300000 0x80000>;
+ read-only;
+ };
+
+ partition@380000 {
+ label = "appsblenv";
+ reg = <0x380000 0x80000>;
+ read-only;
+ };
+
+ partition@400000 {
+ label = "ART";
+ reg = <0x400000 0x80000>;
+ read-only;
+ };
+
+ partition@480000 {
+ label = "appsbl";
+ reg = <0x480000 0x200000>;
+ read-only;
+ };
+
+ partition@680000 {
+ label = "u_env";
+ reg = <0x680000 0x80000>;
+ // writable -- U-Boot environment
+ };
+
+ partition@700000 {
+ label = "s_env";
+ reg = <0x700000 0x40000>;
+ // writable -- Boot counter records
+ };
+
+ partition@740000 {
+ label = "devinfo";
+ reg = <0x740000 0x40000>;
+ read-only;
+ };
+
+ partition@780000 {
+ label = "kernel";
+ reg = <0x780000 0x5800000>;
+ };
+
+ partition@a80000 {
+ label = "rootfs";
+ reg = <0xa80000 0x5500000>;
+ };
+
+ partition@5f80000 {
+ label = "alt_kernel";
+ reg = <0x5f80000 0x5800000>;
+ };
+
+ partition@6280000 {
+ label = "alt_rootfs";
+ reg = <0x6280000 0x5500000>;
+ };
+
+ partition@b780000 {
+ label = "sysdiag";
+ reg = <0xb780000 0x100000>;
+ read-only;
+ };
+
+ partition@b880000 {
+ label = "syscfg";
+ reg = <0xb880000 0x4680000>;
+ read-only;
+ };
+ };
+ };
+};
+
+&pcie0 {
+ status = "okay";
+
+ perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+ wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+ bridge@0,0 {
+ reg = <0x00000000 0 0 0 0>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ ranges;
+
+ wifi2: wifi@1,0 {
+ compatible = "qcom,ath10k";
+ reg = <0x00010000 0 0 0 0>;
+ };
+ };
+};
+
+&qpic_bam {
+ status = "okay";
+};
+
+&tlmm {
+ serial_0_pins: serial0-pinmux {
+ pins = "gpio16", "gpio17";
+ function = "blsp_uart0";
+ bias-disable;
+ };
+
+ nand_pins: nand_pins {
+ pullups {
+ pins = "gpio53", "gpio58", "gpio59";
+ function = "qpic";
+ bias-pull-up;
+ };
+
+ // gpio61 controls led_usb
+
+ pulldowns {
+ pins = "gpio55", "gpio56", "gpio57",
+ "gpio60", "gpio62", "gpio63",
+ "gpio64", "gpio65", "gpio66",
+ "gpio67", "gpio68", "gpio69";
+ function = "qpic";
+ bias-pull-down;
+ };
+ };
+};
+
+&usb2_hs_phy {
+ status = "okay";
+};
+
+&usb3_hs_phy {
+ status = "okay";
+};
+
+&usb3_ss_phy {
+ status = "okay";
+};
+
+&wifi0 {
+ status = "okay";
+ qcom,ath10k-calibration-variant = "linksys-ea8300-fcc";
+};
+
+&wifi1 {
+ status = "okay";
+ ieee80211-freq-limit = <5170000 5330000>;
+ qcom,ath10k-calibration-variant = "linksys-ea8300-fcc";
+};
+
+&wifi2 {
+ status = "okay";
+ ieee80211-freq-limit = <5490000 5835000>;
+ qcom,ath10k-calibration-variant = "linksys-ea8300-fcc";
+};
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
index ae146cdc54..3a9b58de4f 100644
--- a/target/linux/ipq40xx/image/Makefile
+++ b/target/linux/ipq40xx/image/Makefile
@@ -248,6 +248,21 @@ define Device/linksys_ea6350v3
endef
TARGET_DEVICES += linksys_ea6350v3
+define Device/linksys_ea8300
+ $(call Device/FitzImage)
+ DEVICE_TITLE := Linksys EA8300 (Dallas)
+ DEVICE_DTS := qcom-ipq4019-linksys_ea8300
+ KERNEL_SIZE := 3072k
+ IMAGE_SIZE := 87040k
+ BLOCKSIZE := 128k
+ PAGESIZE := 2048
+ UBINIZE_OPTS := -E 5 # EOD marks to "hide" factory sig at EOF
+ IMAGES := sysupgrade.bin factory.bin
+ IMAGE/factory.bin := append-kernel | pad-to $$$${KERNEL_SIZE} | append-ubi | linksys-image type=EA8300
+ DEVICE_PACKAGES := uboot-envtools ath10k-firmware-qca9888-ct ipq-wifi-linksys_ea8300 kmod-usb-ledtrig-usbport
+endef
+TARGET_DEVICES += linksys_ea8300
+
define Device/meraki_mr33
$(call Device/FitImage)
DEVICE_DTS := qcom-ipq4029-mr33
diff --git a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
index 6743f44b25..bb539155e9 100644
--- a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
-@@ -697,7 +697,29 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -697,7 +697,30 @@ dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8074-dragonboard.dtb \
qcom-apq8084-ifc6540.dtb \
qcom-apq8084-mtp.dtb \
@@ -31,6 +31,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
+ qcom-ipq4019-ap.dk04.1-c1.dtb \
+ qcom-ipq4019-fritzbox-7530.dtb \
+ qcom-ipq4019-fritzrepeater-3000.dtb \
++ qcom-ipq4019-linksys_ea8300.dtb \
+ qcom-ipq4019-map-ac2200.dtb \
+ qcom-ipq4019-qxwlan-e2600ac-c1.dtb \
+ qcom-ipq4019-qxwlan-e2600ac-c2.dtb \
diff --git a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
index 57a5760806..a0386f6b66 100644
--- a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
-@@ -785,11 +785,32 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -785,11 +785,33 @@ dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8074-dragonboard.dtb \
qcom-apq8084-ifc6540.dtb \
qcom-apq8084-mtp.dtb \
@@ -34,6 +34,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
+ qcom-ipq4019-a62.dtb \
+ qcom-ipq4019-fritzbox-7530.dtb \
+ qcom-ipq4019-fritzrepeater-3000.dtb \
++ qcom-ipq4019-linksys_ea8300.dtb \
+ qcom-ipq4019-map-ac2200.dtb \
+ qcom-ipq4019-qxwlan-e2600ac-c1.dtb \
+ qcom-ipq4019-qxwlan-e2600ac-c2.dtb \