initializing tree with aospdtgen just fr skeleton
This commit is contained in:
190
rootdir/bin/init.mmi.boot.sh
Normal file
190
rootdir/bin/init.mmi.boot.sh
Normal file
@ -0,0 +1,190 @@
|
||||
#!/vendor/bin/sh
|
||||
|
||||
PATH=/sbin:/vendor/sbin:/vendor/bin:/vendor/xbin
|
||||
export PATH
|
||||
|
||||
scriptname=${0##*/}
|
||||
|
||||
notice()
|
||||
{
|
||||
echo "$*"
|
||||
echo "$scriptname: $*" > /dev/kmsg
|
||||
}
|
||||
|
||||
# reload UTAGS
|
||||
utag_status=$(cat /proc/config/reload)
|
||||
if [ "$utag_status" == "2" ]; then
|
||||
notice "Utags are not ready, reloading"
|
||||
echo 1 > /proc/config/reload
|
||||
utag_status=$(cat /proc/config/reload)
|
||||
[ "$utag_status" != "0" ] && notice "Utags failed to reload"
|
||||
fi
|
||||
|
||||
# Export these for factory validation purposes
|
||||
iccid=$(cat /proc/config/iccid/ascii 2>/dev/null)
|
||||
if [ ! -z "$iccid" ]; then
|
||||
setprop ro.vendor.mot.iccid $iccid
|
||||
fi
|
||||
unset iccid
|
||||
|
||||
# Get FTI data and catch old units with incorrect/missing UTAG_FTI
|
||||
pds_fti=/mnt/vendor/persist/factory/fti
|
||||
if [ -r $pds_fti ]; then
|
||||
set -A fti $(od -A n -t x1 $pds_fti 2>/dev/null | tr '[A-F]' '[a-f]')
|
||||
else
|
||||
notice "Can not read FTI data in persist"
|
||||
fi
|
||||
|
||||
# If UTAG_FTI is readable, compare checksums
|
||||
# and if they mismatch, assume PDS is valid and overwrite UTAG
|
||||
utag_fti=/proc/config/fti
|
||||
if [ -r $utag_fti/ascii ]; then
|
||||
set -A fti_utag $(cat ${utag_fti}/raw | sed 's/../& /g' | tr '[A-F]' '[a-f]')
|
||||
# Byte 128 is total cksum, if nothing there, PDS data is invalid/missing
|
||||
if [ ! -z "${fti[127]}" ]; then
|
||||
# Make sure fti in UTAG is the same as in persist. Checksum comparison
|
||||
if [ "${fti[126]}" != "${fti_utag[126]}" -o "${fti[127]}" != "${fti_utag[127]}" ]; then
|
||||
notice "Copying FTI data from persist"
|
||||
cat $pds_fti > ${utag_fti}/raw
|
||||
fi
|
||||
else
|
||||
# If PDS data is invalid, take UTAG and hope it is correct
|
||||
notice "Will use FTI from UTAG"
|
||||
set -A fti $(od -A n -t x1 ${utag_fti}/ascii 2>/dev/null)
|
||||
fi
|
||||
else
|
||||
notice "Missing FTI UTAG; copying from persist"
|
||||
echo fti > /proc/config/all/new
|
||||
cat $pds_fti > ${utag_fti}/raw
|
||||
fi
|
||||
|
||||
# Read HW version from FTI data
|
||||
hw_v1="\x${fti[35]}"
|
||||
hw_v2="\x${fti[36]}"
|
||||
hw_v3="\x${fti[37]}"
|
||||
if [ "$hw_v3" == "\x30" ]; then
|
||||
hw_v3=""
|
||||
fi
|
||||
hw_v4="\x${fti[38]}"
|
||||
if [ "$hw_v4" == "\x30" ]; then
|
||||
hw_v4=""
|
||||
fi
|
||||
setprop ro.vendor.hw.boardversion $(printf "$hw_v1$hw_v2$hw_v3$hw_v4")
|
||||
|
||||
# Now we have set fti var either from PDS or UTAG
|
||||
# Get Last Test Station stamp from FTI
|
||||
# and convert to user-friendly date, US format
|
||||
# Real offsets for year/month/day are 63/64/65
|
||||
# If the month/date look reasonable, data is probably OK.
|
||||
mdate="Unknown"
|
||||
y=0x${fti[63]}
|
||||
m=0x${fti[64]}
|
||||
d=0x${fti[65]}
|
||||
let year=$y month=$m day=$d
|
||||
# Invalid data will often have bogus month/date values
|
||||
if [ $month -le 12 -a $day -le 31 -a $year -ge 12 ]; then
|
||||
mdate=$month/$day/20$year
|
||||
else
|
||||
notice "Corrupt FTI data"
|
||||
fi
|
||||
|
||||
# FEATURE-7596 The utag date is preferred
|
||||
utag_date=$(cat /proc/config/date/ascii 2>/dev/null)
|
||||
if [ ! -z "$utag_date" ]; then
|
||||
# utage date format mm-dd-yyyy
|
||||
utag_date=(${utag_date//-/ })
|
||||
m=${utag_date[0]}
|
||||
d=${utag_date[1]}
|
||||
y=${utag_date[2]}
|
||||
let year=$y month=$m day=$d
|
||||
if [ $month -le 12 -a $month -ge 1 -a $day -le 31 -a $day -ge 1 -a $year -ge 2012 ]; then
|
||||
mdate=$month/$day/$year
|
||||
else
|
||||
notice $month $day $year
|
||||
notice "Corrupt utag date"
|
||||
fi
|
||||
fi
|
||||
|
||||
setprop ro.vendor.manufacturedate $mdate
|
||||
unset fti y m d year month day utag_fti pds_fti fti_utag mdate utag_date
|
||||
|
||||
t=$(getprop ro.build.tags)
|
||||
if [[ "$t" != *release* ]]; then
|
||||
for p in $(cat /proc/cmdline); do
|
||||
if [ ${p%%:*} = "@" ]; then
|
||||
v=${p#@:}; a=${v%=*}; b=${v#*=}
|
||||
${a%%:*} ${a##*:} $b
|
||||
fi
|
||||
done
|
||||
fi
|
||||
unset p v a b t
|
||||
|
||||
# Cleanup stale/incorrect programmed model value
|
||||
# Real values will never contain substrings matching "internal" device name
|
||||
product=$(getprop ro.vendor.hw.device)
|
||||
model=$(cat /proc/config/model/ascii 2>/dev/null)
|
||||
if [ $? -eq 0 ]; then
|
||||
if [ "${model#*_}" == "$product" -o "${model%_*}" == "$product" ]; then
|
||||
notice "Clearing stale model value"
|
||||
echo "" > /proc/config/model/raw
|
||||
fi
|
||||
fi
|
||||
unset model product
|
||||
|
||||
|
||||
|
||||
# Export the RKP csr state which should be done in factory
|
||||
rkp_complete_file="/mnt/vendor/persist/rkp_complete"
|
||||
rkp_csr_state="not uploaded"
|
||||
if [ -f "$rkp_complete_file" ]; then
|
||||
setprop ro.vendor.mot.hw.rkp_csr_uploaded 1
|
||||
rkp_csr_state="already uploaded"
|
||||
else
|
||||
setprop ro.vendor.mot.hw.rkp_csr_uploaded 0
|
||||
fi
|
||||
notice "RKP CSR file on device is: $rkp_csr_state"
|
||||
unset $rkp_complete_file
|
||||
unset $rkp_csr_state
|
||||
|
||||
get_history_value()
|
||||
{
|
||||
local __result=$1
|
||||
local history_count=0
|
||||
local value=""
|
||||
local IFS=','
|
||||
|
||||
shift 1
|
||||
for arg in ${@}; do
|
||||
value=$value",$arg"
|
||||
history_count=$(($history_count + 1))
|
||||
if [ $history_count -eq 3 ]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
eval $__result="$value"
|
||||
debug "value:$value history_count:$history_count"
|
||||
}
|
||||
|
||||
set_boot_bootseq_history()
|
||||
{
|
||||
#get current boot sequence
|
||||
if [ ! -f /proc/bootinfo ]; then
|
||||
notice "Error:/proc/bootinfo is not ready"
|
||||
return
|
||||
fi
|
||||
boot_seq_line=`grep BOOT_SEQ /proc/bootinfo | sed 's/ //g'`
|
||||
boot_seq=${boot_seq_line##*:}
|
||||
notice "BOOT_SEQ is $boot_seq"
|
||||
setprop ro.vendor.boot_seq $boot_seq
|
||||
boot_time=`date +%s`
|
||||
|
||||
#get previous value of bootseq history
|
||||
bootseq_history=`getprop persist.vendor.boot.bootseq.history`
|
||||
notice "booseq_history is $bootseq_history"
|
||||
get_history_value valid_history_value $bootseq_history
|
||||
setprop persist.vendor.boot.bootseq.history "$boot_seq.$boot_time$valid_history_value"
|
||||
new_bootseq_history=`getprop persist.vendor.boot.bootseq.history`
|
||||
notice "set persist.vendor.boot.bootseq.history $new_bootseq_history"
|
||||
}
|
||||
|
||||
set_boot_bootseq_history
|
Reference in New Issue
Block a user