[PATCH V2] ipq40xx: add support for GL.iNet GL-B2200

Enrico Mioso mrkiko.rs at gmail.com
Mon Nov 22 11:10:28 PST 2021


Note:
The patch breakage that caused me to send V2 in the first place is my own fault, original PR doesn't have this issue. Sorry, forgot to mention it.


On Mon, 22 Nov 2021, Enrico Mioso wrote:

> Date: Mon, 22 Nov 2021 19:36:02
> From: Enrico Mioso <mrkiko.rs at gmail.com>
> To: openwrt-devel at lists.openwrt.org
> Cc: TruongSinh Tran-Nguyen <i at truongsinh.pro>,
>     Enrico Mioso <mrkiko.rs at gmail.com>, Li Zhang <li.zhang at gl-inet.com>
> Subject: [PATCH V2] ipq40xx: add support for GL.iNet GL-B2200
> 
> From: TruongSinh Tran-Nguyen <i at truongsinh.pro>
>
> This patch adds supports for the GL-B2200 router.
>
> Specifications:
>  - SOC: Qualcomm IPQ4019 ARM Quad-Core
>  - RAM: 512 MiB
>  - Flash: 16 MiB NOR - SPI0
>  - EMMC: 8GB EMMC
>  - ETH: Qualcomm QCA8075
>  - WLAN1: Qualcomm Atheros QCA4019 2.4GHz 802.11b/g/n 2x2
>  - WLAN2: Qualcomm Atheros QCA4019 5GHz 802.11n/ac W2 2x2
>  - WLAN3: Qualcomm Atheros QCA9886 5GHz 802.11n/ac W2 2x2
>  - INPUT: Reset, WPS
>  - LED: Power, Internet
>  - UART1: On board pin header near to LED (3.3V, TX, RX, GND), 3.3V without pin - 115200 8N1
>  - UART2: On board with BLE module
>  - SPI1: On board socket for Zigbee module
>
> Update firmware instructions:
> Please update the firmware via U-Boot web UI (by default at 192.168.1.1, following instructions found at
> https://docs.gl-inet.com/en/3/troubleshooting/debrick/).
> Normal sysupgrade, either via CLI or LuCI, is not possible from stock firmware.
>
> What's working:
> - WiFi 2G, 5G
> - WPA2/WPA3
>
> Not tested:
> - Bluetooth LE/Zigbee
>
> Credits goes to the original authors of this patch.
>
> V1->V2:
> - updates *arm-boot-add-dts-files.patch correctly
> - add uboot-envtools support
>
> Signed-off-by: TruongSinh Tran-Nguyen <i at truongsinh.pro>
> [fix tab and trailing space, document what's working and what's not]
> Signed-off-by: Enrico Mioso <mrkiko.rs at gmail.com>
> [rebase on top of master, address remaining comments]
> Signed-off-by: Li Zhang <li.zhang at gl-inet.com>
> ---
> package/boot/uboot-envtools/files/ipq40xx     |   1 +
> package/firmware/ipq-wifi/Makefile            |   2 +
> .../ipq-wifi/board-glinet_gl-b2200.qca4019    | Bin 0 -> 24308 bytes
> .../ipq-wifi/board-glinet_gl-b2200.qca9888    | Bin 0 -> 12200 bytes
> target/linux/ipq40xx/Makefile                 |   2 +-
> .../ipq40xx/base-files/etc/board.d/02_network |   5 +
> .../etc/hotplug.d/firmware/11-ath10k-caldata  |   3 +
> .../arm/boot/dts/qcom-ipq4019-gl-b2200.dts    | 364 ++++++++++++++++++
> target/linux/ipq40xx/image/generic.mk         |  28 ++
> .../901-arm-boot-add-dts-files.patch          |   3 +-
> .../901-arm-boot-add-dts-files.patch          |   3 +-
> 11 files changed, 408 insertions(+), 3 deletions(-)
> create mode 100644 package/firmware/ipq-wifi/board-glinet_gl-b2200.qca4019
> create mode 100644 package/firmware/ipq-wifi/board-glinet_gl-b2200.qca9888
> create mode 100644 target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-gl-b2200.dts
>
> diff --git a/package/boot/uboot-envtools/files/ipq40xx b/package/boot/uboot-envtools/files/ipq40xx
> index 1462aa991d..9a71a622f7 100644
> --- a/package/boot/uboot-envtools/files/ipq40xx
> +++ b/package/boot/uboot-envtools/files/ipq40xx
> @@ -35,6 +35,7 @@ devolo,magic-2-wifi-next|\
> edgecore,ecw5211|\
> glinet,gl-ap1300|\
> glinet,gl-b1300|\
> +glinet,gl-b2200|\
> luma,wrtq-329acn|\
> netgear,wac510|\
> openmesh,a42|\
> diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
> index da0949b887..1467b032da 100644
> --- a/package/firmware/ipq-wifi/Makefile
> +++ b/package/firmware/ipq-wifi/Makefile
> @@ -39,6 +39,7 @@ ALLWIFIBOARDS:= \
> 	engenius_emr3500 \
> 	ezviz_cs-w3-wd1200g-eup \
> 	glinet_gl-ap1300 \
> +	glinet_gl-b2200 \
> 	glinet_gl-s1300 \
> 	linksys_ea8300 \
> 	linksys_mr8300-v0 \
> @@ -125,6 +126,7 @@ $(eval $(call generate-ipq-wifi-package,engenius_emd1,EnGenius EMD1))
> $(eval $(call generate-ipq-wifi-package,engenius_emr3500,EnGenius EMR3500))
> $(eval $(call generate-ipq-wifi-package,ezviz_cs-w3-wd1200g-eup,EZVIZ CS-W3-WD1200G EUP))
> $(eval $(call generate-ipq-wifi-package,glinet_gl-ap1300,GL.iNet GL-AP1300))
> +$(eval $(call generate-ipq-wifi-package,glinet_gl-b2200,GL.iNet GL-B2200))
> $(eval $(call generate-ipq-wifi-package,glinet_gl-s1300,GL.iNet GL-S1300))
> $(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300))
> $(eval $(call generate-ipq-wifi-package,linksys_mr8300-v0,Linksys MR8300))
> diff --git a/package/firmware/ipq-wifi/board-glinet_gl-b2200.qca4019 b/package/firmware/ipq-wifi/board-glinet_gl-b2200.qca4019
> new file mode 100644
> index 0000000000000000000000000000000000000000..ac1850160aead29cee0fb96664272b8a620a4e6a
> GIT binary patch
> literal 24308
> zcmeHPdr(tX8b1jj>SE!BfCzXAAv{7MK%g2V@)iT6U{R3(i$E30tx+C^hoKAYC{l=s
> zKrI*|Xc?48Q$)ta7qM7dJEP40v48CBA8ltJ-I;aQcC<U~%<kfzdy at +xB$^0pdE76Y
> zbG~!#_nq^d-#tn0&G~WPN{9=N+an4KO%0AukIP5|GMNlODGtGN0JgwXC@<e$P+S;P
> zD3b=iT`VmLmLAw1O4JIE7L*;ptNhTQih?p}!I5LzcZ!4K`TWpOnT!T~S+E~gh^UxG
> z12(mch)lfCz#f?81F+uS2`T_E0eCH(&`f7sE*tL(fbj6}AD=#@37Koa&woA>Lna&8
> z!7IvLW4{*NNZ>gXcuZf at TlE@SlXXWzx%bckIO$*H5j;jxpDANrJ>r>8pthc<;p4LO
> zFWA5$8ub~IVOWb{+S}XP+1c3`2mp8RnOZ0=(9STq!n$Fyu$yT!M<~;kWv-Mo58=y3
> zFS92zKBQ`@KA4 at FEEvD0YO9uI?@5jyA5fiYER(*Kyk&e4YUR?5<TrkXa{o)NKN$Z+
> z)mUAaoeU2St6Hk1*}IaX$NO<J*d~AuO^ub=;^Zj8;emf37{97I4M%u0Idc3{=ztLp
> zeXx__>{LMj?5?%CBs)V8s(0|89p6i8)lgnyGW#&)FdGlkwUvO9>6tCB*50Oq%E*KM
> znVzW=ZDqAdGTwfd_&Woook^zx%G~lh2Xi_jPqE6K3;G%h<dKDbyEiA_ZaGr3LmHIh
> z68%Mg^+)Nac;%blzByRg`DRmarDxIT>Ef#BgWOCc@)op9#CSQ*(U<$A9iqn9D?N&D
> zd{WUJQtMUXoWHzKqM{`cu(MzHs|}8bv&+U!9-GMze1j7IjD3;7e&7WWp3&)a8lKzO
> zz^~;sda=J!mlf*v;N4w(l*93Xf4*#QZy&Zdo1JO9*65mq42dci5rM3%j5Ide3y$#9
> zPfx#}n!>Mu1YBPqUE6=Y|KoRtZMflP2Yb4$?SG-2BRpX<{?DF0d91Tt#BhnOONQX}
> z2-Heyn}_g(HwNk at 0E!<6m!+u at 6EMmU6hY$9I3x at WLrUbwYfpU8+}1Hy0Ybgpwn|~3
> z3?Abl193;)dG2B-)CqAz<I#9t{KI%81x?|lh-1-MM1=BDK9B#9k8DG?@wSOW(NIKy
> zP6wgBWLlk$Nhq9-ic;sCA4?!{MxCEHBOa&+&qJJmCOk<%QqfdisyG}Ce-e&Fp;5dj
> zvF;=o=EP7s=odZ5mu<-h>LJ7AJ5MqAYB8xAy;bH_T?yBu)Eq2X0u)LVN at ftCmWCN%
> zW;L%$lx877RVV}~1SkY31SkY31XeKu8~Ga%FUC&(P9&YNmA at 5<VXP$uWE8eu8o6hf
> zlehlXm2<~fN6LbYv5HS2HFYZycs56@>|n9X at vQ|*#8Nv;`dUIZ;@o28=pz7NS*7e5
> zePmn)2Et#z;m_Y}7NxC343^MRG#N at PK!Edi+&TclfFI=NctJK02U4NfFyUnjBMh+F
> zo}O$YX@~7|TiNW~HVzO9XyC`A0JPg9wAcs$0 at flx2!yuzYY;$pp|8({rIQn}>1Z-0
> zs&Qo?@O;>TNv9uxI}mVpnQpuGBPbW4kh2?uGM_ea7W{DS8U4y!>F?*u`6ZKX=T5g*
> zr`w$q at 7j}<n}48K+0x$8)zf=rXn1t&&S&?(dSv|pgMB>fu3VRmH6Zpu#f%1WCzRL&
> z6~{M_yP(AWr<mVB?toekqFIlXkM6Qr1}iI2OZJS at GV_X>&t2%#T-SbSPG4E5%*=*4
> z#Y8+&PoAfk2@<Cg5iu&}iN%Q^Vk!a=qC%cf9I;^c*E6G9qq*{35tNa{PeRfdTlia$
> zXh!yV{57`^@_UXfm&+}VwS4=q7xL|+ at 6%|IY+uzvu)ke;AR76Qw{2es6 at tJ0V!pj(
> z(fIb)hyV<-7xL{5>}IPk=i8%*p@)w5ZokIH&UTvl4#4&2*3$4z^6d==!vB}SKo)@K
> z&tx(Io=9<Zbp?1L#mf2yD5UGFmTa)bjB6~jhxt3^T^E+?F4sEO;h8AS*c&(hLnogb
> zx6iJ3bxlro^*A`prozm&v8J{vw{fXSTe3u!AWD{my)ZUN0|2|>2ejOc4le(mMx=UJ
> z)_+R_RUA4P7@~v0AL!uGm<@O$v;~fLY(dO+JAk;@*x4^k2vjc=0u%zP4uKiIyeYo@
> zzyJQ1Z@>BG4-gd{2OsC#KmX_7{`C0qUtya$zP(Tw5vt?sPfh*nhlS_ho8sFC=>@0V
> z<BWSYdjU254hHOb-kPZeM)B=+cbB(kZZcP)YRPXWhD>{%PC%wZYteIj?HY3Jaebb2
> zdtY%@@$8!mqnfGri(%W>BieR#g(6cD^7Rd^N?oJKlL)le)#ntYk|cqzc0|*wRA3T;
> zC;mTTx9|D~0O-)BmMiv3c$34Lv&y4bhD4wlRrg?+Bux;c{jIuHA(O-lSh&NT34eb;
> zm|==cMdsv9O_x%R?UroS+*F>!%0!6*K6GeP93~ycC;Yi!^0wxJvI6$|hIUx<v9bn}
> zNQ4@#QiUB8?FeuqMtBFy(S at X)fFVuZ(5Te!DP`CW?N!Ysbt806)7(;aVih7$fQNQW
> z{UH&O7ar2xdjVVkr`oMKqn0c4VMuEANoA=*qPeQ>#$=*6LCEAS%_U_uwol-$bKv^n
> zb7)l`R~9MK;K2*ZDr}b|1P0QnkV{ep+{x>j^U5+TUBtm1KAYe|l&)zz)#b`OMdIWb
> zJXo&C#Zq9H7a^9h0u&zYQdeRLqD_RueK-eeWC>pCQz2P$0x6Uzl*}No5|)OUsZq_V
> z7J-hDBbQ^^gBv_5E^2<QN<8CVv+2mOb4e$-rS63eNq2h>p5CtTIkZu7apc(L__mM+
> z5BbP&kviq<>%Z|hdZs6{IqWzKb4>f9|8Q$;ov&<Do^p6^x8ST-4FhZF&+FpXqjE;!
> z*p<?AvF~%s7<=yxNZVrSd=9(i)eP>v5ZvHi at mj&aaOKCb%>gwVi<PRhlVQhP_HEd4
> zqrb3qTP^Dymz>XUC<fA1{_nZUG*{)9q8iy1jQx$B>Gcs6ZW0I4wZZ)#3f}jUx#aa}
> zq}_>USaKx4f3RFFJjpI~l8knjH7C>r$y_rYe45e}RK2OlX<z^Fp`N5x&T(c@$H0*b
> zF^zsz%!13E(uQbx;34PKzAH!1N1gB~W9FUjFX)VG at -AoOwf9NS3+sK#opVn&?|U}_
> zW9KkpM+VBf(oP3dx*c4#3x}FGg}@3xV7^b^fX~315fgX}H{=VPh^KG(`f}hOeDVg%
> z$J?9joe7rA(>LaF;Yqsv+6CLIpF0Lgw_mqlW0-)SYN8M at iNGAX{WBvoOUWJ!ZD$n5
> zYOB7CZ%;g92LFwkO=%Pc|NnJB^6dQ}i>4P+hd2%}K^9Cb<lnFF<<{XTWn!izIP-K{
> zJ!c-!5+PqdFp^Wc+TPbIVZJyY-WKxVvpTNaUkpC{Vq;{EXHT~Ol3aUyY>IDB>~+0r
> mM)B=m6*<ap$s%CMp0PQOy<z*3o!~qJqxklV{jK at p{{IJ at zCWk{
>
> literal 0
> HcmV?d00001
>
> diff --git a/package/firmware/ipq-wifi/board-glinet_gl-b2200.qca9888 b/package/firmware/ipq-wifi/board-glinet_gl-b2200.qca9888
> new file mode 100644
> index 0000000000000000000000000000000000000000..4f0a521f35935d4be1fb01b66dd9954a48eade52
> GIT binary patch
> literal 12200
> zcmeHNT~HHO6uyZ%qC#Pp0P^Dsh-5(sVex0>pJ+8D3jzj85S3pID+VNxf)UhC)x=qn
> z6hu*pVibldri{aMtZm0Sj1_0p=|dl!=}RB_?1Ob2UrKs6Vfj-usnGhfXLI+Sd+zzp
> zx%b-*>~hH8log+)lqX6R at v?1M1)IVC{rdqFCV at QzPzqZ`lQylsvL;Sft*NSONK0H#
> zR>oCT>uM^i)1=aM>*KUd71|bUWA*;{aSth!Db@*JXw{WB)Rb!))3#FaGJ=pw1u%X%
> z%oU#S=Pv>Qy0)m<g0gu7{s2Ny20+snLUsuJ01zgzig3{awwo!Hm4FQeKvGiDv!_o5
> z3XwN(I2;*VTOgW=aC`jwOizn5lYouym^nB5*w;BV^1vJJ#dUDL>>61;co}D5`;0|G
> zrw9as1)Kmd<jnZy&D at w+*-~dvHgEX&F*OUTPmh){eK^zEov}zH0&L?XFfb6XjS~;Y
> zK2SL5``)wn%%uGL-LydQ2+afBp^Il}URZJ`DDT5Fz%#%z;3)%rW&!XL2!sp0;0G%1
> z;Hk1I#`5cLk6GWx4)&SqmO}&^dvN$hhs^QFQRY|*hCwepI9Upx!A`?g1bzD*9TWZ*
> zi>^eeq_&X2&(G_r%bSc at y(%(tB^-zrKYuYc763JujWw?DUMyU=@NZ~a3?E)0zRZR9
> z at ez*W_v|Sta at j&c{QX at q=ki=XSZ^AH0qYN&2HD2Oj+-K}v3N9wv4(d~dle4|h9Fs3
> z7Ltf1BK1uN4}WDeb#}k3fYfpM(IW-LPzm|~MMAI;NeJbK`60_O877m+9>|bvEL)OI
> zWn!6#93wD7LOdXlWGq>dOi3{*LShq(u-aa&POK?4bz)V#`qK4rhZ29x|A{{miiJu-
> zsZH3XCz}ujrjRJ8BrNGk5|V<YNKz=*MVNYargBj~@8?(DyKie_OdY*9ZjL;he7l&g
> zy(vCpr#n<SGJkoj-bQ!H)nwuFIA(x0sA|b<JkfehZ>06|0y6Uj6d=aMfccj0WC8dF
> zeII>B)dB&r%yqh5RYxjtDPz-{>7#NbDRTmF7GR at Ks5E2_PB2$#GlVLauYnq)(vo at j
> zI_q`)N&1j{`#2y*j05X{-lS5?Rd^iJPa7eW!V_T-Bg_DU*oPPsU8ho#NfS%5_A+L=
> zo;6v&(HrPyxq?iFK at 9Xk`8G1me#zRdSJNeOi4zbbjs;d5(@7s-0n8=6iEfkUkm>fT
> z3`1*Fg(PwNvh^6#NGs*IYY$>Eun#g8IGIOEVFn}JBF`o_+WVN}bPa2JG-&^tsikvN
> zgbNUh1A9MQQUi>ZXuYCuhZ%Col-o9|QC~~%mXnYA>_&#B6)LF{5R1pW=`u~5=U-Q*
> z(J{+_XK5B<rkQz`rqMCWfM;nIVt6ypz-t&db8&A+f^J1MlHb$yX>*)9xX?TG%hR75
> z at Y>*=pJbowDK*OUE6M{3u3gl25<09B&A)y|(IVL!R_L?wO3%J_NnO}3KgBJZ#{AjQ
> z at M@9rl8rv4I1!}@+Sz56>k{^cDSeWM&K+WswNVuTd0iJuPG%emt3<b->`|FAj;>UT
> zRQ+9A;|5LSu0U$Uw$m727q%P8869e|=9&^(eU&}ERpyj7aXqTM*R3^B%@I2S6sOLq
> z3~2|U-?owKx$O!1P&Ha|-d5h3d^q|5qC8~EZ(FrHFvlnT?D;AtQ@=(NQ270gmdgpp
> zutvWM>xF7dYO7d-<}t>dEqG~Aw(rIhUB$=ACcMT!?}x!JtkPDj7Ts~DztWt3B&Go^
> zywYCRCM{o)i=+&n)fsd3L at m12+_le`bug9=R=tK=eu`&+XW$)YVA0|w%Y1wh|A3(2
> z(CP1GuF=~rf5=cq`i-{c5!mY0QSh at WG9r9cL_}mn5%6Lwqv5!e%#`O9m#OQUj~Fc7
> zy#qrxe;yqj<<|1H`Q5<>5kbgGbStqH*@kW)HXs?O7bl>gqQiD$Wa^oF_4llQImZ%C
> z<}8Ohd*yw223Q83KY#x0*|Wc<$P8ZG`g=9R%(dT)WqfQys#MJkKLh~w%}np`!<jt}
> zB|17PDl(GScn<#i``}~yKJxpWWWX`xEm|n70>#|}cLng at -_Ag}1cmds3FU2UT%7sp
> zsbcuUwRiabY`r*ob=3daT$MXlt<F`Qqw<u+rDauW#&W8=r}xUh;Lz~RpYGhf|IqV^
> zDRn&0o?PD>Z{VzhQmBEeggR at Wl+3_YL7nwaiZE~$P|r!674hM-``+9JAJ#(MsTt=M
> z?b>5HeWBm}-R*m`=^qv=le-a(iI6ZXOcF+kz~-^d2!&A+irNg;j;%#fu~bPawRX<l
> muP3v5q6HFx2!?JUwjjCadSX42j+UHbkC$W2*YCagjQbD3Sk|Nf
>
> literal 0
> HcmV?d00001
>
> diff --git a/target/linux/ipq40xx/Makefile b/target/linux/ipq40xx/Makefile
> index fb003243cc..a3270379d4 100644
> --- a/target/linux/ipq40xx/Makefile
> +++ b/target/linux/ipq40xx/Makefile
> @@ -3,7 +3,7 @@ include $(TOPDIR)/rules.mk
> ARCH:=arm
> BOARD:=ipq40xx
> BOARDNAME:=Qualcomm Atheros IPQ40XX
> -FEATURES:=squashfs fpu ramdisk nand
> +FEATURES:=squashfs fpu ramdisk nand boot-part rootfs-part
> CPU_TYPE:=cortex-a7
> CPU_SUBTYPE:=neon-vfpv4
> SUBTARGETS:=generic mikrotik
> 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 5d123109a2..c674186b44 100644
> --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
> +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
> @@ -103,6 +103,11 @@ ipq40xx_setup_interfaces()
> 		ucidef_add_switch "switch0" \
> 			"0u at eth0" "3:lan" "4:lan"
> 		;;
> +	glinet,gl-b2200)
> +		ucidef_set_interfaces_lan_wan "eth0" "eth1"
> +		ucidef_add_switch "switch0" \
> +			"0u at eth0" "1:lan" "2:lan" "3:lan" "5:lan" "0u at eth1" "4:wan"
> +		;;
> 	mobipromo,cm520-79f)
> 		ucidef_add_switch "switch0" \
> 			"0u at eth0" "3:lan:2" "4:lan:1"
> 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 35862ce3bc..6899723a74 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
> @@ -35,6 +35,7 @@ case "$FIRMWARE" in
> 		caldata_extract "ART" 0x9000 0x2f20
> 		ath10k_patch_mac $(mtd_get_mac_binary ORGDATA 0x32)
> 		;;
> +	glinet,gl-b2200 |\
> 	engenius,eap2200 |\
> 	openmesh,a62 |\
> 	plasmacloud,pa2200)
> @@ -64,6 +65,7 @@ case "$FIRMWARE" in
> 	ezviz,cs-w3-wd1200g-eup |\
> 	glinet,gl-ap1300 |\
> 	glinet,gl-b1300 |\
> +	glinet,gl-b2200 |\
> 	glinet,gl-s1300 |\
> 	linksys,ea6350v3 |\
> 	mobipromo,cm520-79f |\
> @@ -186,6 +188,7 @@ case "$FIRMWARE" in
> 	ezviz,cs-w3-wd1200g-eup |\
> 	glinet,gl-ap1300 |\
> 	glinet,gl-b1300 |\
> +	glinet,gl-b2200 |\
> 	glinet,gl-s1300 |\
> 	linksys,ea6350v3 |\
> 	mobipromo,cm520-79f |\
> diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-gl-b2200.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-gl-b2200.dts
> new file mode 100644
> index 0000000000..6b84f78dc4
> --- /dev/null
> +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-gl-b2200.dts
> @@ -0,0 +1,364 @@
> +// SPDX-License-Identifier: GPL-2.0-only 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 = "GL.iNet GL-B2200";
> +	compatible = "glinet,gl-b2200", "qcom,ipq4019";
> +
> +	memory {
> +		device_type = "memory";
> +		reg = <0x80000000 0x10000000>;
> +	};
> +
> +	chosen {
> +		bootargs-append = " root=/dev/mmcblk0p2 rw rootwait clk_ignore_unused";
> +	};
> +
> +	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>;
> +		};
> +
> +		tcsr at 194b000 {
> +			/* select hostmode */
> +			compatible = "qcom,tcsr";
> +			reg = <0x194b000 0x100>;
> +			qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
> +			status = "okay";
> +		};
> +
> +		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";
> +		};
> +
> +		ess-switch at c000000 {
> +			status = "okay";
> +			switch_lan_bmp = <0x2e>;
> +			switch_wan_bmp = <0x10>;
> +		};
> +
> +		edma at c080000 {
> +			status = "okay";
> +		};
> +	};
> +
> +	keys {
> +		compatible = "gpio-keys";
> +
> +		wps {
> +			label = "wps";
> +			gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_WPS_BUTTON>;
> +			linux,input-type = <1>;
> +		};
> +
> +		reset {
> +			label = "reset";
> +			gpios = <&tlmm 43 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_RESTART>;
> +			linux,input-type = <1>;
> +		};
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +
> +		power_blue {
> +			label = "blue:power";
> +			gpios = <&tlmm 57 GPIO_ACTIVE_HIGH>;
> +			default-state = "on";
> +		};
> +		internet_blue {
> +			label = "blue:internet";
> +			gpios = <&tlmm 60 GPIO_ACTIVE_HIGH>;
> +		};
> +		power_white {
> +			label = "white:power";
> +			gpios = <&tlmm 61 GPIO_ACTIVE_LOW>;
> +		};
> +		internet_white {
> +			label = "white:internet";
> +			gpios = <&tlmm 66 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +};
> +
> +&gmac1 {
> +	qcom,phy_mdio_addr = <3>;
> +	qcom,poll_required = <1>;
> +	qcom,forced_speed = <1000>;
> +	qcom,forced_duplex = <1>;
> +	vlan_tag = <2 0x10>;
> +};
> +
> +&gmac0 {
> +	vlan_tag = <1 0x2e>;
> +};
> +
> +&vqmmc {
> +	status = "okay";
> +};
> +
> +&sdhci {
> +	status = "okay";
> +	pinctrl-0 = <&sd_pins>;
> +	pinctrl-names = "default";
> +	cd-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
> +	vqmmc-supply = <&vqmmc>;
> +};
> +
> +&blsp_dma {
> +	status = "okay";
> +};
> +
> +&cryptobam {
> +	status = "okay";
> +};
> +
> +&blsp1_spi1 {
> +	pinctrl-0 = <&spi_0_pins>;
> +	pinctrl-names = "default";
> +	status = "okay";
> +	cs-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>;
> +
> +	flash at 0 {
> +		compatible = "jedec,spi-nor";
> +		reg = <0>;
> +		spi-max-frequency = <24000000>;
> +
> +		partitions {
> +			compatible = "fixed-partitions";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +
> +			partition at 0 {
> +				label = "SBL1";
> +				reg = <0x0 0x40000>;
> +				read-only;
> +			};
> +
> +			partition at 40000 {
> +				label = "MIBIB";
> +				reg = <0x40000 0x20000>;
> +				read-only;
> +			};
> +
> +			partition at 60000 {
> +				label = "QSEE";
> +				reg = <0x60000 0x60000>;
> +				read-only;
> +			};
> +
> +			partition at c0000 {
> +				label = "CDT";
> +				reg = <0xc0000 0x10000>;
> +				read-only;
> +			};
> +
> +			partition at d0000 {
> +				label = "DDRPARAMS";
> +				reg = <0xd0000 0x10000>;
> +				read-only;
> +			};
> +
> +			partition at e0000 {
> +				label = "APPSBLENV";
> +				reg = <0xe0000 0x10000>;
> +				read-only;
> +			};
> +
> +			partition at f0000 {
> +				label = "APPSBL";
> +				reg = <0xf0000 0x80000>;
> +				read-only;
> +			};
> +
> +			partition at 170000 {
> +				label = "ART";
> +				reg = <0x170000 0x10000>;
> +				read-only;
> +			};
> +		};
> +	};
> +};
> +
> +&blsp1_spi2 {
> +	pinctrl-0 = <&spi_1_pins>;
> +	pinctrl-names = "default";
> +	status = "okay";
> +
> +	spidev1: spi at 0 {
> +		compatible = "siliconlabs,si3210";
> +		reg = <0>;
> +		spi-max-frequency = <24000000>;
> +	};
> +};
> +
> +&blsp1_uart1 {
> +	pinctrl-0 = <&serial_pins>;
> +	pinctrl-names = "default";
> +	status = "okay";
> +};
> +
> +&blsp1_uart2 {
> +	pinctrl-0 = <&serial_1_pins>;
> +	pinctrl-names = "default";
> +	status = "okay";
> +};
> +
> +&tlmm {
> +	serial_pins: serial_pinmux {
> +		mux {
> +			pins = "gpio16", "gpio17";
> +			function = "blsp_uart0";
> +			bias-disable;
> +		};
> +	};
> +
> +	serial_1_pins: serial1_pinmux {
> +		mux {
> +			pins = "gpio8", "gpio9",
> +				"gpio10", "gpio11";
> +			function = "blsp_uart1";
> +			bias-disable;
> +		};
> +	};
> +
> +	spi_0_pins: spi_0_pinmux {
> +		pinmux {
> +			function = "blsp_spi0";
> +			pins = "gpio13", "gpio14", "gpio15";
> +		};
> +		pinmux_cs {
> +			function = "gpio";
> +			pins = "gpio12";
> +		};
> +		pinconf {
> +			pins = "gpio13", "gpio14", "gpio15";
> +			drive-strength = <12>;
> +			bias-disable;
> +		};
> +		pinconf_cs {
> +			pins = "gpio12";
> +			drive-strength = <2>;
> +			bias-disable;
> +			output-high;
> +		};
> +	};
> +
> +	spi_1_pins: spi_1_pinmux {
> +		mux {
> +			pins = "gpio44", "gpio46", "gpio47";
> +			function = "blsp_spi1";
> +			bias-disable;
> +		};
> +		cs {
> +			pins = "gpio45";
> +			function = "gpio";
> +			bias-pull-up;
> +		};
> +		reset {
> +			pins = "gpio43";
> +			function = "gpio";
> +			output-high;
> +		};
> +		mux_2 {
> +			pins = "gpio35";
> +			function = "gpio";
> +			output-high;
> +		};
> +		host_int {
> +			pins = "gpio2";
> +			function = "gpio";
> +			input;
> +		};
> +		wake {
> +			pins = "gpio48";
> +			function = "gpio";
> +			output-high;
> +		};
> +	};
> +
> +	sd_pins: sd_pins {
> +		pinmux {
> +			function = "sdio";
> +			pins = "gpio23", "gpio24", "gpio25", "gpio26",
> +				"gpio29", "gpio30", "gpio31", "gpio32";
> +			drive-strength = <10>;
> +		};
> +
> +		pinmux_sd_clk {
> +			function = "sdio";
> +			pins = "gpio27";
> +			drive-strength = <16>;
> +		};
> +
> +		pinmux_sd7 {
> +			function = "sdio";
> +			pins = "gpio28";
> +			drive-strength = <10>;
> +			bias-disable;
> +		};
> +	};
> +
> +};
> +
> +&pcie0 {
> +	status = "okay";
> +	perst-gpio = <&tlmm 38 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;
> +
> +		wifi2: wifi at 1,0 {
> +			status = "okay";
> +			compatible = "qcom,ath10k";
> +			reg = <0x00010000 0 0 0 0>;
> +			qcom,ath10k-calibration-variant = "GL-B2200";
> +		};
> +	};
> +};
> +
> +&wifi0 {
> +	status = "okay";
> +	qcom,ath10k-calibration-variant = "GL-B2200";
> +};
> +
> +&wifi1 {
> +	status = "okay";
> +	qcom,ath10k-calibration-variant = "GL-B2200";
> +};
> diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk
> index c24eb28523..1184b7d533 100644
> --- a/target/linux/ipq40xx/image/generic.mk
> +++ b/target/linux/ipq40xx/image/generic.mk
> @@ -81,6 +81,17 @@ define Build/qsdk-ipq-factory-nand-askey
> 	@mv $@.new $@
> endef
>
> +define Build/qsdk-ipq-app-gpt
> +	cp $@ $@.tmp 2>/dev/null || true
> +	ptgen -g -o $@.tmp -a 1 -l 1024 \
> +			-t 0x2e -N 0:HLOS -r -p 32M \
> +			-t 0x83 -N rootfs -r -p 128M \
> +				-N rootfs_data -p 512M \
> +				-N user_data -p 6766M
> +	cat $@.tmp >> $@
> +	rm $@.tmp
> +endef
> +
> define Build/SenaoFW
> 	-$(STAGING_DIR_HOST)/bin/mksenaofw \
> 		-n $(BOARD_NAME) -r $(VENDOR_ID) -p $(1) \
> @@ -509,6 +520,23 @@ define Device/glinet_gl-b1300
> endef
> TARGET_DEVICES += glinet_gl-b1300
>
> +define Device/glinet_gl-b2200
> +	$(call Device/FitzImage)
> +	DEVICE_VENDOR := GL.iNet
> +	DEVICE_MODEL := GL-B2200
> +	SOC := qcom-ipq4019
> +	DEVICE_DTS_CONFIG := config at ap.dk04.1-c3
> +	KERNEL_INITRAMFS_SUFFIX := -recovery.itb
> +	IMAGES := sdcard.img.gz
> +	IMAGE/sdcard.img.gz := qsdk-ipq-app-gpt |\
> +		pad-to 1024k | append-kernel |\
> +		pad-to 33792k | append-rootfs |\
> +		append-metadata | gzip
> +	DEVICE_PACKAGES := ath10k-firmware-qca9888-ct ipq-wifi-glinet_gl-b2200 \
> +		kmod-fs-ext4 kmod-mmc kmod-spi-dev mkf2fs e2fsprogs kmod-fs-f2fs
> +endef
> +TARGET_DEVICES += glinet_gl-b2200
> +
> define Device/glinet_gl-s1300
> 	$(call Device/FitzImage)
> 	DEVICE_VENDOR := GL.iNet
> diff --git a/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch
> index 436f5a74f5..030e0d6b45 100644
> --- a/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch
> +++ b/target/linux/ipq40xx/patches-5.10/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
> -@@ -902,11 +902,67 @@ dtb-$(CONFIG_ARCH_QCOM) += \
> +@@ -902,11 +902,68 @@ dtb-$(CONFIG_ARCH_QCOM) += \
>  	qcom-apq8074-dragonboard.dtb \
>  	qcom-apq8084-ifc6540.dtb \
>  	qcom-apq8084-mtp.dtb \
> @@ -73,6 +73,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
> +	qcom-ipq4029-ap-303h.dtb \
> +	qcom-ipq4029-ap-365.dtb \
> +	qcom-ipq4029-gl-b1300.dtb \
> ++ qcom-ipq4019-gl-b2200.dtb \
> +	qcom-ipq4029-gl-s1300.dtb \
> +	qcom-ipq4029-mr33.dtb \
>  	qcom-ipq8064-ap148.dtb \
> diff --git a/target/linux/ipq40xx/patches-5.4/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-5.4/901-arm-boot-add-dts-files.patch
> index bb63c1c4fb..ac53337855 100644
> --- a/target/linux/ipq40xx/patches-5.4/901-arm-boot-add-dts-files.patch
> +++ b/target/linux/ipq40xx/patches-5.4/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
> -@@ -837,11 +837,65 @@ dtb-$(CONFIG_ARCH_QCOM) += \
> +@@ -837,11 +837,66 @@ dtb-$(CONFIG_ARCH_QCOM) += \
>  	qcom-apq8074-dragonboard.dtb \
>  	qcom-apq8084-ifc6540.dtb \
>  	qcom-apq8084-mtp.dtb \
> @@ -71,6 +71,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
> +	qcom-ipq4029-ap-303h.dtb \
> +	qcom-ipq4029-ap-365.dtb \
> +	qcom-ipq4029-gl-b1300.dtb \
> ++ qcom-ipq4019-gl-b2200.dtb \
> +	qcom-ipq4029-gl-s1300.dtb \
> +	qcom-ipq4029-mr33.dtb \
>  	qcom-ipq8064-ap148.dtb \
> -- 
> 2.34.0
>
>



More information about the openwrt-devel mailing list