script: modules sequence list [1/1]
PD#SWPL-64232
Problem:
ramdisk modules sequence list
vendor modules sequence list
Solution:
1. ramdisk modules sequence list
2. vendor modules sequence list
3. delete needn't modules
4. delete other chip modules
Verify:
s4d and C2 AF400
Change-Id: Ibb5aed6509b7b18a920e58d507337d3b56f5af32
Signed-off-by: wanwei.jiang <wanwei.jiang@amlogic.com>
diff --git a/amlogic_utils.sh b/amlogic_utils.sh
index 5f07dd8..00170b1 100644
--- a/amlogic_utils.sh
+++ b/amlogic_utils.sh
@@ -45,13 +45,11 @@
function read_ext_module_predefine() {
PRE_DEFINE=""
- for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`;
- do
+ for y_config in `cat $1 | grep "^CONFIG_.*=y" | sed 's/=y//'`; do
PRE_DEFINE="$PRE_DEFINE"" -D"${y_config}
done
- for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`;
- do
+ for m_config in `cat $1 | grep "^CONFIG_.*=m" | sed 's/=m//'`; do
PRE_DEFINE="$PRE_DEFINE"" -D"${m_config}_MODULE
done
@@ -68,24 +66,79 @@
export -f prepare_module_build
function mod_probe() {
- local ko=$1
- local loop
- for loop in `grep "$ko:" modules.dep | sed 's/.*://'`;
- do
- mod_probe $loop
- echo insmod $loop >> __install.sh
- done
+ local ko=$1
+ local loop
+ for loop in `grep "$ko:" modules.dep | sed 's/.*://'`; do
+ mod_probe $loop
+ echo insmod $loop >> __install.sh
+ done
}
function adjust_sequence_modules_loading() {
- cp modules.dep modules.dep.temp
- if [ -f modules.dep.temp1 ]; then
- rm modules.dep.temp1
+ if [[ -n $1 ]]; then
+ chips=$1
fi
+
+ source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
+ cp modules.dep modules.dep.temp
+
+ soc_module=()
+ for chip in ${chips[@]}; do
+ chip_module=`ls amlogic-*-soc-${chip}.ko`
+ soc_module=(${soc_module[@]} ${chip_module[@]})
+ done
+ echo soc_module=${soc_module[*]}
+
+ delete_soc_module=()
+ if [[ ${#soc_module[@]} == 0 ]]; then
+ echo "Use all soc module"
+ else
+ for module in `ls amlogic-*-soc-*`; do
+ if [[ ! "${soc_module[@]}" =~ "${module}" ]] ; then
+ echo Delete soc module: ${module}
+ sed -n "/${module}:/p" modules.dep.temp
+ sed -i "/${module}:/d" modules.dep.temp
+ delete_soc_module=(${delete_soc_module[@]} ${module})
+ fi
+ done
+ echo delete_soc_module=${delete_soc_module[*]}
+ fi
+
+ delete_module=()
+ for module in ${MODULES_LOAD_BLACKLIST[@]}; do
+ modules=`ls ${module}*`
+ delete_module=(${delete_module[@]} ${modules[@]})
+ done
+ if [[ ${#delete_module[@]} == 0 ]]; then
+ echo "No delete module, MODULES_LOAD_BLACKLIST=${MODULES_LOAD_BLACKLIST[*]}"
+ else
+ echo delete_module=${delete_module[*]}
+ for module in ${delete_module[@]}; do
+ echo Delete module: ${module}
+ sed -n "/${module}:/p" modules.dep.temp
+ sed -i "/${module}:/d" modules.dep.temp
+ done
+ fi
+
+ cat modules.dep.temp | cut -d ':' -f 2 > modules.dep.temp1
+ delete_modules=(${delete_soc_module[@]} ${delete_module[@]})
+ for module in ${delete_modules[@]}; do
+ match=`sed -n "/${module}/=" modules.dep.temp1`
+ for match in ${match[@]}; do
+ match_count=(${match_count[@]} $match)
+ done
+ if [[ ${#match_count[@]} != 0 ]]; then
+ echo "Error ${#match_count[@]} modules depend on ${module}, please modify:"
+ echo ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list:MODULES_LOAD_BLACKLIST
+ exit
+ fi
+ rm -f ${module}
+ done
+ rm -f modules.dep.temp1
touch modules.dep.temp1
- for module in ${MODULES_LOAD_FIRSTLIST[@]};
- do
- echo FIRSTLIST MODULES: $module
+
+ for module in ${RAMDISK_MODULES_LOAD_LIST[@]}; do
+ echo RAMDISK_MODULES_LOAD_LIST: $module
sed -n "/${module}:/p" modules.dep.temp
sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
sed -i "/${module}:/d" modules.dep.temp
@@ -94,23 +147,65 @@
sed -i "/${module}.*\.ko:/d" modules.dep.temp
done
- cat modules.dep.temp >> modules.dep.temp1
-
- for module in ${MODULES_LOAD_BLACKLIST[@]};
- do
- echo BLACKLIST MODULES: $module
- sed -n "/${module}:/p" modules.dep.temp1
- sed -i "/${module}:/d" modules.dep.temp1
- sed -n "/${module}.*\.ko:/p" modules.dep.temp1
- sed -i "/${module}.*\.ko:/d" modules.dep.temp1
+ for module in ${VENDOR_MODULES_LOAD_FIRST_LIST[@]}; do
+ echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
+ sed -n "/${module}:/p" modules.dep.temp
+ sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp1
+ sed -i "/${module}:/d" modules.dep.temp
+ sed -n "/${module}.*\.ko:/p" modules.dep.temp
+ sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp1
+ sed -i "/${module}.*\.ko:/d" modules.dep.temp
done
+ if [ -f modules.dep.temp2 ]; then
+ rm modules.dep.temp2
+ fi
+ touch modules.dep.temp2
+ for module in ${VENDOR_MODULES_LOAD_LAST_LIST[@]}; do
+ echo VENDOR_MODULES_LOAD_FIRST_LIST: $module
+ sed -n "/${module}:/p" modules.dep.temp
+ sed -n "/${module}:/p" modules.dep.temp >> modules.dep.temp2
+ sed -i "/${module}:/d" modules.dep.temp
+ sed -n "/${module}.*\.ko:/p" modules.dep.temp
+ sed -n "/${module}.*\.ko:/p" modules.dep.temp >> modules.dep.temp2
+ sed -i "/${module}.*\.ko:/d" modules.dep.temp
+ done
+
+ cat modules.dep.temp >> modules.dep.temp1
+ cat modules.dep.temp2 >> modules.dep.temp1
+
cp modules.dep.temp1 modules.dep
rm modules.dep.temp
rm modules.dep.temp1
+ rm modules.dep.temp2
+}
+
+creat_ramdis_vendor_install_sh() {
+ install_temp=$1
+ source ${ROOT_DIR}/${KERNEL_DIR}/${COMMON_DRIVERS_DIR}/scripts/amlogic/modules_sequence_list
+ last_ramdisk_module=${RAMDISK_MODULES_LOAD_LIST[${#RAMDISK_MODULES_LOAD_LIST[@]}-1]}
+ last_ramdisk_module_line=`sed -n "/${last_ramdisk_module}/=" ${install_temp}`
+ for line in ${last_ramdisk_module_line}; do
+ ramdisk_last_line=${line}
+ done
+ head -n ${ramdisk_last_line} ${install_temp} > ramdisk_install.sh
+
+ sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' ramdisk_install.sh
+ echo "echo Install ramdisk modules success!" >> ramdisk_install.sh
+ chmod 755 ramdisk_install.sh
+
+ file_last_line=`sed -n "$=" ${install_temp}`
+ let line=${file_last_line}-${ramdisk_last_line}
+ tail -n ${line} ${install_temp} > vendor_install.sh
+
+ sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' vendor_install.sh
+ echo "echo Install vendor modules success!" >> vendor_install.sh
+ chmod 755 vendor_install.sh
}
function modules_install() {
+ arg1=$1
+
pushd ${DIST_DIR}
rm modules -rf
mkdir modules
@@ -124,7 +219,7 @@
cd modules
sed -i 's#[^ ]*/##g' modules.dep
- adjust_sequence_modules_loading
+ adjust_sequence_modules_loading "${arg1[*]}"
touch __install.sh
for loop in `cat modules.dep | sed 's/:.*//'`; do
@@ -139,16 +234,20 @@
}
}' > __install.sh.tmp
+ creat_ramdis_vendor_install_sh __install.sh.tmp
+
cp __install.sh.tmp __install.sh
sed -i '1s/^/#!\/bin\/sh\n\nset -ex\n/' __install.sh
echo "echo Install modules success!" >> __install.sh
- chmod 777 __install.sh
+ chmod 755 __install.sh
echo "#!/bin/sh" > install.sh
# echo "./__install.sh || reboot" >> install.sh
- echo "./__install.sh" >> install.sh
- chmod 777 install.sh
+ # echo "./__install.sh" >> install.sh
+ echo "./ramdisk_install.sh" >> install.sh
+ echo "./vendor_install.sh" >> install.sh
+ chmod 755 install.sh
echo "/modules/: all `wc -l modules.dep | awk '{print $1}'` modules."