module: optimize select module [1/13]

PD#SWPL-105941

Problem:
select driver according to project configuration

Solution:
select driver according to project configuration

Verify:
ohm

Change-Id: I607d10b59ac9c9ac5589cfcc358345e6b9296a4f
Signed-off-by: Wanwei Jiang <wanwei.jiang@amlogic.com>
diff --git a/amlogic_utils.sh b/amlogic_utils.sh
index f4dca5a..0c62f7f 100644
--- a/amlogic_utils.sh
+++ b/amlogic_utils.sh
@@ -292,41 +292,92 @@
 	fi
 
 	if [[ -n ${CLK_SOC_MODULE} ]]; then
-		delete_clk_soc_module=()
+		delete_clk_soc_modules=()
 		for module in `ls amlogic-clk-soc-*`; do
 			if [[ "${CLK_SOC_MODULE}" != "${module}" ]] ; then
 				echo Delete clk soc module: ${module}
 				sed -n "/${module}:/p" modules.dep.temp
 				sed -i "/${module}:/d" modules.dep.temp
-				delete_clk_soc_module=(${delete_clk_soc_module[@]} ${module})
+				delete_clk_soc_modules=(${delete_clk_soc_modules[@]} ${module})
 			fi
 		done
-		echo delete_clk_soc_module=${delete_clk_soc_module[*]}
+		echo delete_clk_soc_modules=${delete_clk_soc_modules[*]}
 	fi
 
 	if [[ -n ${PINCTRL_SOC_MODULE} ]]; then
-		delete_pinctrl_soc_module=()
+		delete_pinctrl_soc_modules=()
 		for module in `ls amlogic-pinctrl-soc-*`; do
 			if [[ "${PINCTRL_SOC_MODULE}" != "${module}" ]] ; then
 				echo Delete pinctrl soc module: ${module}
 				sed -n "/${module}:/p" modules.dep.temp
 				sed -i "/${module}:/d" modules.dep.temp
-				delete_pinctrl_soc_module=(${delete_pinctrl_soc_module[@]} ${module})
+				delete_pinctrl_soc_modules=(${delete_pinctrl_soc_modules[@]} ${module})
 			fi
 		done
-		echo delete_pinctrl_soc_module=${delete_pinctrl_soc_module[*]}
+		echo delete_pinctrl_soc_modules=${delete_pinctrl_soc_modules[*]}
 	fi
 
-	delete_module=()
+	in_line_i=a
+	delete_type_modules=()
+	echo "TYPE_MODULE_SELECT_MODULE=${TYPE_MODULE_SELECT_MODULE}"
+	mkdir temp_dir
+	cd temp_dir
+	in_temp_dir=y
+	for element in ${TYPE_MODULE_SELECT_MODULE}; do
+		if [[ ${in_temp_dir} = y ]]; then
+			cd ../
+			rm -r temp_dir
+			in_temp_dir=
+		fi
+		if [[ ${in_line_i} = a ]]; then
+			in_line_i=b
+			type_module=${element}
+			select_modules_i=0
+			select_modules_count=
+			select_modules=
+		elif [[ ${in_line_i} = b ]]; then
+			in_line_i=c
+			select_modules_count=${element}
+		else
+			let select_modules_i+=1
+			select_modules="${select_modules} ${element}"
+			if [[ ${select_modules_i} -eq ${select_modules_count} ]]; then
+				in_line_i=a
+				echo type_module=$type_module select_modules=$select_modules
+				for module in `ls ${type_module}`; do
+					dont_delete_module=0
+					for select_module in ${select_modules}; do
+						if [[ "${select_module}" == "${module}" ]] ; then
+							dont_delete_module=1
+							break;
+						fi
+					done
+					if [[ ${dont_delete_module} != 1 ]]; then
+						echo Delete module: ${module}
+						sed -n "/${module}:/p" modules.dep.temp
+						sed -i "/${module}:/d" modules.dep.temp
+						delete_type_modules=(${delete_type_modules[@]} ${module})
+					fi
+				done
+				echo delete_type_modules=${delete_type_modules[*]}
+			fi
+		fi
+	done
+	if [[ -n ${in_temp_dir} ]]; then
+		cd ../
+		rm -r temp_dir
+	fi
+
+	black_modules=()
 	for module in ${MODULES_LOAD_BLACK_LIST[@]}; do
 		modules=`ls ${module}*`
-		delete_module=(${delete_module[@]} ${modules[@]})
+		black_modules=(${black_modules[@]} ${modules[@]})
 	done
-	if [[ ${#delete_module[@]} == 0 ]]; then
-		echo "No delete module, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
+	if [[ ${#black_modules[@]} == 0 ]]; then
+		echo "black_modules is null, don't delete modules, MODULES_LOAD_BLACK_LIST=${MODULES_LOAD_BLACK_LIST[*]}"
 	else
-		echo delete_module=${delete_module[*]}
-		for module in ${delete_module[@]}; do
+		echo black_modules=${black_modules[*]}
+		for module in ${black_modules[@]}; do
 			echo Delete module: ${module}
 			sed -n "/${module}:/p" modules.dep.temp
 			sed -i "/${module}:/d" modules.dep.temp
@@ -334,7 +385,7 @@
 	fi
 
 	cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
-	delete_modules=(${delete_soc_module[@]} ${delete_clk_soc_module} ${delete_pinctrl_soc_module} ${delete_module[@]})
+	delete_modules=(${delete_soc_module[@]} ${delete_clk_soc_modules[@]} ${delete_pinctrl_soc_modules[@]} ${delete_type_modules[@]} ${black_modules[@]})
 	for module in ${delete_modules[@]}; do
 		if [[ ! `ls $module` ]]; then
 			continue