#!/bin/sh

mkdir -p /data/vivo-common/BSPTest/test_file/local_custom_test
touch /data/vivo-common/BSPTest/test_file/local_custom_test/adi_test_result

echo "please input running times(3600 takes 3600 seconds):"
#read times
times=$1
printf "running times: $times\n"
echo "running times: $times" > /data/vivo-common/BSPTest/test_file/local_custom_test/adi_test_result

str_null=""
if [[ $times == $str_null ]];then
	times=1
fi

times=$((times * 26 + 1))
echo "change times: $times"

current_time=$(date "+%Y-%m-%d %H:%M:%S")
printf "Script is starting at: $current_time\n"
echo "Script is starting at: $current_time\n" >> /data/vivo-common/BSPTest/test_file/local_custom_test/adi_test_result

VAL_NUM=6
index=0
count=1
err_times=0
# board_ary["Project name"]="pmic_id_offset"="pmic_id"="test_reg_offset"
board_ary=(
	["SC9863A"]="0xc04"="0x2721"="0xee0"
	["UMS312"]="0x1804"="0x2730"="0x1bb4"
	["UMS512"]="0x1804"="0x2730"="0x1bb4"
	["UMS9230"]="0x1804"="0x2730"="0x1bb4"
	["UMS9620"]="0x2004"="0x7520"="0x23b0"
	["UMS9621"]="0x2004"="0x7520"="0x23b0"
	["UMS9360"]="0x2004"="0x9360"="0x22d4"
)
val_pattern=("0x0" "0x5555" "0x5a5a" "0xa5a5" "0xaaaa" "0xffff")

ADI_PATH=/sys/class/spi_master/spi4/spi4.0
SC27XX_SYSCON_PATH=/sys/bus/platform/drivers/sprd-pmic-glb/sprd,sc27xx-syscon
UMP962X_SYSCON_PATH=/sys/bus/platform/drivers/sprd-pmic-glb/sprd,ump962x-syscon

hw_info=`cat /vendor/build.prop | grep -i "ro.board.platform"`
prj_name=`echo $hw_info | awk -F '\\=' '{printf $2}'`

printf "current platform: %s\n" "$prj_name"
prj_name_big=`echo "$prj_name" | tr '[a-z]' '[A-Z]'`

if [ "$prj_name_big" == "UMS9621" ] || [ "$prj_name_big" == "UMS9620" ] || [ "$prj_name_big" == "UMS9360" ];then
        PMIC_SYSCON_PATH=$UMP962X_SYSCON_PATH
else
        PMIC_SYSCON_PATH=$SC27XX_SYSCON_PATH
fi

for index in ${!board_ary[*]};do
	if [[ ${board_ary[$index]} == *$prj_name_big* ]];then
		break
	fi
done

test_reg_offset=`echo ${board_ary[$index]} | awk -F '\\=' '{printf $4}'`
printf "test_reg_offset: %s\n" "$test_reg_offset"

while [ $count -le $times ]
do
	val_count=$((count%VAL_NUM))
	set_value=${val_pattern[$val_count]}
	echo $test_reg_offset >$PMIC_SYSCON_PATH/pmic_reg
	echo $set_value >$PMIC_SYSCON_PATH/pmic_value
	ret_test_res=`cat $PMIC_SYSCON_PATH/pmic_value`
	#printf "write value: 0x%s; read value: 0x%s\n" "$set_value" "$ret_test_res"
	if [ $ret_test_res != $set_value ];then
		printf "fail! write value: %s != read value: %s\n" "$set_value" "$ret_test_res"
		echo "fail! write value: $set_value != read value: $ret_test_res" >> /data/vivo-common/BSPTest/test_file/local_custom_test/adi_test_result
		err_times=$((err_times+1))
	fi

	count_printf=$((count%15600))
	if [[ $count_printf -eq 1 ]];then
		printf "count:$count\n"
		echo "count:$count" >> /data/vivo-common/BSPTest/test_file/local_custom_test/adi_test_result
	fi

	count=$((count+1))
done

if [ $err_times -gt 0 ];then
	printf "adi test fail!\n"
	echo "\nfail" >> /data/vivo-common/BSPTest/test_file/local_custom_test/adi_test_result
else
	printf "adi test pass!\n"
	echo "\npass" >> /data/vivo-common/BSPTest/test_file/local_custom_test/adi_test_result
fi
current_time=$(date "+%Y-%m-%d %H:%M:%S")
printf "Script is ending at: $current_time\n"
echo "Script is ending at: $current_time\n" >> /data/vivo-common/BSPTest/test_file/local_custom_test/adi_test_result
