[OpenWrt-Devel] [PATCH v2 2/2] ipq40xx: add support for AVM FRITZ!Repeater 3000

David Bauer mail at david-bauer.net
Fri Mar 8 15:20:54 PST 2019


Hardware
--------
CPU:   Qualcomm IPQ4019
RAM:   256M (NANYA NT5CC128M16JR-EK)
FLASH: 128M NAND (Macronix MX30LF1G18AC-XKI)
ETH:   Qualcomm QCA8072
WiFi2: IPQ4019 2T2R 2SS b/g/n
WiFi5: IPQ4019 2T2R 2SS n/ac
WiFi5: QCA9984 4T4R 4SS n/ac
LED:    - Connect green/blue/red
        - Power green
BTN:   WPS/Connect
UART:  115200n8 3.3V
       VCC - RX - TX - GND (Square is VCC)

Installation
------------
1. Grab the uboot for the Device from the 'u-boot-fritz3000'
   subdirectory. Place it in the same directory as the 'eva_ramboot.py'
   script. It is located in the 'scripts/flashing' subdirectory of the
   OpenWRT tree.

2. Assign yourself the IP address 192.168.178.10/24. Connect your
   Computer to one of the boxes LAN ports.

3. Connect Power to the Box. As soon as the LAN port of your computer
   shows link, load the U-Boot to the box using following command.

   > ./eva_ramboot.py --offset 0x85000000 192.168.178.1 uboot-fritz3000.bin

4. The U-Boot will now start. Now assign yourself the IP address
   192.168.1.70/24. Copy the OpenWRT initramfs (!) image to a TFTP
   server root directory and rename it to 'FRITZ3000.bin'.

5. The Box will now boot OpenWRT from RAM. This can take up to two
   minutes.

6. Copy the U-Boot and the OpenWRT sysupgrade (!) image to the Box using
   scp. SSH into the Box and first write the Bootloader to both previous
   kernel partitions.

   > mtd write /path/to/uboot-fritz3000.bin uboot0
   > mtd write /path/to/uboot-fritz3000.bin uboot1

7. Remove the AVM filesystem partitions to make room for our kernel +
   rootfs + overlayfs.

   > ubirmvol /dev/ubi0 --name=avm_filesys_0
   > ubirmvol /dev/ubi0 --name=avm_filesys_1

8. Flash OpenWRT peristently using sysupgrade.

   > sysupgrade -n /path/to/openwrt-sysupgrade.bin

Signed-off-by: David Bauer <mail at david-bauer.net>
---
v2:
 - remove cs-gpio property from nand node
 - add device-specific BDF package
 - add RAM and NAND chip model information

 package/boot/uboot-fritz4040/Makefile         |   7 +-
 package/firmware/ipq-wifi/Makefile            |   3 +-
 .../ipq-wifi/board-avm_fritzrepeater-3000.bin | Bin 0 -> 24332 bytes
 .../ipq40xx/base-files/etc/board.d/02_network |   1 +
 .../etc/hotplug.d/firmware/11-ath10k-caldata  |  10 +-
 .../base-files/lib/upgrade/platform.sh        |   1 +
 .../dts/qcom-ipq4019-fritzrepeater-3000.dts   | 260 +++++++++++++++++
 .../dts/qcom-ipq4019-fritzrepeater-3000.dts   | 264 ++++++++++++++++++
 target/linux/ipq40xx/image/Makefile           |   9 +
 .../901-arm-boot-add-dts-files.patch          |   3 +-
 .../901-arm-boot-add-dts-files.patch          |   3 +-
 11 files changed, 555 insertions(+), 6 deletions(-)
 create mode 100644 package/firmware/ipq-wifi/board-avm_fritzrepeater-3000.bin
 create mode 100644 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzrepeater-3000.dts
 create mode 100644 target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzrepeater-3000.dts

