xref: /OK3568_Linux_fs/device/rockchip/common/scripts/mk-wifibt.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash -e
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunDEFAULT_ROOTFS_DIR=buildroot/output/$RK_BUILDROOT_CFG/target
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun# Usage: build_wifibt <rootfs dir> [wifi chip] [bt tty dev]
6*4882a593Smuzhiyunbuild_wifibt()
7*4882a593Smuzhiyun{
8*4882a593Smuzhiyun	check_config RK_KERNEL_CFG RK_WIFIBT_CHIP || return 0
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun	ROOTFS_DIR="${1:-$DEFAULT_ROOTFS_DIR}"
11*4882a593Smuzhiyun	WIFI_CHIP="${2:-$RK_WIFIBT_CHIP}"
12*4882a593Smuzhiyun	BT_TTY_DEV="${3:-$RK_WIFIBT_TTY}"
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun	echo "=========================================="
15*4882a593Smuzhiyun	echo "          Start building wifi/BT ($WIFI_CHIP - $BT_TTY_DEV)"
16*4882a593Smuzhiyun	echo "=========================================="
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun	if ls "$ROOTFS_DIR/lib/" | grep -wq ld-linux-armhf.so; then
19*4882a593Smuzhiyun		ROOTFS_ARCH=arm
20*4882a593Smuzhiyun	else
21*4882a593Smuzhiyun		ROOTFS_ARCH=arm64
22*4882a593Smuzhiyun	fi
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun	RKWIFIBT=$SDK_DIR/external/rkwifibt
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun	OWNER=$(stat --format %U "$RKWIFIBT")
27*4882a593Smuzhiyun	if [ "$OWNER" != "root" ]; then
28*4882a593Smuzhiyun		if [ "${USER:-$(id -un)}" = "root" ]; then
29*4882a593Smuzhiyun			# Fixing up rkwifibt permissions
30*4882a593Smuzhiyun			find "$RKWIFIBT" -user root \
31*4882a593Smuzhiyun				-exec chown -h -R $OWNER:$OWNER {} \;
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun			# Sudo to source code owner (for Debian)
34*4882a593Smuzhiyun			export KMAKE="sudo -u $OWNER $KMAKE"
35*4882a593Smuzhiyun		else
36*4882a593Smuzhiyun			# Check for dirty files owned by root
37*4882a593Smuzhiyun			echo -e "\e[36m"
38*4882a593Smuzhiyun			if find "$RKWIFIBT" -user 0 | grep ""; then
39*4882a593Smuzhiyun				echo -e "\e[31m"
40*4882a593Smuzhiyun				echo "$RKWIFIBT is dirty for non-root building!"
41*4882a593Smuzhiyun				echo "Please clear it:"
42*4882a593Smuzhiyun				echo "cd $RKWIFIBT"
43*4882a593Smuzhiyun				echo "git add -f ."
44*4882a593Smuzhiyun				echo "sudo git reset --hard"
45*4882a593Smuzhiyun				echo -e "\e[0m"
46*4882a593Smuzhiyun				exit 1
47*4882a593Smuzhiyun			fi
48*4882a593Smuzhiyun			echo -e "\e[0m"
49*4882a593Smuzhiyun		fi
50*4882a593Smuzhiyun	fi
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun	# Make sure that the kernel is ready
53*4882a593Smuzhiyun	if [ ! -r kernel/include/generated/asm-offsets.h ]; then
54*4882a593Smuzhiyun		echo "Kernel is not ready, building it for wifi/BT..."
55*4882a593Smuzhiyun		"$SCRIPTS_DIR/mk-kernel.sh"
56*4882a593Smuzhiyun	fi
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun	# Check kernel config
59*4882a593Smuzhiyun	WIFI_USB=`grep "CONFIG_USB=y" kernel/.config` || true
60*4882a593Smuzhiyun	WIFI_SDIO=`grep "CONFIG_MMC=y" kernel/.config` || true
61*4882a593Smuzhiyun	WIFI_PCIE=`grep "CONFIG_PCIE_DW_ROCKCHIP=y" kernel/.config` || true
62*4882a593Smuzhiyun	WIFI_RFKILL=`grep "CONFIG_RFKILL=y" kernel/.config` || true
63*4882a593Smuzhiyun	if [ -z "WIFI_SDIO" ]; then
64*4882a593Smuzhiyun		echo "=== WARNNING CONFIG_MMC not set !!! ==="
65*4882a593Smuzhiyun	fi
66*4882a593Smuzhiyun	if [ -z "WIFI_RFKILL" ]; then
67*4882a593Smuzhiyun		echo "=== WARNNING CONFIG_USB not set !!! ==="
68*4882a593Smuzhiyun	fi
69*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" =~ "U" ]];then
70*4882a593Smuzhiyun		if [ -z "$WIFI_USB" ]; then
71*4882a593Smuzhiyun			echo "=== WARNNING CONFIG_USB not set so ABORT!!! ==="
72*4882a593Smuzhiyun			exit 0
73*4882a593Smuzhiyun		fi
74*4882a593Smuzhiyun	fi
75*4882a593Smuzhiyun	echo "kernel config: $WIFI_USB $WIFI_SDIO $WIFI_RFKILL"
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" =~ "ALL_AP" ]];then
78*4882a593Smuzhiyun		echo "building bcmdhd sdio"
79*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/bcmdhd CONFIG_BCMDHD=m \
80*4882a593Smuzhiyun			CONFIG_BCMDHD_SDIO=y CONFIG_BCMDHD_PCIE=
81*4882a593Smuzhiyun		if [ -n "$WIFI_PCIE" ]; then
82*4882a593Smuzhiyun			echo "building bcmdhd pcie"
83*4882a593Smuzhiyun			$KMAKE M=$RKWIFIBT/drivers/bcmdhd CONFIG_BCMDHD=m \
84*4882a593Smuzhiyun				CONFIG_BCMDHD_PCIE=y CONFIG_BCMDHD_SDIO=
85*4882a593Smuzhiyun		fi
86*4882a593Smuzhiyun		if [ -n "$WIFI_USB" ]; then
87*4882a593Smuzhiyun			echo "building rtl8188fu usb"
88*4882a593Smuzhiyun			$KMAKE M=$RKWIFIBT/drivers/rtl8188fu modules
89*4882a593Smuzhiyun		fi
90*4882a593Smuzhiyun		echo "building rtl8189fs sdio"
91*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8189fs modules
92*4882a593Smuzhiyun		echo "building rtl8723ds sdio"
93*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8723ds modules
94*4882a593Smuzhiyun		echo "building rtl8821cs sdio"
95*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8821cs modules
96*4882a593Smuzhiyun		echo "building rtl8822cs sdio"
97*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8822cs modules
98*4882a593Smuzhiyun		echo "building rtl8852bs sdio"
99*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8852bs modules \
100*4882a593Smuzhiyun			DRV_PATH=$RKWIFIBT/drivers/rtl8852bs
101*4882a593Smuzhiyun		if [ -n "$WIFI_PCIE" ]; then
102*4882a593Smuzhiyun			echo "building rtl8852be pcie"
103*4882a593Smuzhiyun			$KMAKE M=$RKWIFIBT/drivers/rtl8852be modules \
104*4882a593Smuzhiyun				DRV_PATH=$RKWIFIBT/drivers/rtl8852be
105*4882a593Smuzhiyun		fi
106*4882a593Smuzhiyun	fi
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" =~ "ALL_CY" ]];then
109*4882a593Smuzhiyun		echo "building CYW4354"
110*4882a593Smuzhiyun		ln -sf chips/CYW4354_Makefile \
111*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
112*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
113*4882a593Smuzhiyun		echo "building CYW4373"
114*4882a593Smuzhiyun		ln -sf chips/CYW4373_Makefile \
115*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
116*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
117*4882a593Smuzhiyun		echo "building CYW43438"
118*4882a593Smuzhiyun		ln -sf chips/CYW43438_Makefile \
119*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
120*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
121*4882a593Smuzhiyun		echo "building CYW43455"
122*4882a593Smuzhiyun		ln -sf chips/CYW43455_Makefile \
123*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
124*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
125*4882a593Smuzhiyun		echo "building CYW5557X"
126*4882a593Smuzhiyun		ln -sf chips/CYW5557X_Makefile \
127*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
128*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
129*4882a593Smuzhiyun		if [ -n "$WIFI_PCIE" ]; then
130*4882a593Smuzhiyun			echo "building CYW5557X_PCIE"
131*4882a593Smuzhiyun			ln -sf chips/CYW5557X_PCIE_Makefile \
132*4882a593Smuzhiyun				$RKWIFIBT/drivers/infineon/Makefile
133*4882a593Smuzhiyun			$KMAKE M=$RKWIFIBT/drivers/infineon
134*4882a593Smuzhiyun			echo "building CYW54591_PCIE"
135*4882a593Smuzhiyun			ln -sf chips/CYW54591_PCIE_Makefile \
136*4882a593Smuzhiyun				$RKWIFIBT/drivers/infineon/Makefile
137*4882a593Smuzhiyun			$KMAKE M=$RKWIFIBT/drivers/infineon
138*4882a593Smuzhiyun		fi
139*4882a593Smuzhiyun		echo "building CYW54591"
140*4882a593Smuzhiyun		ln -sf chips/CYW54591_Makefile \
141*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
142*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun		if [ -n "$WIFI_USB" ]; then
145*4882a593Smuzhiyun			echo "building rtl8188fu usb"
146*4882a593Smuzhiyun			$KMAKE M=$RKWIFIBT/drivers/rtl8188fu modules
147*4882a593Smuzhiyun		fi
148*4882a593Smuzhiyun		echo "building rtl8189fs sdio"
149*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8189fs modules
150*4882a593Smuzhiyun		echo "building rtl8723ds sdio"
151*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8723ds modules
152*4882a593Smuzhiyun		echo "building rtl8821cs sdio"
153*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8821cs modules
154*4882a593Smuzhiyun		echo "building rtl8822cs sdio"
155*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8822cs modules
156*4882a593Smuzhiyun		echo "building rtl8852bs sdio"
157*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8852bs modules \
158*4882a593Smuzhiyun			DRV_PATH=$RKWIFIBT/drivers/rtl8852bs
159*4882a593Smuzhiyun		if [ -n "$WIFI_PCIE" ]; then
160*4882a593Smuzhiyun			echo "building rtl8852be pcie"
161*4882a593Smuzhiyun			$KMAKE M=$RKWIFIBT/drivers/rtl8852be modules \
162*4882a593Smuzhiyun				DRV_PATH=$RKWIFIBT/drivers/rtl8852be
163*4882a593Smuzhiyun		fi
164*4882a593Smuzhiyun	fi
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" =~ "AP6" ]];then
167*4882a593Smuzhiyun		if [[ "$WIFI_CHIP" = "AP6275_PCIE" ]];then
168*4882a593Smuzhiyun			echo "building bcmdhd pcie driver"
169*4882a593Smuzhiyun			$KMAKE M=$RKWIFIBT/drivers/bcmdhd CONFIG_BCMDHD=m \
170*4882a593Smuzhiyun				CONFIG_BCMDHD_PCIE=y CONFIG_BCMDHD_SDIO=
171*4882a593Smuzhiyun		else
172*4882a593Smuzhiyun			echo "building bcmdhd sdio driver"
173*4882a593Smuzhiyun			$KMAKE M=$RKWIFIBT/drivers/bcmdhd CONFIG_BCMDHD=m \
174*4882a593Smuzhiyun				CONFIG_BCMDHD_SDIO=y CONFIG_BCMDHD_PCIE=
175*4882a593Smuzhiyun		fi
176*4882a593Smuzhiyun	fi
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "CYW4354" ]];then
179*4882a593Smuzhiyun		echo "building CYW4354"
180*4882a593Smuzhiyun		ln -sf chips/CYW4354_Makefile \
181*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
182*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
183*4882a593Smuzhiyun	fi
184*4882a593Smuzhiyun
185*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "CYW4373" ]];then
186*4882a593Smuzhiyun		echo "building CYW4373"
187*4882a593Smuzhiyun		ln -sf chips/CYW4373_Makefile \
188*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
189*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
190*4882a593Smuzhiyun	fi
191*4882a593Smuzhiyun
192*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "CYW43438" ]];then
193*4882a593Smuzhiyun		echo "building CYW43438"
194*4882a593Smuzhiyun		ln -sf chips/CYW43438_Makefile \
195*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
196*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
197*4882a593Smuzhiyun	fi
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "CYW43455" ]];then
200*4882a593Smuzhiyun		echo "building CYW43455"
201*4882a593Smuzhiyun		ln -sf chips/CYW43455_Makefile \
202*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
203*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
204*4882a593Smuzhiyun	fi
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "CYW5557X" ]];then
207*4882a593Smuzhiyun		echo "building CYW5557X"
208*4882a593Smuzhiyun		ln -sf chips/CYW5557X_Makefile \
209*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
210*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
211*4882a593Smuzhiyun	fi
212*4882a593Smuzhiyun
213*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "CYW5557X_PCIE" ]];then
214*4882a593Smuzhiyun		echo "building CYW5557X_PCIE"
215*4882a593Smuzhiyun		ln -sf chips/CYW5557X_PCIE_Makefile \
216*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
217*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
218*4882a593Smuzhiyun	fi
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "CYW54591" ]];then
221*4882a593Smuzhiyun		echo "building CYW54591"
222*4882a593Smuzhiyun		ln -sf chips/CYW54591_Makefile \
223*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
224*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
225*4882a593Smuzhiyun	fi
226*4882a593Smuzhiyun
227*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "CYW54591_PCIE" ]];then
228*4882a593Smuzhiyun		echo "building CYW54591_PCIE"
229*4882a593Smuzhiyun		ln -sf chips/CYW54591_PCIE_Makefile \
230*4882a593Smuzhiyun			$RKWIFIBT/drivers/infineon/Makefile
231*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/infineon
232*4882a593Smuzhiyun	fi
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "RTL8188FU" ]];then
235*4882a593Smuzhiyun		echo "building rtl8188fu driver"
236*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8188fu modules
237*4882a593Smuzhiyun	fi
238*4882a593Smuzhiyun
239*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "RTL8189FS" ]];then
240*4882a593Smuzhiyun		echo "building rtl8189fs driver"
241*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8189fs modules
242*4882a593Smuzhiyun	fi
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "RTL8723DS" ]];then
245*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8723ds modules
246*4882a593Smuzhiyun	fi
247*4882a593Smuzhiyun
248*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "RTL8821CS" ]];then
249*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8821cs modules
250*4882a593Smuzhiyun	fi
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "RTL8822CS" ]];then
253*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8822cs modules
254*4882a593Smuzhiyun	fi
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "RTL8852BS" ]];then
257*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8852bs modules
258*4882a593Smuzhiyun	fi
259*4882a593Smuzhiyun
260*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "RTL8852BE" ]];then
261*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/rtl8852be modules
262*4882a593Smuzhiyun	fi
263*4882a593Smuzhiyun
264*4882a593Smuzhiyun	echo "building realtek bt drivers"
265*4882a593Smuzhiyun	$KMAKE M=$RKWIFIBT/drivers/bluetooth_uart_driver
266*4882a593Smuzhiyun	if [ -n "$WIFI_USB" ]; then
267*4882a593Smuzhiyun		$KMAKE M=$RKWIFIBT/drivers/bluetooth_usb_driver
268*4882a593Smuzhiyun	fi
269*4882a593Smuzhiyun
270*4882a593Smuzhiyun	mkdir -p $ROOTFS_DIR/etc/init.d
271*4882a593Smuzhiyun	mkdir -p $ROOTFS_DIR/usr/bin/
272*4882a593Smuzhiyun	mkdir -p $ROOTFS_DIR/usr/lib/modules/
273*4882a593Smuzhiyun	mkdir -p $ROOTFS_DIR/lib/firmware/rtlbt/
274*4882a593Smuzhiyun	mkdir -p $ROOTFS_DIR/system/lib/modules/
275*4882a593Smuzhiyun	mkdir -p $ROOTFS_DIR/system/etc/firmware/
276*4882a593Smuzhiyun
277*4882a593Smuzhiyun	echo "create link system->vendor"
278*4882a593Smuzhiyun	rm -rf $ROOTFS_DIR/vendor
279*4882a593Smuzhiyun	ln -sf system $ROOTFS_DIR/vendor
280*4882a593Smuzhiyun
281*4882a593Smuzhiyun	echo "copy prebuilt tools/sh to rootfs"
282*4882a593Smuzhiyun	cp $RKWIFIBT/bin/$ROOTFS_ARCH/* $ROOTFS_DIR/usr/bin/
283*4882a593Smuzhiyun	cp $RKWIFIBT/sh/wifi_start.sh $ROOTFS_DIR/usr/bin/
284*4882a593Smuzhiyun	cp $RKWIFIBT/sh/wifi_ap6xxx_rftest.sh $ROOTFS_DIR/usr/bin/
285*4882a593Smuzhiyun	cp $RKWIFIBT/conf/wpa_supplicant.conf $ROOTFS_DIR/etc/
286*4882a593Smuzhiyun	cp $RKWIFIBT/conf/dnsmasq.conf $ROOTFS_DIR/etc/
287*4882a593Smuzhiyun
288*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "ALL_CY" ]];then
289*4882a593Smuzhiyun		echo "copy infineon/realtek firmware/nvram to rootfs"
290*4882a593Smuzhiyun		cp $RKWIFIBT/drivers/infineon/*.ko \
291*4882a593Smuzhiyun			$ROOTFS_DIR/system/lib/modules/ || true
292*4882a593Smuzhiyun		cp $RKWIFIBT/firmware/infineon/*/* \
293*4882a593Smuzhiyun			$ROOTFS_DIR/system/etc/firmware/ || true
294*4882a593Smuzhiyun
295*4882a593Smuzhiyun		cp $RKWIFIBT/sh/bt_load_broadcom_firmware $ROOTFS_DIR/usr/bin/
296*4882a593Smuzhiyun		cp $ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware \
297*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_init.sh
298*4882a593Smuzhiyun		cp $ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware \
299*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_pcba_test
300*4882a593Smuzhiyun
301*4882a593Smuzhiyun		#reatek
302*4882a593Smuzhiyun		cp $RKWIFIBT/firmware/realtek/*/* $ROOTFS_DIR/lib/firmware/
303*4882a593Smuzhiyun		cp $RKWIFIBT/firmware/realtek/*/* \
304*4882a593Smuzhiyun			$ROOTFS_DIR/lib/firmware/rtlbt/
305*4882a593Smuzhiyun		cp $RKWIFIBT/drivers/bluetooth_uart_driver/hci_uart.ko \
306*4882a593Smuzhiyun			$ROOTFS_DIR/usr/lib/modules/
307*4882a593Smuzhiyun		if [ -n "$WIFI_USB" ]; then
308*4882a593Smuzhiyun			cp $RKWIFIBT/drivers/bluetooth_usb_driver/rtk_btusb.ko \
309*4882a593Smuzhiyun				$ROOTFS_DIR/usr/lib/modules/
310*4882a593Smuzhiyun		fi
311*4882a593Smuzhiyun
312*4882a593Smuzhiyun		rm -rf $ROOTFS_DIR/etc/init.d/S36load_wifi_modules
313*4882a593Smuzhiyun		cp $RKWIFIBT/S36load_all_wifi_modules $ROOTFS_DIR/etc/init.d/
314*4882a593Smuzhiyun		sed -i "s/BT_TTY_DEV/\/dev\/${BT_TTY_DEV}/g" \
315*4882a593Smuzhiyun			$ROOTFS_DIR/etc/init.d/S36load_all_wifi_modules
316*4882a593Smuzhiyun	fi
317*4882a593Smuzhiyun
318*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" = "ALL_AP" ]];then
319*4882a593Smuzhiyun		echo "copy ap6xxx firmware/nvram to rootfs"
320*4882a593Smuzhiyun		cp $RKWIFIBT/drivers/bcmdhd/*.ko $ROOTFS_DIR/system/lib/modules/
321*4882a593Smuzhiyun		cp $RKWIFIBT/firmware/broadcom/*/wifi/* \
322*4882a593Smuzhiyun			$ROOTFS_DIR/system/etc/firmware/ || true
323*4882a593Smuzhiyun		cp $RKWIFIBT/firmware/broadcom/*/bt/* \
324*4882a593Smuzhiyun			$ROOTFS_DIR/system/etc/firmware/ || true
325*4882a593Smuzhiyun
326*4882a593Smuzhiyun		cp $RKWIFIBT/sh/bt_load_broadcom_firmware $ROOTFS_DIR/usr/bin/
327*4882a593Smuzhiyun		cp $ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware \
328*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_init.sh
329*4882a593Smuzhiyun		cp $ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware \
330*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_pcba_test
331*4882a593Smuzhiyun
332*4882a593Smuzhiyun		#reatek
333*4882a593Smuzhiyun		echo "copy realtek firmware/nvram to rootfs"
334*4882a593Smuzhiyun		cp $RKWIFIBT/drivers/rtl*/*.ko $ROOTFS_DIR/system/lib/modules/
335*4882a593Smuzhiyun		cp -rf $RKWIFIBT/firmware/realtek/*/* $ROOTFS_DIR/lib/firmware/
336*4882a593Smuzhiyun		cp -rf $RKWIFIBT/firmware/realtek/*/* \
337*4882a593Smuzhiyun			$ROOTFS_DIR/lib/firmware/rtlbt/
338*4882a593Smuzhiyun		cp $RKWIFIBT/drivers/bluetooth_uart_driver/hci_uart.ko \
339*4882a593Smuzhiyun			$ROOTFS_DIR/usr/lib/modules/
340*4882a593Smuzhiyun		if [ -n "$WIFI_USB" ]; then
341*4882a593Smuzhiyun			cp $RKWIFIBT/drivers/bluetooth_usb_driver/rtk_btusb.ko \
342*4882a593Smuzhiyun				$ROOTFS_DIR/usr/lib/modules/
343*4882a593Smuzhiyun		fi
344*4882a593Smuzhiyun
345*4882a593Smuzhiyun		echo "copy S36load_wifi_modules to rootfs"
346*4882a593Smuzhiyun		rm -rf $ROOTFS_DIR/etc/init.d/S36load_wifi_modules
347*4882a593Smuzhiyun		cp $RKWIFIBT/S36load_all_wifi_modules $ROOTFS_DIR/etc/init.d/
348*4882a593Smuzhiyun		sed -i "s/BT_TTY_DEV/\/dev\/${BT_TTY_DEV}/g" \
349*4882a593Smuzhiyun			$ROOTFS_DIR/etc/init.d/S36load_all_wifi_modules
350*4882a593Smuzhiyun	fi
351*4882a593Smuzhiyun
352*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" =~ "RTL" ]];then
353*4882a593Smuzhiyun		echo "Copy RTL file to rootfs"
354*4882a593Smuzhiyun		if [ -d "$RKWIFIBT/firmware/realtek/$WIFI_CHIP" ]; then
355*4882a593Smuzhiyun			cp $RKWIFIBT/firmware/realtek/$WIFI_CHIP/* \
356*4882a593Smuzhiyun				$ROOTFS_DIR/lib/firmware/rtlbt/
357*4882a593Smuzhiyun			cp $RKWIFIBT/firmware/realtek/$WIFI_CHIP/* \
358*4882a593Smuzhiyun				$ROOTFS_DIR/lib/firmware/
359*4882a593Smuzhiyun		else
360*4882a593Smuzhiyun			echo "INFO: $WIFI_CHIP isn't bluetooth?"
361*4882a593Smuzhiyun		fi
362*4882a593Smuzhiyun
363*4882a593Smuzhiyun		WIFI_KO_DIR=$(echo $WIFI_CHIP | tr '[A-Z]' '[a-z]')
364*4882a593Smuzhiyun
365*4882a593Smuzhiyun		cp $RKWIFIBT/drivers/$WIFI_KO_DIR/*.ko \
366*4882a593Smuzhiyun			$ROOTFS_DIR/system/lib/modules/
367*4882a593Smuzhiyun
368*4882a593Smuzhiyun		cp $RKWIFIBT/sh/bt_load_rtk_firmware $ROOTFS_DIR/usr/bin/
369*4882a593Smuzhiyun		sed -i "s/BT_TTY_DEV/\/dev\/${BT_TTY_DEV}/g" \
370*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_load_rtk_firmware
371*4882a593Smuzhiyun		if [ -n "$WIFI_USB" ]; then
372*4882a593Smuzhiyun			cp $RKWIFIBT/drivers/bluetooth_usb_driver/rtk_btusb.ko \
373*4882a593Smuzhiyun				$ROOTFS_DIR/usr/lib/modules/
374*4882a593Smuzhiyun			sed -i "s/BT_DRV/rtk_btusb/g" \
375*4882a593Smuzhiyun				$ROOTFS_DIR/usr/bin/bt_load_rtk_firmware
376*4882a593Smuzhiyun		else
377*4882a593Smuzhiyun			cp $RKWIFIBT/drivers/bluetooth_uart_driver/hci_uart.ko \
378*4882a593Smuzhiyun				$ROOTFS_DIR/usr/lib/modules/
379*4882a593Smuzhiyun			sed -i "s/BT_DRV/hci_uart/g" \
380*4882a593Smuzhiyun				$ROOTFS_DIR/usr/bin/bt_load_rtk_firmware
381*4882a593Smuzhiyun		fi
382*4882a593Smuzhiyun		cp $ROOTFS_DIR/usr/bin/bt_load_rtk_firmware \
383*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_init.sh
384*4882a593Smuzhiyun		cp $ROOTFS_DIR/usr/bin/bt_load_rtk_firmware \
385*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_pcba_test
386*4882a593Smuzhiyun		rm -rf $ROOTFS_DIR/etc/init.d/S36load_all_wifi_modules
387*4882a593Smuzhiyun		cp $RKWIFIBT/S36load_wifi_modules $ROOTFS_DIR/etc/init.d/
388*4882a593Smuzhiyun		sed -i "s/WIFI_KO/\/system\/lib\/modules\/$WIFI_CHIP.ko/g" \
389*4882a593Smuzhiyun			$ROOTFS_DIR/etc/init.d/S36load_wifi_modules
390*4882a593Smuzhiyun	fi
391*4882a593Smuzhiyun
392*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" =~ "CYW" ]];then
393*4882a593Smuzhiyun		echo "Copy CYW file to rootfs"
394*4882a593Smuzhiyun		#firmware
395*4882a593Smuzhiyun		cp $RKWIFIBT/firmware/infineon/$WIFI_CHIP/* \
396*4882a593Smuzhiyun			$ROOTFS_DIR/system/etc/firmware/
397*4882a593Smuzhiyun		cp $RKWIFIBT/drivers/infineon/*.ko \
398*4882a593Smuzhiyun			$ROOTFS_DIR/system/lib/modules/
399*4882a593Smuzhiyun		#bt
400*4882a593Smuzhiyun		cp $RKWIFIBT/sh/bt_load_broadcom_firmware $ROOTFS_DIR/usr/bin/
401*4882a593Smuzhiyun		sed -i "s/BT_TTY_DEV/\/dev\/${BT_TTY_DEV}/g" \
402*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware
403*4882a593Smuzhiyun		sed -i "s/BTFIRMWARE_PATH/\/system\/etc\/firmware\//g" \
404*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware
405*4882a593Smuzhiyun		cp $ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware \
406*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_init.sh
407*4882a593Smuzhiyun		cp $ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware \
408*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_pcba_test
409*4882a593Smuzhiyun		#wifi
410*4882a593Smuzhiyun		rm -rf $ROOTFS_DIR/etc/init.d/S36load_all_wifi_modules
411*4882a593Smuzhiyun		cp $RKWIFIBT/S36load_wifi_modules $ROOTFS_DIR/etc/init.d/
412*4882a593Smuzhiyun		sed -i "s/WIFI_KO/\/system\/lib\/modules\/$WIFI_CHIP.ko/g" \
413*4882a593Smuzhiyun			$ROOTFS_DIR/etc/init.d/S36load_wifi_modules
414*4882a593Smuzhiyun	fi
415*4882a593Smuzhiyun
416*4882a593Smuzhiyun	if [[ "$WIFI_CHIP" =~ "AP6" ]];then
417*4882a593Smuzhiyun		echo "Copy AP file to rootfs"
418*4882a593Smuzhiyun		#firmware
419*4882a593Smuzhiyun		cp $RKWIFIBT/firmware/broadcom/$WIFI_CHIP/wifi/* \
420*4882a593Smuzhiyun			$ROOTFS_DIR/system/etc/firmware/
421*4882a593Smuzhiyun		cp $RKWIFIBT/firmware/broadcom/$WIFI_CHIP/bt/* \
422*4882a593Smuzhiyun			$ROOTFS_DIR/system/etc/firmware/
423*4882a593Smuzhiyun		cp $RKWIFIBT/drivers/bcmdhd/*.ko $ROOTFS_DIR/system/lib/modules/
424*4882a593Smuzhiyun		#bt
425*4882a593Smuzhiyun		cp $RKWIFIBT/sh/bt_load_broadcom_firmware $ROOTFS_DIR/usr/bin/
426*4882a593Smuzhiyun		sed -i "s/BT_TTY_DEV/\/dev\/${BT_TTY_DEV}/g" \
427*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware
428*4882a593Smuzhiyun		sed -i "s/BTFIRMWARE_PATH/\/system\/etc\/firmware\//g" \
429*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware
430*4882a593Smuzhiyun		cp $ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware \
431*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_init.sh
432*4882a593Smuzhiyun		cp $ROOTFS_DIR/usr/bin/bt_load_broadcom_firmware \
433*4882a593Smuzhiyun			$ROOTFS_DIR/usr/bin/bt_pcba_test
434*4882a593Smuzhiyun		#wifi
435*4882a593Smuzhiyun		rm -rf $ROOTFS_DIR/etc/init.d/S36load_all_wifi_modules
436*4882a593Smuzhiyun		cp $RKWIFIBT/S36load_wifi_modules $ROOTFS_DIR/etc/init.d/
437*4882a593Smuzhiyun		if [[ "$WIFI_CHIP" =~ "AP" ]];then
438*4882a593Smuzhiyun			sed -i "s/WIFI_KO/\/system\/lib\/modules\/bcmdhd.ko/g" \
439*4882a593Smuzhiyun				$ROOTFS_DIR/etc/init.d/S36load_wifi_modules
440*4882a593Smuzhiyun		else
441*4882a593Smuzhiyun			sed -i "s/WIFI_KO/\/system\/lib\/modules\/bcmdhd_pcie.ko/g" \
442*4882a593Smuzhiyun				$ROOTFS_DIR/etc/init.d/S36load_wifi_modules
443*4882a593Smuzhiyun		fi
444*4882a593Smuzhiyun	fi
445*4882a593Smuzhiyun
446*4882a593Smuzhiyun	finish_build build_wifibt $@
447*4882a593Smuzhiyun}
448*4882a593Smuzhiyun
449*4882a593Smuzhiyun# Hooks
450*4882a593Smuzhiyun
451*4882a593Smuzhiyunusage_hook()
452*4882a593Smuzhiyun{
453*4882a593Smuzhiyun	echo -e "wifibt[:<dst dir>[:<chip>[:<tty>]]] \tbuild Wifi/BT"
454*4882a593Smuzhiyun}
455*4882a593Smuzhiyun
456*4882a593SmuzhiyunBUILD_CMDS="wifibt"
457*4882a593Smuzhiyunbuild_hook()
458*4882a593Smuzhiyun{
459*4882a593Smuzhiyun	shift
460*4882a593Smuzhiyun	build_wifibt "$([ -d "$1" ] || echo $DEFAULT_ROOTFS_DIR)" $@
461*4882a593Smuzhiyun}
462*4882a593Smuzhiyun
463*4882a593Smuzhiyunsource "${BUILD_HELPER:-$(dirname "$(realpath "$0")")/../build-hooks/build-helper}"
464*4882a593Smuzhiyun
465*4882a593Smuzhiyunbuild_wifibt $@
466