blob: bfa20deb73a88cd1c074d7dff3452c3d8e75d59d [file] [log] [blame]
#!/bin/sh
# set defaults
loops=1
mode=none
tp1=1
flags=5
cycle_tp=
sleep_sec=
command=
pm_mode=standby
cpu_rate=1
usage ()
{
echo "pml: power management script version 1.0"
echo "Usage: pml [-lN] [-mMODE] [-tchd] [-fX] [-sN] [-rN]"
echo "where:"
echo " -lN - number of loops (decimal:1); negative value - infinite loop"
echo " -mMODE - system suspend debug mode (none, core, platform, devices, freezer:none)"
echo " -d - deep standby (s3)"
echo " -rN - change cpu clock divider while executing suspend (1,2,4,8,16 default:1)"
echo " -t - turn TP1 off before test (no)"
echo " -c - hotplug-cycle TP1 after each iteration (no)"
echo " -fX - option flags to pass to system suspend (hex:0)"
echo " -sN - seconds to sleep between iterations (decimal:0)"
echo " -xCMD - execute command after each iteration"
echo " -XCMD - execute command after each iteration, quit if the command fails"
echo " -h - show this message"
}
failure ()
{
echo "Command \"$command\" failed"
exit
}
quit_on_failure=false
while getopts "hl:m:tf:cs:x:X:dr:" option
do
case $option in
r)
cpu_rate=$OPTARG ;;
d)
pm_mode=mem ;;
x)
command=$OPTARG ;;
X)
quit_on_failure=true
command=$OPTARG ;;
i)
interval=$OPTARG ;;
l)
loops=$OPTARG ;;
m)
mode=$OPTARG ;;
t)
tp1=0 ;;
f)
flags=$OPTARG ;;
c)
cycle_tp=1 ;;
s)
sleep_sec=$OPTARG ;;
h|*)
usage
exit ;;
esac
done
if [ ! -f /sys/power/pm_test ] ; then
echo "Debug PM is not enabled. To enable partial suspend, rebuild kernel with CONFIG_PM_DEBUG"
else
echo $mode > /sys/power/pm_test
fi
pmtest tp1 $tp1
one_pass ()
{
passnum=$1
totalnum=$2
echo Pass $passnum$totalnum, mode=$mode, tp1=$tp1, flags=$flags, cycle_tp=$cycle_tp, sleep=$sleep_sec
echo $cpu_rate > /sys/devices/platform/brcmstb/cpu_div
echo $flags > /sys/devices/platform/brcmstb/standby_flags
echo $pm_mode > /sys/power/state
echo 1 > /sys/devices/platform/brcmstb/cpu_div
if [ ! -z "$cycle_tp" ] ; then
echo "Hotplug-cycling tp1..."
pmtest tp1 0; pmtest tp1 1; pmtest tp1 $tp1;
fi
if [ ! -z "$command" ] ; then
eval $command
[ $? -ne 0 ] && [ "$quit_on_failure" == "true" ] && failure
fi
if [ ! -z "$sleep_sec" ] ; then
sleep $sleep_sec
fi
echo "------------------------------"
}
curloop=0
if [ "$loops" -lt "0" ] ; then
while :
do
(( curloop++ ))
one_pass $curloop ""
done
else
for curloop in `seq 1 $loops`; do
one_pass $curloop " out of $loops"
done
fi