xref: /OK3568_Linux_fs/external/rockchip-test/suspend_resume/suspend_resume.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunRESULT_DIR=/userdata/rockchip-test/
4*4882a593SmuzhiyunRESULT_LOG=${RESULT_DIR}/suspend_resume.txt
5*4882a593SmuzhiyunSUSPEND_MAX=60
6*4882a593SmuzhiyunSUSPEND_MIN=30
7*4882a593SmuzhiyunSUSPEND_INTERVAL=$(($SUSPEND_MAX - $SUSPEND_MIN + 1 ))
8*4882a593SmuzhiyunWAKE_MAX=60
9*4882a593SmuzhiyunWAKE_MIN=30
10*4882a593SmuzhiyunWKAE_INTERVAL=$(($WAKE_MAX - $WAKE_MIN + 1 ))
11*4882a593SmuzhiyunMAX_CYCLES=10000
12*4882a593Smuzhiyun
13*4882a593Smuzhiyunif [ ! -e "/sys/class/rtc/rtc0/wakealarm" ];then
14*4882a593Smuzhiyun    echo "non-existent rtc, please check if rtc enabled"
15*4882a593Smuzhiyun    exit
16*4882a593Smuzhiyunfi
17*4882a593Smuzhiyun
18*4882a593Smuzhiyunmkdir -p ${RESULT_DIR}
19*4882a593Smuzhiyun
20*4882a593Smuzhiyunrandom() {
21*4882a593Smuzhiyun  hexdump -n 2 -e '/2 "%u"' /dev/urandom
22*4882a593Smuzhiyun}
23*4882a593Smuzhiyun
24*4882a593Smuzhiyunauto_suspend_resume_rtc()
25*4882a593Smuzhiyun{
26*4882a593Smuzhiyun    cnt=0
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun    # set sys time same with rtc
29*4882a593Smuzhiyun    hwclock --systohc
30*4882a593Smuzhiyun    hwclock -w
31*4882a593Smuzhiyun    echo "$(date): auto_suspend_resume_rtc start" > ${RESULT_LOG}
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun    while true; do
34*4882a593Smuzhiyun        echo "have done $cnt suspend/resume"
35*4882a593Smuzhiyun        if [ $cnt -ge $MAX_CYCLES ]
36*4882a593Smuzhiyun        then
37*4882a593Smuzhiyun            echo "run $MAX_CYCLES cycles, finish test"
38*4882a593Smuzhiyun            exit 0
39*4882a593Smuzhiyun        fi
40*4882a593Smuzhiyun        sus_time=$(( ( $(random) % $SUSPEND_INTERVAL ) + $SUSPEND_MIN ))
41*4882a593Smuzhiyun        echo "sleep for $sus_time second"
42*4882a593Smuzhiyun        echo 0 > /sys/class/rtc/rtc0/wakealarm
43*4882a593Smuzhiyun        echo "+${sus_time}" > /sys/class/rtc/rtc0/wakealarm
44*4882a593Smuzhiyun        pm-suspend
45*4882a593Smuzhiyun        wake_time=$(( ( $(random) % $WKAE_INTERVAL ) + $WAKE_MIN ))
46*4882a593Smuzhiyun        echo "wake for $wake_time second"
47*4882a593Smuzhiyun        sleep $wake_time
48*4882a593Smuzhiyun        echo "$(date): Count: $cnt - sleep: $sus_time wake: $wake_time " >> ${RESULT_LOG}
49*4882a593Smuzhiyun        let "cnt=$cnt+1"
50*4882a593Smuzhiyun    done
51*4882a593Smuzhiyun}
52*4882a593Smuzhiyunauto_suspend_resume_rtc
53*4882a593Smuzhiyun
54