diff options
author | Amit Daniel Kachhap <amit.kachhap@linaro.org> | 2012-03-26 16:52:20 +0530 |
---|---|---|
committer | zhanghongbo <hongbo.zhang@stericsson.com> | 2012-05-09 15:30:56 +0800 |
commit | aa119586f05a11fe837601e58806f3bff86be113 (patch) | |
tree | c1a5f6ea1bc8682df2992788cf8964a68cc35679 | |
parent | f2408a69b7be5c1bd9f0e7891f23a5a6d8b956f4 (diff) |
Verify the cpufreq cooling device are clipping the frequencies
Signed-off-by: Amit Daniel Kachhap <amit.kachhap@linaro.org>
-rw-r--r-- | include/thermal_functions.sh | 27 | ||||
-rwxr-xr-x | thermal/thermal_05.sh | 75 | ||||
-rw-r--r-- | thermal/thermal_05.txt | 1 |
3 files changed, 103 insertions, 0 deletions
diff --git a/include/thermal_functions.sh b/include/thermal_functions.sh index 1a7f1eb..40a87ff 100644 --- a/include/thermal_functions.sh +++ b/include/thermal_functions.sh @@ -169,3 +169,30 @@ for_each_cooling_device() { return 0 } +check_scaling_freq() { + + local before_freq_list=$1 + local after_freq_list=$2 + shift 2 + local index=0 + + local flag=0 + for cpu in $(ls $CPU_PATH | grep "cpu[0-9].*"); do + if [ $before_freq_list[$index] != $afterf_req_list[$index] ] ; then + flag=1 + fi + index=$((index + 1)) + done + return $flag +} + +store_scaling_maxfreq() { + scale_freq= + local index=0 + + for cpu in $(ls $CPU_PATH | grep "cpu[0-9].*"); do + scale_freq[$index]=$(cat $CPU_PATH/$cpu/cpufreq/scaling_max_freq) + index=$((index + 1)) + done + return 0 +} diff --git a/thermal/thermal_05.sh b/thermal/thermal_05.sh new file mode 100755 index 0000000..380fd17 --- /dev/null +++ b/thermal/thermal_05.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# +# PM-QA validation test suite for the power management on Linux +# +# Copyright (C) 2011, Linaro Limited. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +# +# Contributors: +# Amit Daniel <amit.kachhap@linaro.org> (Samsung Electronics) +# - initial API and implementation +# + +# URL : https://wiki.linaro.org/WorkingGroups/PowerManagement/Doc/QA/Scripts#thermal_05 + +source ../include/functions.sh +source ../include/thermal_functions.sh + +verify_cpufreq_cooling_device_action() { + local dirpath=$THERMAL_PATH/$1 + local cdev_name=$1 + shift 1 + + local cpufreq_cdev=$(cat $dirpath/type) + cat $dirpath/type | grep cpufreq + if [ $? -ne 0 ] ; then + return 0 + fi + + local max_state=$(cat $dirpath/max_state) + local prev_state_val=$(cat $dirpath/cur_state) + local prev_mode_val=$(cat $tzonepath/mode) + echo -n disabled > $tzonepath/mode + + local count=1 + local before_scale_max=0 + local after_scale_max=0 + local change=0 + + while (test $count -le $max_state); do + echo 0 > $dirpath/cur_state + sleep 1 + + store_scaling_maxfreq + before_scale_max=$scale_freq + + echo $count > $dirpath/cur_state + sleep 1 + + store_scaling_maxfreq + after_scale_max=$scale_freq + + check_scaling_freq $before_scale_max $after_scale_max + change=$? + + check "cdev=$cdev_name state=$count" "test $change -ne 0" + + count=$((count+1)) + done + echo $prev_mode_val > $tzonepath/mode + echo $prev_state_val > $dirpath/cur_state +} +for_each_cooling_device verify_cpufreq_cooling_device_action diff --git a/thermal/thermal_05.txt b/thermal/thermal_05.txt new file mode 100644 index 0000000..4a9b81e --- /dev/null +++ b/thermal/thermal_05.txt @@ -0,0 +1 @@ +test/verify the cpufreq cooling device are clipping the frequencies |