From 8e89bbc08b54fb409b1c44b9dd2911b0e96907f2 Mon Sep 17 00:00:00 2001 From: Giammarco Marzano Date: Wed, 14 Sep 2022 14:20:43 +0200 Subject: [PATCH] ipq40xx: Add ZTE MF289F It's a 4G Cat.20 router used by Vodafone Italy (called Vodafone FWA) and Vodafone DE\T-Mobile PL (called GigaCube). Modem is a MiniPCIe-to-USB based on Snapdragon X24, it supports 4CA aggregation. There are currently two hardware revisions, which differ on the 5Ghz radio: AT1 = QCA9984 5Ghz Radio on PCI-E bus AT2 = IPQ4019 5Ghz Radio inside IPQ4019 like 2.4Ghz Device specification -------------------- SoC Type: Qualcomm IPQ4019 RAM: 256 MiB Flash: 128 MiB SPI NAND (Winbond W25N01GV) ROM: 2MiB SPI Flash (GD25Q16) Wireless 2.4 GHz (IP4019): b/g/n, 2x2 Wireless 5 GHz: (QCA9984): a/n/ac, 4x4 HW REV AT1 (IPA4019): a/n/ac, 2x2 HW REV AT2 Ethernet: 2xGbE (WAN/LAN1, LAN2) USB ports: No Button: 2 (Reset/WPS) LEDs: 3 external leds: Network (white or red), Wifi, Power and 1 internal (blue) Power: 12 VDC, 1 A Connector type: Barrel Bootloader: U-Boot Installation ------------ 1. Place OpenWrt initramfs image for the device on a TFTP in the server's root. This example uses Server IP: 192.168.0.2 2. Connect serial console (115200,8n1) to serial connector GND (which is right next to the thing with MF289F MIMO-V1.0), RX, TX (refer to this image: https://ibb.co/31Gngpr). 3. Connect TFTP server to RJ-45 port (WAN/LAN1). 4. Stop in u-Boot (using ESC button) and run u-Boot commands: setenv serverip 192.168.0.2 setenv ipaddr 192.168.0.1 set fdt_high 0x85000000 tftp openwrt-ipq40xx-generic-zte_mf289f-initramfs-fit-zImage.itb bootm $loadaddr 5. Please make backup of original partitions, if you think about revert to stock, specially mtd16 (Web UI) and mtd17 (rootFS). Use /tmp as temporary storage and do: WEB PARITION -------------------------------------- cat /dev/mtd16 > /tmp/mtd16.bin scp /tmp/mtd16.bin root@YOURSERVERIP:/ rm /tmp/mtd16.bin ROOT PARITION -------------------------------------- cat /dev/mtd17 > /tmp/mtd17.bin scp /tmp/mtd17.bin root@YOURSERVERIP:/ rm /tmp/mtd17.bin 6. Login via ssh or serial and remove stock partitions (default IP 192.168.0.1): # this can return an error, if ubi was attached before # or rootfs part was erased before. ubiattach -m 17 # it could return error if rootfs part was erased before ubirmvol /dev/ubi0 -N ubi_rootfs # some devices doesn't have it ubirmvol /dev/ubi0 -N ubi_rootfs_data 7. download and install image via sysupgrade -n (either use wget/scp to copy the mf289f's squashfs-sysupgrade.bin to the device's /tmp directory) sysupgrade -n /tmp/openwrt-...-zte_mf289f-squashfs-sysupgrade.bin Sometimes it could print ubi attach error, but please ignore it if process goes forward. Flash Layout NAND: mtd8: 000a0000 00020000 "fota-flag" mtd9: 00080000 00020000 "0:ART" mtd10: 00080000 00020000 "mac" mtd11: 000c0000 00020000 "reserved2" mtd12: 00400000 00020000 "cfg-param" mtd13: 00400000 00020000 "log" mtd14: 000a0000 00020000 "oops" mtd15: 00500000 00020000 "reserved3" mtd16: 00800000 00020000 "web" mtd17: 01d00000 00020000 "rootfs" mtd18: 01900000 00020000 "data" mtd19: 03200000 00020000 "fota" mtd20: 0041e000 0001f000 "kernel" mtd21: 0101b000 0001f000 "ubi_rootfs" SPI: mtd0: 00040000 00010000 "0:SBL1" mtd1: 00020000 00010000 "0:MIBIB" mtd2: 00060000 00010000 "0:QSEE" mtd3: 00010000 00010000 "0:CDT" mtd4: 00010000 00010000 "0:DDRPARAMS" mtd5: 00010000 00010000 "0:APPSBLENV" mtd6: 000c0000 00010000 "0:APPSBL" mtd7: 00050000 00010000 "0:reserved1" Back to Stock (!!! need original dump taken from initramfs !!!) ------------- 1. Place mtd16.bin and mtd17.bin initramfs image for the device on a TFTP in the server's root. This example uses Server IP: 192.168.0.2 2. Connect serial console (115200,8n1) to serial console connector (refer to the pin-out from above). 3. Connect TFTP server to RJ-45 port (WAN/LAN1). 4. rename mtd16.bin to web.img and mtd17.bin to root_uImage_s 5. Stop in u-Boot (using ESC button) and run u-Boot commands: This will erase RootFS+Web: nand erase 0x1000000 0x800000 nand erase 0x1800000 0x1D00000 This will restore RootFS: tftpboot 0x84000000 ${dir}root_uImage_s nand erase 0x1800000 0x1D00000 nand write $fileaddr 0x1800000 $filesize This will restore Web Interface: tftpboot 0x84000000 ${dir}web.img nand erase 0x1000000 0x800000 nand write $fileaddr 0x1000000 $filesize After first boot on stock firwmare, do a factory reset. Push reset button for 5 seconds so all parameters will be reverted to the one printed on label on bottom of the router Signed-off-by: Giammarco Marzano Reviewed-by: Lech Perczak (Warning: commit message did not conform to UTF-8 - hopefully fixed?, added description of the pin-out if image goes down, reformatted commit message to be hopefully somewhat readable on git-web, redid some of the gpio-buttons & leds DT nodes, etc.) Signed-off-by: Christian Lamparter --- package/firmware/ipq-wifi/Makefile | 4 +- .../ipq-wifi/board-zte_mf289f.qca4019 | Bin 0 -> 24308 bytes .../ipq-wifi/board-zte_mf289f.qca9984 | Bin 0 -> 12204 bytes .../ipq40xx/base-files/etc/board.d/02_network | 5 + .../base-files/etc/board.d/03_gpio_switches | 3 +- .../base-files/lib/upgrade/platform.sh | 6 +- .../arch/arm/boot/dts/qcom-ipq4019-mf289f.dts | 438 ++++++++++++++++++ target/linux/ipq40xx/image/generic.mk | 15 +- 8 files changed, 465 insertions(+), 6 deletions(-) create mode 100644 package/firmware/ipq-wifi/board-zte_mf289f.qca4019 create mode 100644 package/firmware/ipq-wifi/board-zte_mf289f.qca9984 create mode 100644 target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-mf289f.dts diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index e76aa9235e0c41..da82e16dde1659 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -38,7 +38,8 @@ ALLWIFIBOARDS:= \ qxwlan_e2600ac-c1 \ qxwlan_e2600ac-c2 \ sony_ncp-hg100-cellular \ - teltonika_rutx + teltonika_rutx \ + zte_mf289f ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD)) @@ -113,5 +114,6 @@ $(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac-c1,Qxwlan E2600AC C1)) $(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac-c2,Qxwlan E2600AC C2)) $(eval $(call generate-ipq-wifi-package,sony_ncp-hg100-cellular,Sony NCP-HG100/Cellular)) $(eval $(call generate-ipq-wifi-package,teltonika_rutx,Teltonika RUTX)) +$(eval $(call generate-ipq-wifi-package,zte_mf289f,ZTE MF289F)) $(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE)))) diff --git a/package/firmware/ipq-wifi/board-zte_mf289f.qca4019 b/package/firmware/ipq-wifi/board-zte_mf289f.qca4019 new file mode 100644 index 0000000000000000000000000000000000000000..3a4cb8b888cc7e7282b064fce2c0d6e48f562702 GIT binary patch literal 24308 zcmeHPdr(tX8b1j^)WyOLAtK->oQjvu$S|-I;aQcC|b0%8Jt@ka^; z*woR(GO#iIdjJLG0kF{yYXQIjz%dlB(ePY9<8s;9PymF6hJOG2IYr1=2Y&qXxhNvp zzyTI1_x0^sv@?O1P~fqd)=bf>-K!c{nsw`1b1a9!i*B?yW=sXK&cs(h6 z;v;Av#SQx4AjMfJ0zWuhYfVX3x*&MQz<0iXKhvs#@-toLA0`dv<6*e98c;I4vX!On zZOX3-FZ9iDPnm2ht4oma4m!t<50rK!obfAj$?F)*?g&4_DtF57Ys{C27x?Vmnsl$_ zXzgxEK(=$_XZxxs46{SY9_HcGv4OgIylIy@!u-I9~A2o9*f8#r9;gGid9HYZAg2vRr-yGBeXt z*=!Fu(GNd7|8{yBy8;q$y}h)$|9<<2Z*+B7$F25uR2uDnu%81wVRQB`UOfMow(oL# zT`~l(N8ltSb-G6X9ybvMUWUY1_?n! zkP`Xvx|8oVx3w><0O5?>Gpj;J={)*lI^v4D@?1rZs3YQn#-g#j*vGL*GMdaw7Dc1c zNFvHd`8@t(KC%ZjMi-g?`y{Z10x5s~XZx-b)mnj~0VfL;o*} z)vbnWQgRKZoP81{5+x%DkXyqDF!R)F5~X(UtU|Fr~8GWK(@&W?_0{s0rEYvz{&^dp9KOg9ymDZqpGyYj+ z&5E|7L06&y0-V0#)&md%d>|9Z1163mjLyJ>l`ZrT7^!i0C!#e(c>(GdYT4|ZHVzO9 zDB$~J0OYMh0M(hgF$b28j(CvKpbw;Sbt3R`*q%Y99)b}F7+t2)*1r$s3KU|sV^Ef& z6J^3T*PhWYjFrAV-ke`DX(M;qSe-UHC)%?wGbis*v9jetdsk2I^`YU>vGGqHe(}Wo z13Ga$^R8T1OmBe4K}GZiA`*(nKt-_)L=+T{e~S1GLvVC<6 z&i;1pfoSAG-nLymtl<3ZSG0V4ytyFbikFRVe^Y-lJ-)sEVIyrVWgO$Z8{^xfh_0!Y z_ine&#+EkAd5T=VQ z*4P)?uou2T%U!78+V3cMIt|OyUsFIehYALUs9^9rDtIzx1D*+K zz+s#QqITH=#M#Dn=BHhjafBR&M1VwK4Iwbcmp8<>|Igq5^7U6={T||><=|s{`lysha})hcqu0?jSeMMbGNLExs=ll2kX9xp`nhSw zRPW&~d0;Nxf8fUjaH-wub1Jzq54xmMol=%6#OfQWZmBFWMi4Z0SAA7kBRwE+)f#Yp zur;)*jw_24sqo-sWwmsVI0!n@p^%GH1l*}x>PyNpX<8x&Gx%hZ3sJhM=}?s`a~1JZ zWAI?PB1f7G-Mj*^j258qXqT!=8ke{QH+TrwV2)Vfr9SDBDJPIbiA2c=0;^$b7+D&r zUb6_aj~u-gbs@09t@4Wc*PZd_d~3HHt+<$Ql3VIpV4rZmxA5#Ph1cQD;wvK+*J9g( z8rW4ExF3!{oR7|9<_97Lw{};|1>J6 z7mQsmy%_xtw~W63!GNSKs^05}OK$Dp{>y<4u9dIk4-8j*5Z&xoySZ4|nR+Uu!ui0a z-M9M-T6fm5-g3_V^tNIkt<(1eQ>MNlzZ%iVuB0Dq>_|HuR_P+PPrNyJ@IAph9x~_L zKDDGf{v1n={7%@uQEpNrT+Ymm?qD1dhUfj$tB@wuX3lHv&{$I z4wJI8>CqztLHVu;#=79>WcJ0!RGm8{Xa=_y?c7 z!SeF-WP4@+t9kmyLM}W(w_k6uSpC8|2)g|Si_KvGeo{puU=V=?bo&>2-ApBWSh}B{ z8*8okb9{S__E9kI?yeY<89sK#)zyX6tsV@lf4@VXJ!C>*T>D-~9pc!-1X(cAkbl3i zms^jek0wa4Zr`Sy6MYq1&0w_hxBq@C3wU`ou`7{^{$Z?y|tqGKfA-qN3v=8gA%FoqY> literal 0 HcmV?d00001 diff --git a/package/firmware/ipq-wifi/board-zte_mf289f.qca9984 b/package/firmware/ipq-wifi/board-zte_mf289f.qca9984 new file mode 100644 index 0000000000000000000000000000000000000000..0422bc852feebf5bd70cbe74e8c6ade6a0515be2 GIT binary patch literal 12204 zcmeHMdr(u^89%v63<^qah$zTj-ac527+63JAV|@XyBaNn#v&44Vl+y_V^MH%2^7{1 zY>EaS+aMLfMi)}BxM3GH5kX`|nf}okce<_9cBX%>Gu?J}ZO7*JoSWPb1GwO7i%z~T z=bYd9&i6R?yBF>~=j_^&x;8ay+xnQywP`z3cc%lTQVAew*P$AKTv+le%92V84nAR-&k zdLTA7_MhK=%aRBe0E(hgn8Fs$VEDu0uiaI&_DIM-<%kLZ%OP}EcJ_T~l$s6z-@#D8 zM?y45)Dk$V8A=gyxm-4z&0?`&Z6^Q*C^Rl)bGQqhR~&jscM)q1wh&ynun2C|v9iqN;VgTA*FaV5x0afUf_fQrm2H=DX2H>Z3FNEs1 zU9){-ql1Bs)JE#jf9x25SgMWIIZpk-_O&hBVVz6mQb!#60HjhRE$327o6=TG<8$bl-az2XZ=ag3_MSmLAwEt!?Q+1r0>IP*l|Fl>~tV^A9;M!Uf<2j;9i- z_v$2DGTxog?2oW;I>Ws1^Cr0u5Px{WoVRM)6ebqi$ z!V^duo%Un!&}zP{t5#*p#AA0%y_yC^0W`Q{>eAFGWYRcjV1NcPS-jI=V$@{NsZ}|$ zc*|YGXBv&-pfnYk>NKh%S<1wi$*B8<>VRwmGWZBZFc0gy)D4Qm(sc7}gyj3TC7DL_ zz10o!;%ynGJGxF)jVwEHJsqL#m(aip{hn47N+o8izC(Qqq9pUE-k@$oPE1z4QQf3a zN;8}W7OUa1rdF{>y3Rai=-0HUl(L_|$r&|`iUZOF%dnvfCL%`~=P=NMv0>9yU0rpa zJjHw$8Z@g8%Xe8u3af? zU6{;ntuosP^IPxqNWq|_d(Aoj59-Z7yAperP~)Y8!=?T2c1AU?s5agx`E09xRpass z)7_Ip?_Le6$5ov}M|&mbA{zXEe(Ktuu9%jf8h**p&5E9#?Qb^*R<@1iUQadzYXm25 z-%Y!;O5^{Y??L^IlHPb-h#FUZGI-D!rwy**A8a323?+1hXz}X1_qKLLX_r^?kC;aG z_a*nggqR8p3s~{i zvkNo2ht>FU-(DJOkC7f z1!(zN{)5Gs7v|;a->xt84T9_{e+s^X3_#SsD2ge^*cgSu{YBLGvDwQ_xPAFOd@_&> zU8C+PMIo6HUNR#?@_*Be(4@~pY!1b7^XJQj`=@UHSS%Yr8=uTPP+P#BoF6lnB-VCT zlOrypJA`#WJ_afv1JH~87UD+GfTjV4u{u~ErLmF5@56a_LB0&SA;S}RYyfKoZIBW5 zVMwL{TI@XJB`h2=08LmE7Qn(F|6>Z#W|I}vo)x`py;%i)c}iM3=XET^FVE|Xdm?j6 zGy@L+fNd4rHhbXShCvD;h@imb9`xcl2nu9u=Nl3sie3$G?)*eA{$zVBU-t}9eLg}C zrx5HtZyZJEn&%+>8WM9|gOGlVjPdiTT5>P^=h`taK2y7DWn{$vv)E7W>}PfM(>YR_ zwKpfPutcLhd;V7)UB;fifx(-%N5>z`eZb`$Z*E_%uZ=dK&p}B+6LS(upMjETP0T4M zef~*`o0t>OxhHW(i#I>JugzodW=(W9XU03SbBkNr+Ph7kTgGO>Z&p?&uSRGS;z2}^ zD2Nn-bXz)35~PSE(?Ogq4wn!Tk%WwUY3u9BsB=O7Vt. +// Copyright (c) 2022, Giammarco Marzano . + +#include "qcom-ipq4019.dtsi" +#include +#include +#include +#include + +/ { + model = "ZTE MF289F"; + compatible = "zte,mf289f"; + + aliases { + led-boot = &led_status; + led-failsafe = &led_status; + led-running = &led_status; + led-upgrade = &led_status; + }; + + chosen { + /* + * bootargs forced by u-boot bootipq command: + * 'ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs rootwait' + */ + bootargs-append = " root=/dev/ubiblock0_1"; + }; + + /* + * This node is used to restart modem module to avoid anomalous + * behaviours on initial communication. + */ + gpio-restart { + compatible = "gpio-restart"; + gpios = <&tlmm 8 GPIO_ACTIVE_HIGH>; + }; + + leds { + compatible = "gpio-leds"; + + led_status: led-0 { + label = "blue:power"; + function = LED_FUNCTION_POWER; + color = ; + gpios = <&tlmm 10 GPIO_ACTIVE_LOW>; + }; + + led-1 { + function = LED_FUNCTION_WLAN; + color = ; + gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0tpt"; + }; + }; + + keys { + compatible = "gpio-keys"; + + key-reset { + label = "reset"; + linux,code = ; + gpios = <&tlmm 18 GPIO_ACTIVE_LOW>; + }; + + key-wps { + label = "wps"; + linux,code = ; + gpios = <&tlmm 68 GPIO_ACTIVE_LOW>; + }; + }; + + soc { + ess-psgmii@98000 { + status = "okay"; + }; + + tcsr@1949000 { + compatible = "qcom,tcsr"; + reg = <0x1949000 0x100>; + qcom,wifi_glb_cfg = ; + }; + + tcsr@194b000 { + /* select hostmode */ + compatible = "qcom,tcsr"; + reg = <0x194b000 0x100>; + qcom,usb-hsphy-mode-select = ; + status = "okay"; + }; + + 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 = ; + }; + + ess-switch@c000000 { + status = "okay"; + }; + + edma@c080000 { + status = "okay"; + }; + }; +}; + +&prng { + status = "okay"; +}; + +&mdio { + status = "okay"; + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + reset-gpios = <&tlmm 47 GPIO_ACTIVE_LOW>; + reset-delay-us = <2000>; +}; + +&watchdog { + status = "okay"; +}; + +&blsp_dma { + status = "okay"; +}; + +&usb2 { + status = "okay"; +}; + +&usb3 { + status = "okay"; +}; + +&blsp1_spi1 { + pinctrl-0 = <&spi_0_pins>; + pinctrl-names = "default"; + status = "okay"; + cs-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>, + <&tlmm 54 GPIO_ACTIVE_HIGH>; + + flash@0 { + compatible = "jedec,spi-nor"; + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + spi-max-frequency = <24000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "0:SBL1"; + reg = <0x0 0x40000>; + read-only; + }; + + partition@40000 { + label = "0:MIBIB"; + reg = <0x40000 0x20000>; + read-only; + }; + + partition@60000 { + label = "0:QSEE"; + reg = <0x60000 0x60000>; + read-only; + }; + + partition@c0000 { + label = "0:CDT"; + reg = <0xc0000 0x10000>; + read-only; + }; + + partition@d0000 { + label = "0:DDRPARAMS"; + reg = <0xd0000 0x10000>; + read-only; + }; + + partition@e0000 { + label = "0:APPSBLENV"; + reg = <0xe0000 0x10000>; + read-only; + }; + + partition@f0000 { + label = "0:APPSBL"; + reg = <0xf0000 0xc0000>; + read-only; + }; + + partition@1b0000 { + label = "0:reserved1"; + reg = <0x1b0000 0x50000>; + read-only; + }; + }; + }; + + spi-nand@1 { /* flash@1 ? */ + compatible = "spi-nand"; + reg = <1>; + spi-max-frequency = <24000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "fota-flag"; + reg = <0x0 0xa0000>; + read-only; + }; + + partition@a0000 { + label = "ART"; + reg = <0xa0000 0x80000>; + read-only; + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + precal_art_1000: precal@1000 { + reg = <0x1000 0x2f20>; + }; + + precal_art_5000: precal@5000 { + reg = <0x5000 0x2f20>; + }; + }; + + partition@120000 { + label = "mac"; + reg = <0x120000 0x80000>; + read-only; + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_mac_0: macaddr@0 { + reg = <0x0 0x6>; + }; + }; + + partition@1a0000 { + label = "reserved2"; + reg = <0x1a0000 0xc0000>; + read-only; + }; + + partition@260000 { + label = "cfg-param"; + reg = <0x260000 0x400000>; + read-only; + }; + + partition@660000 { + label = "log"; + reg = <0x660000 0x400000>; + }; + + partition@a60000 { + label = "oops"; + reg = <0xa60000 0xa0000>; + }; + + partition@b00000 { + label = "reserved3"; + reg = <0xb00000 0x500000>; + read-only; + }; + + partition@1000000 { + label = "web"; + reg = <0x1000000 0x800000>; + }; + + partition@1800000 { + label = "rootfs"; + reg = <0x1800000 0x1d00000>; + }; + + partition@3500000 { + label = "data"; + reg = <0x3500000 0x1900000>; + }; + + partition@4e00000 { + label = "fota"; + reg = <0x4e00000 0x3200000>; + }; + }; + }; +}; + +&blsp1_uart1 { + pinctrl-0 = <&serial_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&crypto { + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&gmac0 { + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_mac_0>; +}; + +&gmac1 { + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_mac_0>; + mac-address-increment = <1>; +}; + + +&qpic_bam { + status = "okay"; +}; + +&tlmm { + i2c_0_pins: i2c_0_pinmux { + mux { + pins = "gpio20", "gpio21"; + function = "blsp_i2c0"; + bias-disable; + }; + }; + + mdio_pins: mdio_pinmux { + mux_1 { + pins = "gpio6"; + function = "mdio"; + bias-pull-up; + }; + + mux_2 { + pins = "gpio7"; + function = "mdc"; + bias-pull-up; + }; + }; + + serial_pins: serial_pinmux { + mux { + pins = "gpio16", "gpio17"; + function = "blsp_uart0"; + bias-disable; + }; + }; + + spi_0_pins: spi_0_pinmux { + pinmux { + function = "blsp_spi0"; + pins = "gpio13", "gpio14", "gpio15"; + drive-strength = <12>; + bias-disable; + }; + + pinmux_cs { + function = "gpio"; + pins = "gpio12", "gpio54"; + drive-strength = <2>; + bias-disable; + output-high; + }; + }; +}; + +&usb2_hs_phy { + status = "okay"; +}; + +&usb3_ss_phy { + status = "okay"; +}; + +&usb3_hs_phy { + status = "okay"; +}; + +&wifi0 { + status = "okay"; + nvmem-cell-names = "pre-calibration", "mac-address"; + nvmem-cells = <&precal_art_1000>, <&macaddr_mac_0>; + mac-address-increment = <2>; + qcom,ath10k-calibration-variant = "zte,mf289f"; +}; + +/* This node is used only on AT2 version for 5Ghz on IPQ4019 with board-id=21 */ +&wifi1 { + status = "okay"; + nvmem-cell-names = "pre-calibration", "mac-address"; + nvmem-cells = <&precal_art_5000>, <&macaddr_mac_0>; + mac-address-increment = <3>; + qcom,ath10k-calibration-variant = "zte,mf289f"; +}; + +/* This node is used only on AT1 version for 5Ghz on QCA9984 */ +&pcie0 { + status = "okay"; + perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>; + wake-gpio = <&tlmm 40 GPIO_ACTIVE_LOW>; + clkreq-gpio = <&tlmm 39 GPIO_ACTIVE_LOW>; + + bridge@0,0 { + reg = <0x00000000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + wifi2: wifi@1,0 { + nvmem-cell-names = "mac-address"; + nvmem-cells = <&macaddr_mac_0>; + mac-address-increment = <4>; + compatible = "qcom,ath10k"; + reg = <0x00010000 0 0 0 0>; + qcom,ath10k-calibration-variant = "zte,mf289f"; + }; + }; +}; diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk index 43244a914cdaf4..81cc83e28fca7c 100644 --- a/target/linux/ipq40xx/image/generic.mk +++ b/target/linux/ipq40xx/image/generic.mk @@ -1060,10 +1060,9 @@ define Device/unielec_u4019-32m endef TARGET_DEVICES += unielec_u4019-32m -define Device/zte_mf286d +define Device/zte_mf28x_common $(call Device/FitzImage) DEVICE_VENDOR := ZTE - DEVICE_MODEL := MF286D SOC := qcom-ipq4019 DEVICE_DTS_CONFIG := config@ap.dk04.1-c1 BLOCKSIZE := 128k @@ -1071,8 +1070,20 @@ define Device/zte_mf286d KERNEL_IN_UBI := 1 DEVICE_PACKAGES := kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi endef + +define Device/zte_mf286d + $(call Device/zte_mf28x_common) + DEVICE_MODEL := MF286D +endef TARGET_DEVICES += zte_mf286d +define Device/zte_mf289f + $(call Device/zte_mf28x_common) + DEVICE_MODEL := MF289F + DEVICE_PACKAGES += ipq-wifi-zte_mf289f ath10k-firmware-qca9984-ct +endef +TARGET_DEVICES += zte_mf289f + define Device/zyxel_nbg6617 $(call Device/FitImageLzma) DEVICE_VENDOR := ZyXEL