ronnie
2022-10-23 e3a1b9bdd0692904702c0e734ea5dfde3b0ac8fb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash
 
dtsi_file=$1
if [ -z "$dtsi_file" ] || [ ! -f $dtsi_file ]; then
   echo "dts file: $dtsi_file not found!"
fi
 
# step1: prepare some tmp files
# decompose the original dtsi to five parts,
# then compose into new dtsi
dts_path=$(dirname $dtsi_file)
dts_name=$(basename -s .dtsi $dtsi_file)
dtsi_bak_file="$dts_path/${dts_name}_bak.dtsi"
dtsi_start_file="$dts_path/${dts_name}_start.dtsi"
dtsi_sdc2_file="$dts_path/${dts_name}_sdc2.dtsi"
dtsi_mid_file="$dts_path/${dts_name}_mid.dtsi"
dtsi_sdc0_file="$dts_path/${dts_name}_sdc0.dtsi"
dtsi_end_file="$dts_path/${dts_name}_end.dtsi"
 
# step2: decompose the old_dtsi_file=start:sdc2:mid:sdc0:end
# search the sdc2 head
sdc2_start=$(sed -n '/^\s*sdc2:/=' $dtsi_file)
 
# search the sdc0 head
sdc0_start=$(sed -n '/^\s*sdc0:/=' $dtsi_file)
 
# 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
 
cp $dtsi_file $dtsi_bak_file
cp $dtsi_file $dtsi_end_file
 
sed       '/^\s*sdc2:/Q'    $dtsi_end_file > $dtsi_start_file
sed -i -n '/^\s*sdc2:/,$ p' $dtsi_end_file
 
sed -n    '1,/^\s*};/p'     $dtsi_end_file > $dtsi_sdc2_file
sed -i    '1,/^\s*};/d'     $dtsi_end_file
 
sed       '/^\s*sdc0:/Q'    $dtsi_end_file > $dtsi_mid_file
sed -i -n '/^\s*sdc0:/,$ p' $dtsi_end_file
 
sed -n    '1,/^\s*};/p'     $dtsi_end_file > $dtsi_sdc0_file
sed -i    '1,/^\s*};/d'     $dtsi_end_file
 
# step3: compose the new_dtsi_file=start:sdc0:mid:sdc2:end
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