mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-30 01:52:51 +00:00
726 lines
21 KiB
Diff
726 lines
21 KiB
Diff
From 6842adf43711584900a64bb9ab65f9c63b7d3034 Mon Sep 17 00:00:00 2001
|
|
From: Robert Marko <robert.marko@sartura.hr>
|
|
Date: Mon, 18 May 2020 12:45:47 +0200
|
|
Subject: [PATCH 13/40] ipq806x: add Edgecore ECW5410 support
|
|
|
|
This patch adds support for the Edgecore ECW5410 indoor AP.
|
|
|
|
Specification:
|
|
- SoC: Qualcomm Atheros IPQ8068 ARMv7 2x Cortex A-15
|
|
- RAM: 256MB(225 usable) DDR3
|
|
- NOR Flash: 16MB SPI NOR
|
|
- NAND Flash: 128MB S34MS01G2 Parallel NAND
|
|
- Ethernet: 2 x 1G via 2x AR8033 PHY-s connected directly to GMAC2 and GMAC3 via SGMII (802.3af POE IN on eth0)
|
|
- USB: 1 x USB 3.0 SuperSpeed
|
|
- WLAN: 2x QCA9994 AC Wawe 2 (1x 2GHz bgn, 1x 5GHz acn)
|
|
- CC2540 BLE
|
|
- UART console on RJ45 next to ethernet ports exposed.
|
|
Its Cisco pin compatible, 115200 8n1 baud.
|
|
|
|
Installation instructions:
|
|
Through stock firmware or initramfs.
|
|
|
|
1.Connect to console
|
|
2. Login with root account, if password is unknown then interrupt the boot with f and reset it in failsafe.
|
|
3. Transfer factory image
|
|
4. Flash the image with ubiformat /dev/mtd1 -y -f <your factory image path>
|
|
|
|
This will replace the rootfs2 with OpenWrt, if you are currently running from rootfs2 then simply change /dev/mtd1 to /dev/mtd0
|
|
|
|
Note
|
|
|
|
Initramfs:
|
|
1. Connect to console
|
|
2. Transfer the image from TFTP server with tftpboot,
|
|
or by using DHCP advertised image with dhcp command.
|
|
3. bootm
|
|
4. Run ubiformat /dev/mtd1
|
|
|
|
You need to interrupt the bootloader after rebooting and run:
|
|
run altbootcmd
|
|
|
|
This will switch your active rootfs partition to one you wrote to and boot from it.
|
|
|
|
So if rootfs1 is active, then it will change it to rootfs2.
|
|
|
|
This will format the rootfs2 partition, if your active partition is 2 then simply change /dev/mtd1 with /dev/mtd0
|
|
If you dont format the partition you will be writing too, then sysupgrade will find existing UBI rootfs and kernel volumes and update those.
|
|
This will result in wrong ordering and OpenWrt will panic on boot.
|
|
|
|
5. Transfer sysupgrade image
|
|
6. Flash with sysupgrade -n.
|
|
|
|
Note that sysupgrade will write the image to rootfs partition that is not currently in use.
|
|
|
|
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
|
---
|
|
package/boot/uboot-envtools/files/ipq806x | 3 +
|
|
package/firmware/ipq-wifi/Makefile | 2 +
|
|
.../ipq-wifi/board-edgecore_ecw5410.qca9984 | Bin 0 -> 24324 bytes
|
|
.../ipq806x/base-files/etc/board.d/01_leds | 4 +
|
|
.../ipq806x/base-files/etc/board.d/02_network | 5 +
|
|
.../etc/hotplug.d/firmware/11-ath10k-caldata | 10 +
|
|
.../ipq806x/base-files/etc/init.d/bootcount | 3 +
|
|
.../base-files/lib/upgrade/platform.sh | 11 +
|
|
.../arm/boot/dts/qcom-ipq8068-ecw5410.dts | 400 ++++++++++++++++++
|
|
target/linux/ipq806x/image/Makefile | 12 +
|
|
.../0069-arm-boot-add-dts-files.patch | 3 +-
|
|
11 files changed, 452 insertions(+), 1 deletion(-)
|
|
create mode 100644 package/firmware/ipq-wifi/board-edgecore_ecw5410.qca9984
|
|
create mode 100644 target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts
|
|
|
|
diff --git a/package/boot/uboot-envtools/files/ipq806x b/package/boot/uboot-envtools/files/ipq806x
|
|
index c27bea71c1..9da2b5b6bd 100644
|
|
--- a/package/boot/uboot-envtools/files/ipq806x
|
|
+++ b/package/boot/uboot-envtools/files/ipq806x
|
|
@@ -31,6 +31,9 @@ ubootenv_mtdinfo () {
|
|
}
|
|
|
|
case "$board" in
|
|
+edgecore,ecw5410)
|
|
+ ubootenv_add_uci_config "/dev/mtd11" "0x0" "0x10000" "0x10000"
|
|
+ ;;
|
|
linksys,ea8500)
|
|
ubootenv_add_uci_config "/dev/mtd10" "0x0" "0x20000" "0x20000"
|
|
;;
|
|
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
|
|
index 4b90a3397f..25731ddc56 100644
|
|
--- a/package/firmware/ipq-wifi/Makefile
|
|
+++ b/package/firmware/ipq-wifi/Makefile
|
|
@@ -29,6 +29,7 @@ ALLWIFIBOARDS:= \
|
|
avm_fritzbox-7530 \
|
|
avm_fritzrepeater-1200 \
|
|
avm_fritzrepeater-3000 \
|
|
+ edgecore_ecw5410 \
|
|
engenius_eap1300 \
|
|
engenius_ens620ext \
|
|
linksys_ea6350v3 \
|
|
@@ -101,6 +102,7 @@ $(eval $(call generate-ipq-wifi-package,asus_map-ac2200,ASUS MAP-AC2200))
|
|
$(eval $(call generate-ipq-wifi-package,avm_fritzbox-7530,AVM FRITZ!Box 7530))
|
|
$(eval $(call generate-ipq-wifi-package,avm_fritzrepeater-1200,AVM FRITZRepeater 1200))
|
|
$(eval $(call generate-ipq-wifi-package,avm_fritzrepeater-3000,AVM FRITZ!Repeater 3000))
|
|
+$(eval $(call generate-ipq-wifi-package,edgecore_ecw5410,Edgecore ECW5410))
|
|
$(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))
|
|
diff --git a/package/firmware/ipq-wifi/board-edgecore_ecw5410.qca9984 b/package/firmware/ipq-wifi/board-edgecore_ecw5410.qca9984
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..2c1992001d86268e0483b9e53ed4b563e224ada4
|
|
GIT binary patch
|
|
literal 24324
|
|
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
|
|
|
|
literal 0
|
|
HcmV?d00001
|
|
|
|
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..ffefb9e01c 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,10 @@ 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"
|
|
;;
|
|
+edgecore,ecw5410)
|
|
+ ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:green:wlan2g" "phy1tpt"
|
|
+ ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:green:wlan5g" "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 a3aa0fce70..d6958cadac 100755
|
|
--- a/target/linux/ipq806x/base-files/etc/board.d/02_network
|
|
+++ b/target/linux/ipq806x/base-files/etc/board.d/02_network
|
|
@@ -22,6 +22,11 @@ tplink,vr2600v)
|
|
ucidef_add_switch "switch0" \
|
|
"1:lan" "2:lan" "3:lan" "4:lan" "6@eth1" "5:wan" "0@eth0"
|
|
;;
|
|
+edgecore,ecw5410)
|
|
+ ucidef_set_interfaces_lan_wan "eth1" "eth0"
|
|
+ ucidef_set_interface_macaddr "lan" "$(mtd_get_mac_binary "0:ART" 0x6)"
|
|
+ ucidef_set_interface_macaddr "wan" "$(mtd_get_mac_binary "0:ART" 0x0)"
|
|
+ ;;
|
|
qcom,ipq8064-ap161)
|
|
ucidef_set_interface_lan "eth1 eth2"
|
|
ucidef_add_switch "switch0" \
|
|
diff --git a/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
|
index e05f2b2c7b..71bc906acd 100644
|
|
--- a/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
|
+++ b/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
|
|
@@ -117,6 +117,9 @@ case "$FIRMWARE" in
|
|
ath10kcal_extract "ART" 20480 12064
|
|
ath10kcal_patch_mac_crc $(mtd_get_mac_binary ART 24)
|
|
;;
|
|
+ edgecore,ecw5410)
|
|
+ ath10kcal_extract "0:ART" 4096 12064
|
|
+ ;;
|
|
linksys,ea8500)
|
|
ath10kcal_extract "art" 20480 12064
|
|
ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii devinfo hw_mac_addr) +2)
|
|
@@ -145,6 +148,13 @@ case "$FIRMWARE" in
|
|
;;
|
|
esac
|
|
;;
|
|
+"ath10k/pre-cal-pci-0002:01:00.0.bin")
|
|
+ case $board in
|
|
+ edgecore,ecw5410)
|
|
+ ath10kcal_extract "0:ART" 20480 12064
|
|
+ ;;
|
|
+ esac
|
|
+ ;;
|
|
*)
|
|
exit 1
|
|
;;
|
|
diff --git a/target/linux/ipq806x/base-files/etc/init.d/bootcount b/target/linux/ipq806x/base-files/etc/init.d/bootcount
|
|
index 6a5a6d52ad..307cb12b9f 100755
|
|
--- a/target/linux/ipq806x/base-files/etc/init.d/bootcount
|
|
+++ b/target/linux/ipq806x/base-files/etc/init.d/bootcount
|
|
@@ -6,6 +6,9 @@ start() {
|
|
. /lib/functions.sh
|
|
|
|
case $(board_name) in
|
|
+ edgecore,ecw5410)
|
|
+ fw_setenv bootcount 0
|
|
+ ;;
|
|
linksys,ea8500)
|
|
mtd resetbc s_env || true
|
|
;;
|
|
diff --git a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
|
|
index 5919613cb9..032e71981e 100644
|
|
--- a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
|
|
+++ b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
|
|
@@ -25,6 +25,17 @@ platform_do_upgrade() {
|
|
zyxel,nbg6817)
|
|
nand_do_upgrade "$1"
|
|
;;
|
|
+ edgecore,ecw5410)
|
|
+ part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')"
|
|
+ if [ "$part" = "rootfs1" ]; then
|
|
+ fw_setenv active 2 || exit 1
|
|
+ CI_UBIPART="rootfs2"
|
|
+ else
|
|
+ fw_setenv active 1 || exit 1
|
|
+ CI_UBIPART="rootfs1"
|
|
+ fi
|
|
+ nand_do_upgrade "$1"
|
|
+ ;;
|
|
linksys,ea8500)
|
|
platform_do_upgrade_linksys "$1"
|
|
;;
|
|
diff --git a/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts b/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts
|
|
new file mode 100644
|
|
index 0000000000..6bddc5e288
|
|
--- /dev/null
|
|
+++ b/target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts
|
|
@@ -0,0 +1,400 @@
|
|
+#include "qcom-ipq8064-v2.0.dtsi"
|
|
+
|
|
+#include <dt-bindings/input/input.h>
|
|
+#include <dt-bindings/soc/qcom,tcsr.h>
|
|
+
|
|
+/ {
|
|
+ model = "Edgecore ECW5410";
|
|
+ compatible = "edgecore,ecw5410", "qcom,ipq8064";
|
|
+
|
|
+ reserved-memory {
|
|
+ #address-cells = <1>;
|
|
+ #size-cells = <1>;
|
|
+ ranges;
|
|
+
|
|
+ nss@40000000 {
|
|
+ reg = <0x40000000 0x1000000>;
|
|
+ no-map;
|
|
+ };
|
|
+
|
|
+ smem: smem@41000000 {
|
|
+ reg = <0x41000000 0x200000>;
|
|
+ no-map;
|
|
+ };
|
|
+
|
|
+ wifi_dump@44000000 {
|
|
+ reg = <0x44000000 0x600000>;
|
|
+ no-map;
|
|
+ };
|
|
+
|
|
+ rsvd@41200000 {
|
|
+ reg = <0x41200000 0x300000>;
|
|
+ no-map;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ cpus {
|
|
+ idle-states {
|
|
+ CPU_SPC: spc {
|
|
+ status = "disabled";
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+
|
|
+ aliases {
|
|
+ serial0 = &gsbi4_serial;
|
|
+ serial1 = &gsbi1_serial;
|
|
+ mdio-gpio0 = &mdio0;
|
|
+ ethernet0 = &gmac3;
|
|
+ ethernet1 = &gmac2;
|
|
+
|
|
+ led-boot = &power_green;
|
|
+ led-failsafe = &power_red;
|
|
+ led-running = &power_green;
|
|
+ led-upgrade = &power_green;
|
|
+ };
|
|
+
|
|
+ chosen {
|
|
+ bootargs-append = " console=ttyMSM0,115200n8 root=/dev/ubiblock0_1";
|
|
+ stdout-path = "serial0:115200n8";
|
|
+ };
|
|
+
|
|
+ keys {
|
|
+ compatible = "gpio-keys";
|
|
+ pinctrl-0 = <&button_pins>;
|
|
+ pinctrl-names = "default";
|
|
+
|
|
+ reset {
|
|
+ label = "reset";
|
|
+ gpios = <&qcom_pinmux 25 GPIO_ACTIVE_LOW>;
|
|
+ linux,code = <KEY_RESTART>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ leds {
|
|
+ compatible = "gpio-leds";
|
|
+ pinctrl-0 = <&led_pins>;
|
|
+ pinctrl-names = "default";
|
|
+
|
|
+ power_green: power_green {
|
|
+ label = "ecw5410:green:power";
|
|
+ gpios = <&qcom_pinmux 16 GPIO_ACTIVE_HIGH>;
|
|
+ };
|
|
+
|
|
+ wlan2g_green {
|
|
+ label = "ecw5410:green:wlan2g";
|
|
+ gpios = <&qcom_pinmux 23 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+
|
|
+ wlan2g_yellow {
|
|
+ label = "ecw5410:yellow:wlan2g";
|
|
+ gpios = <&qcom_pinmux 24 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+
|
|
+ wlan5g_green {
|
|
+ label = "ecw5410:green:wlan5g";
|
|
+ gpios = <&qcom_pinmux 26 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+
|
|
+ power_red: power_red {
|
|
+ label = "ecw5410:red:power";
|
|
+ gpios = <&qcom_pinmux 28 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+
|
|
+ wlan5g_yellow {
|
|
+ label = "ecw5410:yellow:wlan5g";
|
|
+ gpios = <&qcom_pinmux 59 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+
|
|
+&qcom_pinmux {
|
|
+ spi_pins: spi_pins {
|
|
+ mux {
|
|
+ pins = "gpio18", "gpio19";
|
|
+ function = "gsbi5";
|
|
+ drive-strength = <10>;
|
|
+ bias-pull-down;
|
|
+ };
|
|
+
|
|
+ clk {
|
|
+ pins = "gpio21";
|
|
+ function = "gsbi5";
|
|
+ drive-strength = <12>;
|
|
+ bias-pull-down;
|
|
+ };
|
|
+
|
|
+ cs {
|
|
+ pins = "gpio20";
|
|
+ function = "gpio";
|
|
+ drive-strength = <10>;
|
|
+ bias-pull-up;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ nand_pins: nand_pins {
|
|
+ disable {
|
|
+ pins = "gpio34", "gpio35", "gpio36", "gpio37",
|
|
+ "gpio38";
|
|
+ function = "nand";
|
|
+ drive-strength = <10>;
|
|
+ bias-disable;
|
|
+ };
|
|
+
|
|
+ pullups {
|
|
+ pins = "gpio39";
|
|
+ function = "nand";
|
|
+ drive-strength = <10>;
|
|
+ bias-pull-up;
|
|
+ };
|
|
+
|
|
+ hold {
|
|
+ pins = "gpio40", "gpio41", "gpio42", "gpio43",
|
|
+ "gpio44", "gpio45", "gpio46", "gpio47";
|
|
+ function = "nand";
|
|
+ drive-strength = <10>;
|
|
+ bias-bus-hold;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ mdio0_pins: mdio0_pins {
|
|
+ mux {
|
|
+ pins = "gpio0", "gpio1";
|
|
+ function = "gpio";
|
|
+ drive-strength = <8>;
|
|
+ bias-disable;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ led_pins: led_pins {
|
|
+ mux {
|
|
+ pins = "gpio16", "gpio23", "gpio24", "gpio26",
|
|
+ "gpio28", "gpio59";
|
|
+ function = "gpio";
|
|
+ drive-strength = <2>;
|
|
+ bias-pull-up;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ button_pins: button_pins {
|
|
+ mux {
|
|
+ pins = "gpio25";
|
|
+ function = "gpio";
|
|
+ drive-strength = <2>;
|
|
+ bias-pull-up;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ uart1_pins: uart1_pins {
|
|
+ mux {
|
|
+ pins = "gpio51", "gpio52", "gpio53", "gpio54";
|
|
+ function = "gsbi1";
|
|
+ drive-strength = <12>;
|
|
+ bias-none;
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+&gsbi1 {
|
|
+ qcom,mode = <GSBI_PROT_UART_W_FC>;
|
|
+ status = "okay";
|
|
+
|
|
+ serial@12450000 {
|
|
+ status = "okay";
|
|
+
|
|
+ pinctrl-0 = <&uart1_pins>;
|
|
+ pinctrl-names = "default";
|
|
+ };
|
|
+};
|
|
+
|
|
+&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";
|
|
+
|
|
+ spi4: spi@1a280000 {
|
|
+ status = "okay";
|
|
+ spi-max-frequency = <50000000>;
|
|
+
|
|
+ pinctrl-0 = <&spi_pins>;
|
|
+ pinctrl-names = "default";
|
|
+
|
|
+ cs-gpios = <&qcom_pinmux 20 GPIO_ACTIVE_HIGH>;
|
|
+
|
|
+ m25p80@0 {
|
|
+ compatible = "jedec,spi-nor";
|
|
+ #address-cells = <1>;
|
|
+ #size-cells = <1>;
|
|
+ spi-max-frequency = <50000000>;
|
|
+ reg = <0>;
|
|
+
|
|
+ partitions {
|
|
+ compatible = "qcom,smem";
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+&hs_phy_0 { /* USB3 port 0 HS phy */
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&hs_phy_1 { /* USB3 port 1 HS phy */
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&ss_phy_0 { /* USB3 port 0 SS phy */
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&ss_phy_1 { /* USB3 port 1 SS phy */
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&usb3_0 {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&usb3_1 {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&pcie1 {
|
|
+ status = "okay";
|
|
+
|
|
+ /delete-property/ pinctrl-0;
|
|
+ /delete-property/ pinctrl-names;
|
|
+ /delete-property/ perst-gpios;
|
|
+
|
|
+ bridge@0,0 {
|
|
+ reg = <0x00000000 0 0 0 0>;
|
|
+ #address-cells = <3>;
|
|
+ #size-cells = <2>;
|
|
+ ranges;
|
|
+
|
|
+ wifi@1,0 {
|
|
+ compatible = "qcom,ath10k";
|
|
+ status = "okay";
|
|
+ reg = <0x00010000 0 0 0 0>;
|
|
+ qcom,ath10k-calibration-variant = "Edgecore-ECW5410-L";
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+&pcie2 {
|
|
+ status = "okay";
|
|
+
|
|
+ /delete-property/ pinctrl-0;
|
|
+ /delete-property/ pinctrl-names;
|
|
+ /delete-property/ perst-gpios;
|
|
+
|
|
+ bridge@0,0 {
|
|
+ reg = <0x00000000 0 0 0 0>;
|
|
+ #address-cells = <3>;
|
|
+ #size-cells = <2>;
|
|
+ ranges;
|
|
+
|
|
+ wifi@1,0 {
|
|
+ compatible = "qcom,ath10k";
|
|
+ status = "okay";
|
|
+ reg = <0x00010000 0 0 0 0>;
|
|
+ qcom,ath10k-calibration-variant = "Edgecore-ECW5410-L";
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+&soc {
|
|
+ nand@1ac00000 {
|
|
+ status = "okay";
|
|
+
|
|
+ pinctrl-0 = <&nand_pins>;
|
|
+ pinctrl-names = "default";
|
|
+
|
|
+ nand@0 {
|
|
+ compatible = "qcom,nandcs";
|
|
+
|
|
+ reg = <0>;
|
|
+
|
|
+ nand-ecc-strength = <4>;
|
|
+ nand-bus-width = <8>;
|
|
+ nand-ecc-step-size = <512>;
|
|
+
|
|
+ partitions {
|
|
+ compatible = "fixed-partitions";
|
|
+ #address-cells = <1>;
|
|
+ #size-cells = <1>;
|
|
+
|
|
+ rootfs1@0 {
|
|
+ label = "rootfs1";
|
|
+ reg = <0x0000000 0x4000000>;
|
|
+ };
|
|
+
|
|
+ rootfs2@4000000 {
|
|
+ label = "rootfs2";
|
|
+ reg = <0x4000000 0x4000000>;
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+
|
|
+ mdio0: mdio {
|
|
+ compatible = "virtual,mdio-gpio";
|
|
+ #address-cells = <1>;
|
|
+ #size-cells = <0>;
|
|
+
|
|
+ status = "okay";
|
|
+
|
|
+ pinctrl-0 = <&mdio0_pins>;
|
|
+ pinctrl-names = "default";
|
|
+
|
|
+ gpios = <&qcom_pinmux 1 GPIO_ACTIVE_HIGH &qcom_pinmux 0 GPIO_ACTIVE_HIGH>;
|
|
+
|
|
+ phy0: ethernet-phy@0 {
|
|
+ reg = <0>;
|
|
+ };
|
|
+
|
|
+ phy1: ethernet-phy@1 {
|
|
+ reg = <1>;
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+&gmac2 {
|
|
+ status = "okay";
|
|
+
|
|
+ qcom,id = <2>;
|
|
+ mdiobus = <&mdio0>;
|
|
+
|
|
+ phy-mode = "sgmii";
|
|
+ phy-handle = <&phy1>;
|
|
+};
|
|
+
|
|
+&gmac3 {
|
|
+ status = "okay";
|
|
+
|
|
+ qcom,id = <3>;
|
|
+ mdiobus = <&mdio0>;
|
|
+
|
|
+ phy-mode = "sgmii";
|
|
+ phy-handle = <&phy0>;
|
|
+};
|
|
+
|
|
+&adm_dma {
|
|
+ status = "okay";
|
|
+};
|
|
diff --git a/target/linux/ipq806x/image/Makefile b/target/linux/ipq806x/image/Makefile
|
|
index e1eb090de3..45f1c7f49c 100644
|
|
--- a/target/linux/ipq806x/image/Makefile
|
|
+++ b/target/linux/ipq806x/image/Makefile
|
|
@@ -105,6 +105,18 @@ define Device/compex_wpq864
|
|
endef
|
|
TARGET_DEVICES += compex_wpq864
|
|
|
|
+define Device/edgecore_ecw5410
|
|
+ $(call Device/FitImage)
|
|
+ $(call Device/UbiFit)
|
|
+ DEVICE_TITLE := Edgecore ECW5410
|
|
+ BLOCKSIZE := 128k
|
|
+ PAGESIZE := 2048
|
|
+ DEVICE_DTS := qcom-ipq8068-ecw5410
|
|
+ DEVICE_DTS_CONFIG := config@v2.0-ap160
|
|
+ DEVICE_PACKAGES := ath10k-firmware-qca9984-ct ipq-wifi-edgecore_ecw5410
|
|
+endef
|
|
+TARGET_DEVICES += edgecore_ecw5410
|
|
+
|
|
define Device/linksys_ea8500
|
|
$(call Device/LegacyImage)
|
|
DEVICE_DTS := qcom-ipq8064-ea8500
|
|
diff --git a/target/linux/ipq806x/patches-4.14/0069-arm-boot-add-dts-files.patch b/target/linux/ipq806x/patches-4.14/0069-arm-boot-add-dts-files.patch
|
|
index e11378b42a..5c88c46e4f 100644
|
|
--- a/target/linux/ipq806x/patches-4.14/0069-arm-boot-add-dts-files.patch
|
|
+++ b/target/linux/ipq806x/patches-4.14/0069-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
|
|
-@@ -699,6 +699,18 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
|
+@@ -699,6 +699,19 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
|
qcom-apq8084-mtp.dtb \
|
|
qcom-ipq4019-ap.dk01.1-c1.dtb \
|
|
qcom-ipq8064-ap148.dtb \
|
|
@@ -26,6 +26,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
|
+ qcom-ipq8064-wxr-2533dhp.dtb \
|
|
+ qcom-ipq8065-nbg6817.dtb \
|
|
+ qcom-ipq8065-r7800.dtb \
|
|
++ qcom-ipq8068-ecw5410.dtb \
|
|
qcom-msm8660-surf.dtb \
|
|
qcom-msm8960-cdp.dtb \
|
|
qcom-msm8974-lge-nexus5-hammerhead.dtb \
|
|
--
|
|
2.25.1
|
|
|