[Feature] add GA346 baseline version

Change-Id: Ic62933698569507dcf98240cdf5d9931ae34348f
diff --git a/src/kernel/linux/v4.19/scripts/bvt/mediatek_bvt.sh b/src/kernel/linux/v4.19/scripts/bvt/mediatek_bvt.sh
new file mode 100755
index 0000000..d59b2e6
--- /dev/null
+++ b/src/kernel/linux/v4.19/scripts/bvt/mediatek_bvt.sh
@@ -0,0 +1,162 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+green='\e[0;32m'
+red='\e[0;31m'
+eol='\e[0m'
+
+function print_usage(){
+	echo -e "${green}Script for auto test all config on/off/mod \
+to ensure kernel build${eol}"
+	echo ""
+	echo -e "${red}Command for local test kernel build:${eol}"
+	echo "[kernel_dir] [arch] [defconfig] mode=t\
+./scripts/bvt/mediatek_bvt.sh"
+	echo ""
+	echo -e "${green}Description:${eol}"
+	echo "[kernel_dir]: kernel directory position"
+	echo "[arch]: arm/arm64, position of defconfig"
+	echo "[defconfig]: mediatek_debug_defconfig for all config on test"
+	echo "             mediatek_config_off_defconfig \
+for all config off test"
+	echo "             mediatek_module_defconfig for all\
+config module test"
+	echo ""
+	echo -e "${green}Example:${eol} ${red}kernel_dir=\$(pwd) arch=arm64 \
+defconfig=mediatek_debug_defconfig mode=t \
+./scripts/bvt/mediatek_bvt.sh${eol}"
+	echo ""
+	echo -e "${red}Command for add and check config list:${eol}"
+	echo "[commit] [kernel_dir] mode=a ./scripts/bvt/mediatek_bvt.sh"
+	echo ""
+	echo -e "${green}Description:${eol}"
+	echo "[kernel_dir]: kernel directory position"
+	echo ""
+	echo -e "${green}Example:${eol} ${red}kernel_dir=\$(pwd) \
+ mode=a ./scripts/bvt/mediatek_bvt.sh${eol}"
+}
+
+if [[ "$1" == "h" ]] || [[ "$1" == "help" ]] || [ -z "mode" ]
+then
+	print_usage
+fi
+
+if [ "$mode" == "a" ]
+then
+	IFS="+"
+	if [ -z "$commit" ]
+	then
+		bypass=$(git log --name-only -1 | grep mediatek_bvt.sh)
+                log_cached=$(git show -p | grep "+CONFIG_" \
+			| grep "=y" | sed '/^$/d' | sed 's/y//g' \
+			| sed 's/\+//g' | tr '\n' '+')
+		log_noncached=$(git diff | grep "+CONFIG_" \
+                        | grep "=y" | sed '/^$/d' | sed 's/y//g' \
+			| sed 's/\+//g' | tr '\n' '+')
+		if [ -z "$bypass" ]
+		then
+			for conf in ${log_cached[@]}; do
+				result=\
+$(grep $conf $kernel_dir/scripts/bvt/config_list )
+				if [ -z "$result" ]
+				then
+					echo ""$conf"y" >> \
+				$kernel_dir/scripts/bvt/config_list
+				fi
+			done
+		fi
+		for conf in ${log_noncached[@]}; do
+			result=\
+$(grep $conf $kernel_dir/scripts/bvt/config_list )
+			if [ -z "$result" ]
+			then
+				echo ""$conf"y" >> \
+				$kernel_dir/scripts/bvt/config_list
+			fi
+		done
+		sort $kernel_dir/scripts/bvt/config_list \
+			-o $kernel_dir/scripts/bvt/config_list
+		check_return=$(git status | grep config_list)
+		if  [ "$check_return" == "" ]
+		then
+			exit 0
+		fi
+		exit -1
+	else
+		new_con=$(git log "$commit"..HEAD -p | grep "+CONFIG_" \
+			| grep "=y" | sed '/^$/d' | sed 's/y//g' \
+			| sed 's/\+//g' | tr '\n' '+')
+		for conf in ${new_con[@]}; do
+			result=\
+$(grep $conf $kernel_dir/scripts/bvt/config_list )
+			if [ -z "$result" ]
+			then
+				echo ""$conf"y" >> \
+				$kernel_dir/scripts/bvt/config_list
+			fi
+		done
+		sort $kernel_dir/scripts/bvt/config_list \
+			-o $kernel_dir/scripts/bvt/config_list
+	fi
+fi
+
+opt=""
+if [[ "$defconfig" == mediatek_config_on* ]]
+then
+	opt="-e"
+fi
+if [[ "$defconfig" == mediatek_config_off* ]]
+then
+	opt="-d"
+fi
+if [[ "$defconfig" == mediatek_module* ]]
+then
+	opt="-m"
+fi
+
+if [ -z "$arch" ]
+then
+	arch=arm64
+
+	def_arch=$(echo $defconfig | tail -c 13)
+	echo $def_arch
+	if [[ "$def_arch" == "32_defconfig" ]]
+	then
+		arch=arm
+	fi
+fi
+
+if [ "$mode" == "t" ]
+then
+	if [[ "$defconfig" != "mediatek_debug_defconfig" ]] && \
+		[[ "$arch" == "arm64" ]]
+	then
+		if [ ! -f "$kernel_dir/arch/$arch/configs/$defconfig" ]
+		then
+		cp $kernel_dir/arch/$arch/configs/mediatek_debug_defconfig \
+			$kernel_dir/arch/$arch/configs/$defconfig
+		fi
+	fi
+	if [[ "$defconfig" != "mediatek_debug_32_defconfig" ]] && \
+		[[ "$arch" == "arm" ]]
+	then
+		if [ ! -f "$kernel_dir/arch/$arch/configs/$defconfig" ]
+		then
+		cp $kernel_dir/arch/$arch/configs/mediatek_debug_32_defconfig \
+			$kernel_dir/arch/$arch/configs/$defconfig
+		fi
+	fi
+	exec < $kernel_dir/scripts/bvt/config_list
+
+	IFS="="
+	while read config test
+	do
+		echo $config $test $opt $arch
+		if [[ "$test" == "y" ]] && [[ -n "$opt" ]]
+		then
+			sh $kernel_dir/scripts/config --file \
+			$kernel_dir/arch/$arch/configs/$defconfig \
+			$opt $config
+		fi
+	done
+fi