diff --git a/package/boot/uboot-fritz4040/Makefile b/package/boot/uboot-fritz4040/Makefile
index 3182842c89..015ca1deb9 100644
--- a/package/boot/uboot-fritz4040/Makefile
+++ b/package/boot/uboot-fritz4040/Makefile
@@ -25,6 +25,11 @@ define U-Boot/Default
   UBOOT_IMAGE:=uboot-$(1).bin
 endef
 
+define U-Boot/fritz3000
+  NAME:=FritzRepeater 3000
+  BUILD_DEVICES:=avm_fritzrepeater-3000
+endef
+
 define U-Boot/fritz4040
   NAME:=FritzBox 4040
   BUILD_DEVICES:=avm_fritzbox-4040
@@ -61,6 +66,6 @@ define Package/u-boot/install
 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/upload-to-f4040.sh $(1)/
 endef
 
-UBOOT_TARGETS := fritz4040 fritz7530
+UBOOT_TARGETS := fritz3000 fritz4040 fritz7530
 
 $(eval $(call BuildPackage/U-Boot))
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index 9a00832ca2..d273667f68 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -18,7 +18,7 @@ endef
 # Please send a mail with your device-specific board files upstream.
 # You can find instructions and examples on the linux-wireless wiki:
 # <https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles>
-ALLWIFIBOARDS:=alfa-network_ap120c-ac asus_map-ac2200 avm_fritzbox-7530 engenius_eap1300 linksys_ea6350v3 qxwlan_e2600ac
+ALLWIFIBOARDS:=alfa-network_ap120c-ac asus_map-ac2200 avm_fritzbox-7530 avm_fritzrepeater-3000 engenius_eap1300 linksys_ea6350v3 qxwlan_e2600ac
 ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
 
 define Package/ipq-wifi-default
