xref: /OK3568_Linux_fs/device/rockchip/common/scripts/check-power-domain.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash -e
2*4882a593Smuzhiyun
3*4882a593Smuzhiyuntmpdir=`mktemp -d`
4*4882a593Smuzhiyundump_kernel_dtb_file=`mktemp -p $tmpdir`
5*4882a593Smuzhiyuntmp_phandle_file=`mktemp -p $tmpdir`
6*4882a593Smuzhiyuntmp_io_domain_file=`mktemp -p $tmpdir`
7*4882a593Smuzhiyuntmp_regulator_microvolt_file=`mktemp -p $tmpdir`
8*4882a593Smuzhiyuntmp_final_target=`mktemp -p $tmpdir`
9*4882a593Smuzhiyuntmp_grep_file=`mktemp -p $tmpdir`
10*4882a593Smuzhiyun
11*4882a593Smuzhiyundtc -q -I dtb -O dts -o ${dump_kernel_dtb_file} "$RK_KERNEL_DTB"
12*4882a593Smuzhiyun
13*4882a593Smuzhiyunif [ "$RK_SECURITY_CHECK_METHOD" = "DM-E" ] ; then
14*4882a593Smuzhiyun	if ! grep -q "compatible = \"linaro,optee-tz\";" $dump_kernel_dtb_file; then
15*4882a593Smuzhiyun		echo "Please add: "
16*4882a593Smuzhiyun		echo "        optee: optee {"
17*4882a593Smuzhiyun		echo "                compatible = \"linaro,optee-tz\";"
18*4882a593Smuzhiyun		echo "                method = \"smc\";"
19*4882a593Smuzhiyun		echo "                status = \"okay\";"
20*4882a593Smuzhiyun		echo "        }"
21*4882a593Smuzhiyun		echo "To your dts file"
22*4882a593Smuzhiyun		rm -rf $tmpdir
23*4882a593Smuzhiyun		exit 1;
24*4882a593Smuzhiyun	fi
25*4882a593Smuzhiyunfi
26*4882a593Smuzhiyun
27*4882a593Smuzhiyunif ! grep -Pzo "io-domains\s*{(\n|\w|-|;|=|<|>|\"|_|\s|,)*};" $dump_kernel_dtb_file 1>$tmp_grep_file 2>/dev/null; then
28*4882a593Smuzhiyun	echo "Not Found io-domains in $RK_KERNEL_DTS"
29*4882a593Smuzhiyun	rm -rf $tmpdir
30*4882a593Smuzhiyun	exit 0
31*4882a593Smuzhiyunfi
32*4882a593Smuzhiyungrep -a supply $tmp_grep_file > $tmp_io_domain_file || true
33*4882a593Smuzhiyunrm -f $tmp_grep_file
34*4882a593Smuzhiyunawk '{print "phandle = " $3}' $tmp_io_domain_file > $tmp_phandle_file
35*4882a593Smuzhiyun
36*4882a593Smuzhiyunwhile IFS= read -r item_phandle && IFS= read -u 3 -r item_domain
37*4882a593Smuzhiyundo
38*4882a593Smuzhiyun	echo "${item_domain% *}" >> $tmp_regulator_microvolt_file
39*4882a593Smuzhiyun	tmp_none_item=${item_domain% *}
40*4882a593Smuzhiyun	cmds="grep -Pzo \"{(\\n|\w|-|;|=|<|>|\\\"|_|\s)*"$item_phandle\"
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun	eval "$cmds $dump_kernel_dtb_file | strings | grep "regulator-m..-microvolt" >> $tmp_regulator_microvolt_file" || \
43*4882a593Smuzhiyun		eval "sed -i \"/${tmp_none_item}/d\" $tmp_regulator_microvolt_file" && continue
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun	echo >> $tmp_regulator_microvolt_file
46*4882a593Smuzhiyundone < $tmp_phandle_file 3<$tmp_io_domain_file
47*4882a593Smuzhiyun
48*4882a593Smuzhiyunwhile read -r regulator_val
49*4882a593Smuzhiyundo
50*4882a593Smuzhiyun	if echo ${regulator_val} | grep supply &>/dev/null; then
51*4882a593Smuzhiyun		echo -e "\n\n\e[1;33m${regulator_val%*=}\e[0m" >> $tmp_final_target
52*4882a593Smuzhiyun	else
53*4882a593Smuzhiyun		tmp_none_item=${regulator_val##*<}
54*4882a593Smuzhiyun		tmp_none_item=${tmp_none_item%%>*}
55*4882a593Smuzhiyun		echo -e "${regulator_val%%<*} \e[1;31m$(( $tmp_none_item / 1000 ))mV\e[0m" >> $tmp_final_target
56*4882a593Smuzhiyun	fi
57*4882a593Smuzhiyundone < $tmp_regulator_microvolt_file
58*4882a593Smuzhiyun
59*4882a593Smuzhiyunecho -e "\e[41;1;30m PLEASE CHECK BOARD GPIO POWER DOMAIN CONFIGURATION !!!!!\e[0m"
60*4882a593Smuzhiyunecho -e "\e[41;1;30m <<< ESPECIALLY Wi-Fi/Flash/Ethernet IO power domain >>> !!!!!\e[0m"
61*4882a593Smuzhiyunecho -e "\e[41;1;30m Check Node [pmu_io_domains] in the file: $RK_KERNEL_DTS \e[0m"
62*4882a593Smuzhiyunecho
63*4882a593Smuzhiyunecho -e "\e[41;1;30m 请再次确认板级的电源域配置!!!!!!\e[0m"
64*4882a593Smuzhiyunecho -e "\e[41;1;30m <<< 特别是Wi-Fi,FLASH,以太网这几路IO电源的配置 >>> !!!!!\e[0m"
65*4882a593Smuzhiyunecho -e "\e[41;1;30m 检查内核文件 $RK_KERNEL_DTS 的节点 [pmu_io_domains] \e[0m"
66*4882a593Smuzhiyuncat $tmp_final_target
67*4882a593Smuzhiyun
68*4882a593Smuzhiyunrm -rf $tmpdir
69