From 970f1914be3f299fb302ca74a214589397000858 Mon Sep 17 00:00:00 2001 From: David Bauer Date: Thu, 29 Mar 2018 00:32:38 +0200 Subject: [PATCH] ipq40xx: add support for Netgear EX6100v2/EX6150v2 Specifications: SOC: Qualcomm IPQ4018 (DAKOTA) ARM Quad-Core RAM: 256 MB Winbond W632GU6KB12J FLASH: 16 MiB Macronix MX25L12805D ETH: Qualcomm QCA8072 WLAN1: Qualcomm Atheros QCA4018 2.4GHz 802.11b/g/n/ac 2x2 WLAN2: Qualcomm Atheros QCA4018 5GHz 802.11n/ac 1x1 (EX6100) 2x2 (EX6150) INPUT: Power, WPS, reset button AP / Range-extender toggle LED: Power, Router, Extender (dual), WPS, Left-/Right-arrow SERIAL: Header next to QCA8072 chip. VCC, TX, RX, GND (Square hole is VCC) WARNING: The serial port needs a TTL/RS-232 v3.3 level converter! The Serial setting is 115200-8-N-1. Tested and working: - Ethernet - 2.4 GHz WiFi (Correct MAC-address) - 5 GHz WiFi (Correct MAC-address) - Factory installation from WebIF - Factory installation from tftp - OpenWRT sysupgrade (Preserving and non-preserving) - LEDs - Buttons Not Working: - AP/Extender toggle-switch Untested: - Support on EX6100v2. They share the same GPL-Code and vendor-images. The 6100v2 seems to lack one 5GHz stream and differs in the 5GHz board-blob. I only own a EX6150v2, therefore i am only able to verify functionality on this device. Install via Web-Interface: Upload the factory image to the device to the Netgear Web-Interface. The device might asks you to confirm the update a second time due to detecting the OpenWRT firmware as older. The device will automatically reboot after the image is written to flash. Install via TFTP: Connect to the devices serial. Hit Enter-Key in bootloader to stop autobooting. Command "fw_recovery" will start a tftp server, waiting for a DNI image to be pushed. Assign your computer the IP-address 192.168.1.10/24. Push image with tftp -4 -v -m binary 192.168.1.1 -c put Device will erase factory-partition first, then writes the pushed image to flash and reboots. Parts of this commit are based on Thomas Hebb's work on the openwrt-devel mailinglist. See https://lists.openwrt.org/pipermail/openwrt-devel/2018-January/043418.html Signed-off-by: David Bauer --- package/firmware/ipq-wifi/Makefile | 3 +- .../ipq-wifi/board-netgear_ex61x0v2.bin | Bin 0 -> 48628 bytes .../ipq40xx/base-files/etc/board.d/01_leds | 5 + .../ipq40xx/base-files/etc/board.d/02_network | 5 +- .../etc/hotplug.d/firmware/11-ath10k-caldata | 10 + target/linux/ipq40xx/config-4.14 | 2 + .../arm/boot/dts/qcom-ipq4018-ex6100v2.dts | 33 ++ .../arm/boot/dts/qcom-ipq4018-ex6150v2.dts | 33 ++ .../arm/boot/dts/qcom-ipq4018-ex61x0v2.dtsi | 322 ++++++++++++++++++ target/linux/ipq40xx/image/Makefile | 35 ++ .../069-arm-boot-add-dts-files.patch | 4 +- 11 files changed, 448 insertions(+), 4 deletions(-) create mode 100644 package/firmware/ipq-wifi/board-netgear_ex61x0v2.bin create mode 100644 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex6100v2.dts create mode 100644 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex6150v2.dts create mode 100644 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex61x0v2.dtsi diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index 7cc6478452..0df5078d78 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -13,7 +13,7 @@ endef define Build/Compile endef -ALLWIFIBOARDS:=8dev_jalapeno asus_rt-ac58u avm_fritzbox-4040 glinet_gl-b1300 meraki_mr33 +ALLWIFIBOARDS:=8dev_jalapeno asus_rt-ac58u avm_fritzbox-4040 glinet_gl-b1300 meraki_mr33 netgear_ex61x0v2 ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD)) define Package/ipq-wifi-default @@ -52,5 +52,6 @@ $(eval $(call generate-ipq-wifi-package,asus_rt-ac58u,board-asus_rt-ac58u.bin,AS $(eval $(call generate-ipq-wifi-package,avm_fritzbox-4040,board-avm_fritzbox-4040.bin,AVM FRITZ!Box 4040)) $(eval $(call generate-ipq-wifi-package,glinet_gl-b1300,board-glinet_gl-b1300.bin,GL.iNet GL-B1300)) $(eval $(call generate-ipq-wifi-package,meraki_mr33,board-meraki_mr33.bin,Cisco Meraki MR33)) +$(eval $(call generate-ipq-wifi-package,netgear_ex61x0v2,board-netgear_ex61x0v2.bin,Netgear EX61x0v2)) $(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE)))) diff --git a/package/firmware/ipq-wifi/board-netgear_ex61x0v2.bin b/package/firmware/ipq-wifi/board-netgear_ex61x0v2.bin new file mode 100644 index 0000000000000000000000000000000000000000..0937a65fc976444ad72ad9ccc0b3df2a524a071e GIT binary patch literal 48628 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 AI{*Lx literal 0 HcmV?d00001 diff --git a/target/linux/ipq40xx/base-files/etc/board.d/01_leds b/target/linux/ipq40xx/base-files/etc/board.d/01_leds index f1f49abb2e..784fd444dd 100755 --- a/target/linux/ipq40xx/base-files/etc/board.d/01_leds +++ b/target/linux/ipq40xx/base-files/etc/board.d/01_leds @@ -26,6 +26,11 @@ avm,fritzbox-4040) glinet,gl-b1300) ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wlan" "phy0tpt" ;; +netgear,ex6100v2 |\ +netgear,ex6150v2) + ucidef_set_led_wlan "wlan2g" "WLAN2G" "ex61x0v2:green:router" "phy0tpt" + ucidef_set_led_wlan "wlan5g" "WLAN5G" "ex61x0v2:green:client" "phy1tpt" + ;; meraki,mr33) ucidef_set_interface_lan "eth0" ;; 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 91343cd4b4..ade1b05458 100755 --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network @@ -41,8 +41,9 @@ glinet,gl-b1300) openmesh,a42) ucidef_set_interfaces_lan_wan "eth1" "eth0" ;; - -meraki,mr33) +meraki,mr33 |\ +netgear,ex6100v2 |\ +netgear,ex6150v2) ucidef_set_interface_lan "eth0" ;; *) 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 56c10cbf00..0a5780cbf0 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 @@ -129,6 +129,11 @@ case "$FIRMWARE" in ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 4096 12064 ath10kcal_patch_mac_crc $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102) +2) ;; + netgear,ex6100v2 |\ + netgear,ex6150v2) + ath10kcal_extract "ART" 4096 12064 + ath10kcal_patch_mac_crc $(mtd_get_mac_binary dnidata 0) + ;; compex,wpj428 |\ openmesh,a42) ath10kcal_extract "0:ART" 4096 12064 @@ -154,6 +159,11 @@ case "$FIRMWARE" in ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 20480 12064 ath10kcal_patch_mac_crc $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102) +3) ;; + netgear,ex6100v2 |\ + netgear,ex6150v2) + ath10kcal_extract "ART" 20480 12064 + ath10kcal_patch_mac_crc $(mtd_get_mac_binary dnidata 12) + ;; compex,wpj428 |\ openmesh,a42) ath10kcal_extract "0:ART" 20480 12064 diff --git a/target/linux/ipq40xx/config-4.14 b/target/linux/ipq40xx/config-4.14 index 1bba061761..18a8bafd5f 100644 --- a/target/linux/ipq40xx/config-4.14 +++ b/target/linux/ipq40xx/config-4.14 @@ -191,6 +191,7 @@ CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GPIOLIB=y CONFIG_GPIOLIB_IRQCHIP=y +CONFIG_GPIO_74X164=y CONFIG_GPIO_SYSFS=y CONFIG_GPIO_WATCHDOG=y # CONFIG_GPIO_WATCHDOG_ARCH_INITCALL is not set @@ -438,6 +439,7 @@ CONFIG_SMP_ON_UP=y CONFIG_SPARSE_IRQ=y CONFIG_SPI=y CONFIG_SPI_MASTER=y +CONFIG_SPI_GPIO=y CONFIG_SPI_QUP=y CONFIG_SPMI=y CONFIG_SPMI_MSM_PMIC_ARB=y diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex6100v2.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex6100v2.dts new file mode 100644 index 0000000000..a0abe41517 --- /dev/null +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex6100v2.dts @@ -0,0 +1,33 @@ +/* Copyright (c) 2015, The Linux Foundation. All rights reserved. + * Copyright (c) 2018, David Bauer + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "qcom-ipq4018-ex61x0v2.dtsi" +#include +#include + +/ { + model = "Netgear EX6100v2"; + compatible = "netgear,ex6100v2", "qcom,ipq4019"; +}; + +&wifi0 { + qcom,ath10k-calibration-variant = "Netgear-EX6100v2"; +}; + +&wifi1 { + qcom,ath10k-calibration-variant = "Netgear-EX6100v2"; +}; diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex6150v2.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex6150v2.dts new file mode 100644 index 0000000000..e0b5c38b33 --- /dev/null +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex6150v2.dts @@ -0,0 +1,33 @@ +/* Copyright (c) 2015, The Linux Foundation. All rights reserved. + * Copyright (c) 2018, David Bauer + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "qcom-ipq4018-ex61x0v2.dtsi" +#include +#include + +/ { + model = "Netgear EX6150v2"; + compatible = "netgear,ex6150v2", "qcom,ipq4019"; +}; + +&wifi0 { + qcom,ath10k-calibration-variant = "Netgear-EX6150v2"; +}; + +&wifi1 { + qcom,ath10k-calibration-variant = "Netgear-EX6150v2"; +}; diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex61x0v2.dtsi b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex61x0v2.dtsi new file mode 100644 index 0000000000..14c1caa969 --- /dev/null +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ex61x0v2.dtsi @@ -0,0 +1,322 @@ +/* Copyright (c) 2015, The Linux Foundation. All rights reserved. + * Copyright (c) 2018, David Bauer + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include "qcom-ipq4019.dtsi" +#include "qcom-ipq4019-bus.dtsi" +#include +#include +#include + +/ { + model = "Netgear EX61X0v2"; + compatible = "netgear,ex61x0v2", "qcom,ipq4019"; + + reserved-memory { + #address-cells = <0x1>; + #size-cells = <0x1>; + ranges; + + smem@87e00000 { + reg = <0x87e00000 0x080000>; + no-map; + }; + + tz@87e80000 { + reg = <0x87e80000 0x180000>; + no-map; + }; + }; + + soc { + mdio@90000 { + status = "okay"; + }; + + ess-psgmii@98000 { + status = "okay"; + }; + + tcsr@1949000 { + compatible = "qcom,tcsr"; + reg = <0x1949000 0x100>; + qcom,wifi_glb_cfg = ; + }; + + ess_tcsr@1953000 { + compatible = "qcom,tcsr"; + reg = <0x1953000 0x1000>; + qcom,ess-interface-select = ; + }; + + tcsr@1957000 { + compatible = "qcom,tcsr"; + reg = <0x1957000 0x100>; + qcom,wifi_noc_memtype_m0_m2 = ; + }; + + serial@78af000 { + pinctrl-0 = <&serial_pins>; + pinctrl-names = "default"; + status = "okay"; + }; + + crypto@8e3a000 { + status = "okay"; + }; + + watchdog@b017000 { + status = "okay"; + }; + + ess-switch@c000000 { + status = "okay"; + }; + + edma@c080000 { + status = "okay"; + }; + }; + + aliases { + led-boot = &power_amber; + led-failsafe = &power_amber; + led-running = &power_green; + led-upgrade = &power_amber; + }; + + gpio-keys { + compatible = "gpio-keys"; + + wps { + label = "wps"; + gpios = <&tlmm 0 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + reset { + label = "reset"; + gpios = <&tlmm 63 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + led_spi { + compatible = "spi-gpio"; + #address-cells = <1>; + ranges; + + gpio-sck = <&tlmm 5 GPIO_ACTIVE_HIGH>; + gpio-mosi = <&tlmm 4 GPIO_ACTIVE_HIGH>; + num-chipselects = <0>; + + led_gpio: led_gpio@0 { + compatible = "fairchild,74hc595"; + reg = <0>; + gpio-controller; + #gpio-cells = <2>; + registers-number = <1>; + spi-max-frequency = <1000000>; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + power_amber: power_amber { + label = "ex61x0v2:amber:power"; + gpios = <&led_gpio 7 GPIO_ACTIVE_LOW>; + }; + + power_green: power_green { + label = "ex61x0v2:green:power"; + gpios = <&led_gpio 6 GPIO_ACTIVE_LOW>; + }; + + right { + label = "ex61x0v2:blue:right"; + gpios = <&led_gpio 5 GPIO_ACTIVE_LOW>; + }; + + left { + label = "ex61x0v2:blue:left"; + gpios = <&led_gpio 4 GPIO_ACTIVE_LOW>; + }; + + client_green { + label = "ex61x0v2:green:client"; + gpios = <&led_gpio 3 GPIO_ACTIVE_LOW>; + }; + + client_red { + label = "ex61x0v2:red:client"; + gpios = <&led_gpio 2 GPIO_ACTIVE_LOW>; + }; + + router_green { + label = "ex61x0v2:green:router"; + gpios = <&led_gpio 1 GPIO_ACTIVE_LOW>; + }; + + router_red { + label = "ex61x0v2:red:router"; + gpios = <&led_gpio 0 GPIO_ACTIVE_LOW>; + }; + + wps { + label = "ex61x0v2:green:wps"; + gpios = <&tlmm 1 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&tlmm { + serial_pins: serial_pinmux { + mux { + pins = "gpio60", "gpio61"; + function = "blsp_uart0"; + bias-disable; + }; + }; + + spi_0_pins: spi_0_pinmux { + pin { + function = "blsp_spi0"; + pins = "gpio55", "gpio56", "gpio57"; + drive-strength = <12>; + bias-disable; + }; + pin_cs { + function = "gpio"; + pins = "gpio54"; + drive-strength = <2>; + bias-disable; + output-high; + }; + }; +}; + +&spi_0 { + pinctrl-0 = <&spi_0_pins>; + pinctrl-names = "default"; + status = "okay"; + cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>; + + mx25l12805d@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <24000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition0@0 { + label = "SBL1"; + reg = <0x00000000 0x00040000>; + read-only; + }; + + partition1@40000 { + label = "MIBIB"; + reg = <0x00040000 0x00020000>; + read-only; + }; + + partition2@60000 { + label = "QSEE"; + reg = <0x00060000 0x00060000>; + read-only; + }; + + partition3@c0000 { + label = "CDT"; + reg = <0x000c0000 0x00010000>; + read-only; + }; + + partition4@d0000 { + label = "DDRPARAMS"; + reg = <0x000d0000 0x00010000>; + read-only; + }; + + partition5@E0000 { + label = "APPSBLENV"; + reg = <0x000e0000 0x00010000>; + read-only; + }; + + partition6@F0000 { + label = "APPSBL"; + reg = <0x000f0000 0x00080000>; + read-only; + }; + + partition7@170000 { + label = "ART"; + reg = <0x00170000 0x00010000>; + read-only; + }; + + partition8@180000 { + label = "config"; + reg = <0x00180000 0x00010000>; + read-only; + }; + + partition9@190000 { + label = "pot"; + reg = <0x00190000 0x00010000>; + read-only; + }; + + partition10@1a0000 { + label = "dnidata"; + reg = <0x001a0000 0x00010000>; + read-only; + }; + + partition11@1b0000 { + label = "firmware"; + reg = <0x001b0000 0x00e10000>; + }; + + partition12@fc0000 { + label = "language"; + reg = <0x00fc0000 0x00040000>; + read-only; + }; + }; + }; +}; + +&blsp_dma { + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&wifi0 { + status = "okay"; +}; + +&wifi1 { + status = "okay"; +}; diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile index 87545d08de..c13516e6dc 100644 --- a/target/linux/ipq40xx/image/Makefile +++ b/target/linux/ipq40xx/image/Makefile @@ -31,6 +31,18 @@ define Device/UbiFit IMAGE/nand-sysupgrade.bin := sysupgrade-tar | append-metadata endef +define Device/DniImage + KERNEL_SUFFIX := -fit-uImage.itb + KERNEL = kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb + KERNEL_NAME := Image + NETGEAR_BOARD_ID := + NETGEAR_HW_ID := + IMAGES := factory.img sysupgrade.bin + IMAGE/factory.img := append-kernel | pad-offset 64k 64 | append-uImage-fakeroot-hdr | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | netgear-dni + IMAGE/sysupgrade.bin := append-kernel | pad-offset 64k 64 | append-uImage-fakeroot-hdr | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | append-metadata +endef +DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_HW_ID + define Device/8dev_jalapeno $(call Device/FitImage) @@ -113,6 +125,29 @@ define Device/meraki_mr33 endef TARGET_DEVICES += meraki_mr33 +define Device/netgear_ex61x0v2 + $(call Device/DniImage) + KERNEL_SIZE := 3080192 + DEVICE_DTS_CONFIG := config@4 + DEVICE_PACKAGES := ath10k-firmware-qca4019 ipq-wifi-netgear_ex61x0v2 + NETGEAR_BOARD_ID := EX6150v2series + NETGEAR_HW_ID := 29765285+16+0+128+2x2 +endef + +define Device/netgear_ex6100v2 + $(call Device/netgear_ex61x0v2) + DEVICE_DTS := qcom-ipq4018-ex6100v2 + DEVICE_TITLE := Netgear EX6100v2 +endef +TARGET_DEVICES += netgear_ex6100v2 + +define Device/netgear_ex6150v2 + $(call Device/netgear_ex61x0v2) + DEVICE_DTS := qcom-ipq4018-ex6150v2 + DEVICE_TITLE := Netgear EX6150v2 +endef +TARGET_DEVICES += netgear_ex6150v2 + define Device/openmesh_a42 $(call Device/FitImageLzma) DEVICE_DTS := qcom-ipq4018-a42 diff --git a/target/linux/ipq40xx/patches-4.14/069-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.14/069-arm-boot-add-dts-files.patch index 9c09c1fa78..99417d3e36 100644 --- a/target/linux/ipq40xx/patches-4.14/069-arm-boot-add-dts-files.patch +++ b/target/linux/ipq40xx/patches-4.14/069-arm-boot-add-dts-files.patch @@ -10,11 +10,13 @@ Signed-off-by: John Crispin --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -697,7 +697,15 @@ dtb-$(CONFIG_ARCH_QCOM) += \ +@@ -697,7 +697,17 @@ dtb-$(CONFIG_ARCH_QCOM) += \ qcom-apq8074-dragonboard.dtb \ qcom-apq8084-ifc6540.dtb \ qcom-apq8084-mtp.dtb \ + qcom-ipq4018-a42.dtb \ ++ qcom-ipq4018-ex6100v2.dtb \ ++ qcom-ipq4018-ex6150v2.dtb \ + qcom-ipq4018-fritz4040.dtb \ + qcom-ipq4018-jalapeno.dtb \ + qcom-ipq4018-rt-ac58u.dtb \