@@ -57,6 +57,7 @@ $(eval $(call generate-ipq-wifi-package,alfa-network_ap120c-ac,board-alfa-networ
 $(eval $(call generate-ipq-wifi-package,asus_map-ac2200,board-map-ac2200.bin,ASUS MAP-AC2200))
 $(eval $(call generate-ipq-wifi-package,engenius_eap1300,board-engenius_eap1300.bin,EnGenius EAP1300))
 $(eval $(call generate-ipq-wifi-package,avm_fritzbox-7530,board-avm_fritzbox-7530.bin,AVM FRITZ!Box 7530))
+$(eval $(call generate-ipq-wifi-package,avm_fritzrepeater-3000,board-avm_fritzrepeater-3000.bin,AVM FRITZ!Repeater 3000))
 $(eval $(call generate-ipq-wifi-package,linksys_ea6350v3,board-linksys_ea6350v3.bin,Linksys EA6350v3))
 $(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac,board-qxwlan-e2600ac.bin,Qxwlan E2600AC))
 
diff --git a/package/firmware/ipq-wifi/board-avm_fritzrepeater-3000.bin b/package/firmware/ipq-wifi/board-avm_fritzrepeater-3000.bin
new file mode 100644
index 0000000000000000000000000000000000000000..69e40a1e7a5218ee0028f88bfe5b5a8a73636e32
GIT binary patch
literal 24332
zcmeHPTTl~O8a_d8Dk`0XTL?`^xWy#_0;>_Cgb<koT3}d2h^`9=N&*ZKkc)9j%0Wep
z$cQprj39-ITzXxlT%A#wT^-li(v-U|^XALG&4W}~TU)-Yv!~N(NF<C2!pf!paQgh`
z at AIGkKVNr}?mi#+JS|m}nx~47%M>ZHQ*)J|s;UY=sf#7H04QN8Ia0g5xV$8$q)IC~
zP_EUBw58kQEUl92;+j&TDT#}zFRsxRe^IwRHGh{VJy)Hl$t}~D71x#3h!W!B;uvro
z9vqVwJMPP1fHlXNiTT9%n+Jd!C<0)emoL!-aLZ4CwKse at 5}`1G7z%)dgoJ;;c>`o@
zPw at 6%=ToS%hV97f!!{mZJbk}c2N?<c0_FXEbGJ85 at A8GSAzqXaIa2yeo#HU#2`3}Y
z^jkMQBoC0UX at gZ^Gi@!7<34mUE-?}@Guy&~ZK80k1y(M}`t=((y5!)XGv9&jQ<(Ja
zW5j7=75fZc4Uf0A>9lH1%B%6d)}~TTrh40>k-pPyHQLYBTON%<tyY_>{_R^Rx9<w0
z!0VCmlWi5+T^jkT(Y{kn<r+*advufNrctY<(BW)b1GFWR4pE!I>!I;uO$C}HbqsWE
zX*!@$!fx05+MsKuH2Tqa--RZ<CRZ9~b%?Uh?*pwSC?DuzzngZj$HQ at JC7|SZX3NX^
zWT4{93|-tF|CF&SwXIuABX)B#AC4UENk1K36Ij$Uy0>TBX<jX>`2J<>vCIm=E`Ry`
z!Rk}V<-)>X?CH&>Z?aE|YeNovJKE5*>#V4Od+^B>{ju~izM7Tvc&NH1qdIc8zw*X)
zZMUlJHx0q%_s8q|V~>aGSw+hWB|2LQ0S~XW>o;sdSbhOP!6Bj4C;m)Le8$cQ<z-jH
z3nBm*3^zA72C-eU#>2zI(<)xW9gRh*XD4!^+2P>=_!q$s3ls3e`22i#Z(zMbu^WwU
zEGhyW9rg8jd04s>tY7cxNrsXNBLsYYC~UC3{`2<TJ3pwAHo_R<<K^b={$ER125{t0
zj<R at L{TRF+fy3*Mw~rBph!ky=$Z$gVyb%A$a6X at hayfxeo4*Zu3IqaTAULXZypORt
zLIpt)Bo$3X;?a0Sf8^-#mNV_0-Ln-Sv&sXP6eh|PGoLdN4$2X8FkjRc2}BjBLacbM
zKr+w_aRw$w<%kNEpc1j<xdcf<lf+3_92$p6(di^igO1hdoMf`;tY~%C at o@$c7Rq|f
zLW0p?aWIyKroB!>GSN(NCYFFEyiP!p(PVKlMjiy)ttAu*{i1J)b60=HG-g{OK2m1B
zSsZJQ-Y at gDt%Pe*dJfJUeHtYir8y9wPmMW%u`{nql<W|o8#Dqm0yF|N0yF|N0;?E-
z07(E6%KS|78IsN1D%pypFuf at Oxg{3{Z$Gx(Qn&uD)w5%)rDVZktl~pRPkp5z;Oq*4
zv;CGCF4(?u<HQR9VBKgOn0WDi4WCrQXVfS+h%FHC$cNuhTRJvA6ia at A7KL~?&t6Kl
zFetoGh+hCyU`^z=lx$1=biL?>0C^$+Mkd1WhtgrKFIwwpZv at DI%v}x;@b|~UW&q-W
z0D(LzNW9 at gJ`Yu7(5~<hzEpS#{{ah8TZ*qc0=$|%c*Ai2tCv56pMLt;QWH8+Xj!=k
z{Bp~O?dDbrS0DgjxVd|O1LZ0dYR31Ve2fh%fFG^{6F<&XM at 2@2f679x+>vW_<mw!j
zlUJ~>sI=VJak2aIz|ip6t%-XN|MJ6+FI?YYvySK5mFu$U4J_-R7_*gH3AL<&Vv1I3
z71Xl+iAh?i6;RhfoYQ0Fqq}TQgO!!2Gi%0K`TGyHcU`%T-<|y1T>8pFWo9<)cWi`<
za>ZPX4V3Sc2!>)}3{!%{cZrA$m5F6o;)2~@&qQ at a^OyJ|C^KD>j$|>nNVXt5n3`VV
zHG2%|dycA?%Po$p-1~T^x%XHXg8_;6jU5&yxSy4K at 8?A#1TQNE1os{QcX!fazZLv$
zHuoNK5K^czU+z7O^1Xc|02Z2iPvl6%K<xrK=D^Qz>g_tuYRvR=f_rc0?KrM0+<U-c
zu^bjImkWsE<KyE>S-W;Ix%YDR0Q;rG|8uZ|WzNRv=;)mLX77N<+D2yYch<5hmvre#
zJ9Bz0L6n?Ho9;s+KqEjSuv`%+D$?YW+<PX|cLO;K7rFOEr2mEuZf{8cg9oWGIUIOR
zwctW?@2z)c52!n|UsGuA{WLnxP~a&@|L=XBd5&Vsx+ir at y5s~GeM`KNZF%>E{*l!C
z2&{m3;QjE0&FzJq`k at bxsWawE95clmxl^s?3Ov&!F@{XuHFX&d7p6-iCU4_IMuV<U
z$|e3^>~eQhG??l%H{lwS+$fs5WH#V?O$uWyK4BWr=?b%?F_V8bT`*J?Dx^HZ!PFBK
z1*Uq<C-Fn39OL$>e)Ac;(zM$k!oM|k>1tF;sRTN78Y(G=D?L#{0K1*T^~PM?mZ at vz
zPQ1}rpp)T~#y(x0YG-tyB|?R6FPW05mq^KEZo?}K%EIueLGyXM#<*Lz1OLw0qpMe`
zqJt;znJ!sU3MEpy(i;sUbeq4z4;Xf+IMB5f*BTV6VEj*}eqEI+RT^vl4j(i&>GnuD
zghPL?FcM64nVaz<Ly{_Js>j at dml|ZMAecyx;YeYoRA|17_Zn+-*{X0df)J*3-rR^6
z7$hq8)Ys;txCUy7`96LXVkwuRukK7<HZ|zdR6%3}I0si`30~^cDLHchX_RP`=0IR2
zoEmdXjW(}Z1n!<W_WPajB5si9wbsggTP0y38@=ng(p!XwIVC>n-w&0Y+inmX3Ml+*
zXQL)X6zLb}ap%&piVTG$HaPJ7Kz at 7tQJ!v7*3+An7v#+mRYCio^=fmrMnwhy at TmW2
zr7BG<3JJM4e7H+~LRiDx{dh#%nbIt%4BY>uzqUxRC4w91^Wa+LA(aZ{`?8FEStsM`
z{Pt|vdH-g~g{0%W3ctM%O_lp{lriCm`@~><%}y0R+K<!LlYJ_&KCsY7b!YSsm!u~`
ztNiv)bk`kF?}!nwJV#9RwQ5Wv^$VWpuW3&^7E|S)`|OVyXJeXz4*Kr7)pb;ttrYT^
zo<lv=U*zP85`+0SdbF)Oj%+@}%Dg^Y-J9GZsA2EFab91dOcrpt?B1_S%XVhONc=eG
z+V^~!sN?Tt%5RU<Ud}of-4Ix|YEK+`;xqy)0D+JFB at QoJae&7_t6n8-)W{^!5fS0=
z5B>@VPY at Qy56kyhGQY$zn-@<}@4Xjn-F|iqih93x!D2XopEl75%nt!)i60ByZ+_XX
z7%!T84|(y6$lG5^JbOpEEcFw47;@@K4m at Jv(Gwi|buGeXCFII)-o{TQOX%Uv+brd(
zuY0_OOHc6Wy_(m-Lew5S3-_Mj+j|KAY2o0LJp7kSeg3OCKY|<Y4!Q9K-NQdD1~-1O
zv7L)^PuV{u at 1BTFbMI%C=H{W%-1~WeM!PI+1e{qjo{Mj9YhT*4oPTyS_kOXzHGh5l
F{{b>Ii|GIW

literal 0
HcmV?d00001

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 9c232d49f7..5f1f87974a 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -37,6 +37,7 @@ ipq40xx_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0u at eth0" "1:lan" "2:lan" "3:lan" "4:lan"
 		;;
+	avm,fritzrepeater-3000|\
 	compex,wpj428)
 		ucidef_set_interface_lan "eth0 eth1"
 		;;
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 1264d2ef36..8520dfb41d 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
@@ -111,6 +111,10 @@ case "$FIRMWARE" in
 		ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
 			/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
 		;;
+	avm,fritzrepeater-3000)
+		/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")
+		;;
 	openmesh,a62)
 		ath10kcal_extract "0:ART" 36864 12064
 		;;
@@ -135,7 +139,8 @@ case "$FIRMWARE" in
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
-	avm,fritzbox-7530)
+	avm,fritzbox-7530 |\
+	avm,fritzrepeater-3000)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
 		/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
 		;;
@@ -183,7 +188,8 @@ case "$FIRMWARE" in
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
-	avm,fritzbox-7530)
+	avm,fritzbox-7530 |\
+	avm,fritzrepeater-3000)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
 		/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
 		;;
diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
index 9a2c13cf4d..84b123335c 100644
--- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
@@ -49,6 +49,7 @@ platform_do_upgrade() {
 	8dev,jalapeno |\
 	alfa-network,ap120c-ac |\
 	avm,fritzbox-7530 |\
+	avm,fritzrepeater-3000|\
 	qxwlan,e2600ac-c2)
 		nand_do_upgrade "$ARGV"
 		;;
diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzrepeater-3000.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzrepeater-3000.dts
new file mode 100644
index 0000000000..07a140095a
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzrepeater-3000.dts
@@ -0,0 +1,260 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "AVM FRITZ!Repeater 3000";
+	compatible = "avm,fritzrepeater-3000";
+
+	aliases {
+		led-boot = &power_led;
+		led-failsafe = &power_led;
+		led-running = &power_led;
+		led-upgrade = &power_led;
+	};
+
+	soc {
+		mdio at 90000 {
+			status = "okay";
+		};
+
+		ess-psgmii at 98000 {
+			status = "okay";
+		};
+
+		tcsr at 1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		ess_tcsr at 1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr at 1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		crypto at 8e3a000 {
+			status = "okay";
+		};
+
+		watchdog at b017000 {
+			status = "okay";
+		};
+
+		ess-switch at c000000 {
+			status = "okay";
+
+			switch_lan_bmp = <0x10>;
+			switch_wan_bmp = <0x20>;
+		};
+
+		edma at c080000 {
+			status = "okay";
+		};
+	};
+
+	key {
+		compatible = "gpio-keys";
+
+		connect {
+			label = "Connect";
+			gpios = <&tlmm 10 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		connect_red {
+			label = "fritzwlan-3000:red:connect";
+			gpios = <&tlmm 30 GPIO_ACTIVE_LOW>;
+		};
+
+		connect_green {
+			label = "fritzwlan-3000:green:connect";
+			gpios = <&tlmm 31 GPIO_ACTIVE_LOW>;
+		};
+
+		connect_blue {
+			label = "fritzwlan-3000:blue:connect";
+			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
+		};
+
+		power_led: power {
+			label = "fritzwlan-3000:green:power";
+			gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&tlmm {
+	serial_0_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = "gpio53", "gpio58", "gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins = "gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	nand at 0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "SBL1";
+				reg = <0x000000 0x80000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "MIBIB";
+				reg = <0x080000 0x80000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "QSEE";
+				reg = <0x100000 0x80000>;
+				read-only;
+			};
+
+			partition at 180000 {
+				label = "CDT";
+				reg = <0x180000 0x40000>;
+				read-only;
+			};
+
+			partition at 1c0000 {
+				label = "QSEE_B";
+				reg = <0x1c0000 0x80000>;
+				read-only;
+			};
+
+			partition at 240000 {
+				label = "urlader0";
+				reg = <0x240000 0x40000>;
+				read-only;
+			};
+
+			partition at 280000 {
+				label = "urlader1";
+				reg = <0x280000 0x40000>;
+				read-only;
+			};
+
+			partition at 2c0000 {
+				label = "nand-tffs";
+				reg = <0x2c0000 0x840000>;
+				read-only;
+			};
+
+			partition at b00000 {
+				/* 'kernel1' in AVM firmware */
+				label = "uboot0";
+				reg = <0xb00000 0x400000>;
+			};
+
+			partition at f00000 {
+				/* 'kernel2' in AVM firmware */
+				label = "uboot1";
+				reg = <0xf00000 0x400000>;
+			};
+
+			partition at 1300000 {
+				label = "ubi";
+				reg = <0x1300000 0x6d00000>;
+			};
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0 {
+	status = "okay";
+	/* BDFs are identical for the FRITZ!Box 7530 and the FRITZ!Repeater 3000 */
+	qcom,ath10k-calibration-variant = "AVM-FRITZRepeater-3000";
+};
+
+&wifi1 {
+	status = "okay";
+	ieee80211-freq-limit = <5170000 5350000>;
+	/* BDFs are identical for the FRITZ!Box 7530 and the FRITZ!Repeater 3000 */
+	qcom,ath10k-calibration-variant = "AVM-FRITZRepeater-3000";
+};
+
+&pcie0 {
+	status = "okay";
+
+	perst-gpio = <&tlmm 35 GPIO_ACTIVE_LOW>;
+	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+	bridge at 0,0 {
+		reg = <0x00000000 0 0 0 0>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		wifi at 1,0 {
+			/* QCA9984 */
+			compatible = "qcom,ath10k";
+			status = "okay";
+			reg = <0x00010000 0 0 0 0>;
+			ieee80211-freq-limit = <5470000 5875000>;
+			/* Uses the reference BDF */
+		};
+	};
+};
diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzrepeater-3000.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzrepeater-3000.dts
new file mode 100644
index 0000000000..6914917eb3
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzrepeater-3000.dts
@@ -0,0 +1,264 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "AVM FRITZ!Repeater 3000";
+	compatible = "avm,fritzrepeater-3000";
+
+	aliases {
+		led-boot = &power_led;
+		led-failsafe = &power_led;
+		led-running = &power_led;
+		led-upgrade = &power_led;
+	};
+
+	soc {
+		rng at 22000 {
+			status = "okay";
+		};
+
+		mdio at 90000 {
+			status = "okay";
+		};
+
+		ess-psgmii at 98000 {
+			status = "okay";
+		};
+
+		tcsr at 1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		ess_tcsr at 1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr at 1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		crypto at 8e3a000 {
+			status = "okay";
+		};
+
+		watchdog at b017000 {
+			status = "okay";
+		};
+
+		ess-switch at c000000 {
+			status = "okay";
+
+			switch_lan_bmp = <0x10>;
+			switch_wan_bmp = <0x20>;
+		};
+
+		edma at c080000 {
+			status = "okay";
+		};
+	};
+
+	key {
+		compatible = "gpio-keys";
+
+		connect {
+			label = "Connect";
+			gpios = <&tlmm 10 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		connect_red {
+			label = "fritzwlan-3000:red:connect";
+			gpios = <&tlmm 30 GPIO_ACTIVE_LOW>;
+		};
+
+		connect_green {
+			label = "fritzwlan-3000:green:connect";
+			gpios = <&tlmm 31 GPIO_ACTIVE_LOW>;
+		};
+
+		connect_blue {
+			label = "fritzwlan-3000:blue:connect";
+			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
+		};
+
+		power_led: power {
+			label = "fritzwlan-3000:green:power";
+			gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&tlmm {
+	serial_0_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = "gpio53", "gpio58", "gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins = "gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	nand at 0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "SBL1";
+				reg = <0x000000 0x80000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "MIBIB";
+				reg = <0x080000 0x80000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "QSEE";
+				reg = <0x100000 0x80000>;
+				read-only;
+			};
+
+			partition at 180000 {
+				label = "CDT";
+				reg = <0x180000 0x40000>;
+				read-only;
+			};
+
+			partition at 1c0000 {
+				label = "QSEE_B";
+				reg = <0x1c0000 0x80000>;
+				read-only;
+			};
+
+			partition at 240000 {
+				label = "urlader0";
+				reg = <0x240000 0x40000>;
+				read-only;
+			};
+
+			partition at 280000 {
+				label = "urlader1";
+				reg = <0x280000 0x40000>;
+				read-only;
+			};
+
+			partition at 2c0000 {
+				label = "nand-tffs";
+				reg = <0x2c0000 0x840000>;
+				read-only;
+			};
+
+			partition at b00000 {
+				/* 'kernel1' in AVM firmware */
+				label = "uboot0";
+				reg = <0xb00000 0x400000>;
+			};
+
+			partition at f00000 {
+				/* 'kernel2' in AVM firmware */
+				label = "uboot1";
+				reg = <0xf00000 0x400000>;
+			};
+
+			partition at 1300000 {
+				label = "ubi";
+				reg = <0x1300000 0x6d00000>;
+			};
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0 {
+	status = "okay";
+	/* BDFs are identical for the FRITZ!Box 7530 and the FRITZ!Repeater 3000 */
+	qcom,ath10k-calibration-variant = "AVM-FRITZRepeater-3000";
+};
+
+&wifi1 {
+	status = "okay";
+	ieee80211-freq-limit = <5170000 5350000>;
+	/* BDFs are identical for the FRITZ!Box 7530 and the FRITZ!Repeater 3000 */
+	qcom,ath10k-calibration-variant = "AVM-FRITZRepeater-3000";
+};
+
+&pcie0 {
+	status = "okay";
+
+	perst-gpio = <&tlmm 35 GPIO_ACTIVE_LOW>;
+	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+	bridge at 0,0 {
+		reg = <0x00000000 0 0 0 0>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		wifi at 1,0 {
+			/* QCA9984 */
+			compatible = "qcom,ath10k";
+			status = "okay";
+			reg = <0x00010000 0 0 0 0>;
+			ieee80211-freq-limit = <5470000 5875000>;
+			/* Uses the reference BDF */
+		};
+	};
+};
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
index 3a7ecf39eb..49ff71c6bc 100644
--- a/target/linux/ipq40xx/image/Makefile
+++ b/target/linux/ipq40xx/image/Makefile
@@ -130,6 +130,15 @@ define Device/avm_fritzbox-7530
 endef
 TARGET_DEVICES += avm_fritzbox-7530
 
+define Device/avm_fritzrepeater-3000
+	$(call Device/FitImageLzma)
+	DEVICE_DTS := qcom-ipq4019-fritzrepeater-3000
+	DEVICE_TITLE := AVM Fritz!Repeater 3000
+	DEVICE_PACKAGES := ath10k-firmware-qca9984-ct fritz-caldata ipq-wifi-avm_fritzrepeater-3000
+	IMAGES := sysupgrade.bin
+endef
+TARGET_DEVICES += avm_fritzrepeater-3000
+
 define Device/compex_wpj428
 	$(call Device/FitImage)
 	DEVICE_DTS := qcom-ipq4028-wpj428
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 89ce5b1538..951479a2ef 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 at phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -697,7 +697,27 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -697,7 +697,28 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -29,6 +29,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
 +	qcom-ipq4019-a62.dtb \
 +	qcom-ipq4019-ap.dk04.1-c1.dtb \
 +	qcom-ipq4019-fritzbox-7530.dtb \
++	qcom-ipq4019-fritzrepeater-3000.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 f47b7b6dab..23b3b4546a 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 at phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -785,11 +785,30 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -785,11 +785,31 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -32,6 +32,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	qcom-ipq4019-ap.dk07.1-c2.dtb \
 +	qcom-ipq4019-a62.dtb \
 +	qcom-ipq4019-fritzbox-7530.dtb \
++	qcom-ipq4019-fritzrepeater-3000.dtb \
 +	qcom-ipq4019-map-ac2200.dtb \
 +	qcom-ipq4019-qxwlan-e2600ac-c1.dtb \
 +	qcom-ipq4019-qxwlan-e2600ac-c2.dtb \
-- 
2.21.0




More information about the openwrt-devel mailing list