diff -drupN a/scripts/exchange-sdc0-sdc2-for-dragonboard.sh b/scripts/exchange-sdc0-sdc2-for-dragonboard.sh --- a/scripts/exchange-sdc0-sdc2-for-dragonboard.sh 1970-01-01 03:00:00.000000000 +0300 +++ b/scripts/exchange-sdc0-sdc2-for-dragonboard.sh 2022-06-12 05:28:14.000000000 +0300 @@ -0,0 +1,103 @@ +#!/bin/bash +#step1:prepare some tmp files +#if you want to add your platform,just amend here +platform=$1 +if [ "$platform" == "sun50iw1p1" ]; then + ARCH="arm64" + SDC0_FLAG="sdmmc@01c0f000" + SDC2_FLAG="sdmmc@01C11000" +elif [ "$platform" == "sun50iw3p1" ]; then + ARCH="arm64" + SDC0_FLAG="sdmmc@04020000" + SDC2_FLAG="sdmmc@04022000" +elif [ "$platform" == "sun8iw15p1" ]; then + ARCH="arm" + SDC0_FLAG="sdmmc@04020000" + SDC2_FLAG="sdmmc@04022000" +elif [ "$platform" == "sun8iw11p1" \ + -o "$platform" == "sun8iw5p1" \ + -o "$platform" == "sun8iw6p1" ]; then + ARCH="arm" + SDC0_FLAG="sdmmc@01c0f000" + SDC2_FLAG="sdmmc@01C11000" +else + echo "unsupported platform!!!!!!!!" + exit 0 +fi +#platform independent code +#decompose the original dtsi to five parts, +#then compose into new dtsi +if [ "$ARCH" == "arm" ]; then +dtsi_file="./arch/${ARCH}/boot/dts/${platform}.dtsi" +dtsi_bak_file="./arch/${ARCH}/boot/dts/${platform}_bak.dtsi" +dtsi_start_file="./arch/${ARCH}/boot/dts/${platform}_start.dtsi" +dtsi_sdc2_file="./arch/${ARCH}/boot/dts/${platform}_sdc2.dtsi" +dtsi_mid_file="./arch/${ARCH}/boot/dts/${platform}_mid.dtsi" +dtsi_sdc0_file="./arch/${ARCH}/boot/dts/${platform}_sdc0.dtsi" +dtsi_end_file="./arch/${ARCH}/boot/dts/${platform}_end.dtsi" +else +dtsi_file="./arch/${ARCH}/boot/dts/sunxi/${platform}.dtsi" +dtsi_bak_file="./arch/${ARCH}/boot/dts/sunxi/${platform}_bak.dtsi" +dtsi_start_file="./arch/${ARCH}/boot/dts/sunxi/${platform}_start.dtsi" +dtsi_sdc2_file="./arch/${ARCH}/boot/dts/sunxi/${platform}_sdc2.dtsi" +dtsi_mid_file="./arch/${ARCH}/boot/dts/sunxi/${platform}_mid.dtsi" +dtsi_sdc0_file="./arch/${ARCH}/boot/dts/sunxi/${platform}_sdc0.dtsi" +dtsi_end_file="./arch/${ARCH}/boot/dts/sunxi/${platform}_end.dtsi" +fi + +rm -rf $dtsi_bak_file +rm -rf $dtsi_start_file +rm -rf $dtsi_sdc2_file +rm -rf $dtsi_sdc0_file +rm -rf $dtsi_end_file + +cp $dtsi_file $dtsi_bak_file +#step2:decompose the old_dtsi_file=start:sdc2:mid:sdc0:end +#search the sdc2 head by SDC2_FLAG +sdc2_start=`sed -n '/'${SDC2_FLAG}'/=' $dtsi_file` +#search the sdc2 tail by the first "};" after SDC2_FLAG +sdc2_end_tmp=`sed -n ''$sdc2_start',${/'}\;'/=}' $dtsi_file ` +sdc2_end=`echo $sdc2_end_tmp | awk -F ' ' '{print $1}'` + +#search the sdc0 head by SDC0_FLAG +sdc0_start=`sed -n '/'${SDC0_FLAG}'/=' $dtsi_file` +#search the sdc0 tail by the first "};" after SDC0_FLAG +sdc0_end_tmp=`sed -n ''$sdc0_start',${/'}\;'/=}' $dtsi_file ` +sdc0_end=`echo $sdc0_end_tmp | awk -F ' ' '{print $1}'` + +#sdc2_start < sdc0_start normally in dtsi +if [ "$sdc2_start" -gt "$sdc0_start" ] ;then + echo "sdc2 is after sdc0,may be something wrong" + exit 0 +fi + +part0_start=1 +part0_end=$(($sdc2_start - 1)) + +part1_start=$(($sdc2_start)) +part1_end=$(($sdc2_end)) + +part2_start=$(($sdc2_end + 1)) +part2_end=$(($sdc0_start - 1)) + +part3_start=$(($sdc0_start)) +part3_end=$(($sdc0_end)) + +part4_start=$(($sdc0_end + 1)) + +sed -n '1,'${part0_end}'p' $dtsi_file >> $dtsi_start_file +sed -n ''${part1_start}','${part1_end}'p' $dtsi_file >> $dtsi_sdc2_file +sed -n ''${part2_start}','${part2_end}'p' $dtsi_file >> $dtsi_mid_file +sed -n ''${part3_start}','${part3_end}'p' $dtsi_file >> $dtsi_sdc0_file +sed -n ''${part4_start}',$p' $dtsi_file >> $dtsi_end_file + +#step3:compose the new_dtsi_file=start:sdc0:mid:sdc2:end +rm -rf $dtsi_file +cat $dtsi_start_file $dtsi_sdc0_file $dtsi_mid_file $dtsi_sdc2_file $dtsi_end_file >> $dtsi_file + +#step4:clean some tmp files +rm -rf $dtsi_start_file +rm -rf $dtsi_sdc2_file +rm -rf $dtsi_mid_file +rm -rf $dtsi_sdc0_file +rm -rf $dtsi_end_file