1*4882a593Smuzhiyun#!/bin/bash 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunDMC_PATH=/sys/class/devfreq/dmc 4*4882a593Smuzhiyun 5*4882a593Smuzhiyunif [ ! -e "$DMC_PATH" ];then 6*4882a593Smuzhiyun echo "non-existent dmc path, please check if dmc enabled" 7*4882a593Smuzhiyun exit 8*4882a593Smuzhiyunfi 9*4882a593Smuzhiyun 10*4882a593Smuzhiyunset_ddr_freq() { 11*4882a593Smuzhiyun echo userspace > $DMC_PATH/governor 12*4882a593Smuzhiyun echo $1 > $DMC_PATH/userspace/set_freq 13*4882a593Smuzhiyun cur=$(cat $DMC_PATH/cur_freq) 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun if [ "$cur" -eq "$1" ];then 16*4882a593Smuzhiyun echo "ddr freq: success change to $cur Hz" 17*4882a593Smuzhiyun else 18*4882a593Smuzhiyun echo "ddr freq: failed change to $1 HZ, now $cur Hz" 19*4882a593Smuzhiyun exit 20*4882a593Smuzhiyun fi 21*4882a593Smuzhiyun} 22*4882a593Smuzhiyun 23*4882a593Smuzhiyunif [ "$#" -eq "1" ];then 24*4882a593Smuzhiyun read -a array < $DMC_PATH/available_frequencies 25*4882a593Smuzhiyun let j=${#array[@]}-1 26*4882a593Smuzhiyun for i in `seq 0 $j`; do 27*4882a593Smuzhiyun if [ "$1" -eq "${array[$i]}" ];then 28*4882a593Smuzhiyun set_ddr_freq $1 29*4882a593Smuzhiyun exit 30*4882a593Smuzhiyun fi 31*4882a593Smuzhiyun done 32*4882a593Smuzhiyun echo "ddr freq: $1 is not in available frequencies: "${array[*]}"" 33*4882a593Smuzhiyun echo "ddr freq: now $(cat $DMC_PATH/cur_freq) Hz" 34*4882a593Smuzhiyunelse 35*4882a593Smuzhiyun cnt=0 36*4882a593Smuzhiyun read -a FREQS < $DMC_PATH/available_frequencies 37*4882a593Smuzhiyun RANDOM=$$$(date +%s) 38*4882a593Smuzhiyun while true; do 39*4882a593Smuzhiyun echo userspace > $DMC_PATH/governor 40*4882a593Smuzhiyun FREQ=${FREQS[$RANDOM % ${#FREQS[@]} ]} 41*4882a593Smuzhiyun echo -n "cnt: $cnt, " 42*4882a593Smuzhiyun set_ddr_freq ${FREQ} 43*4882a593Smuzhiyun let "cnt=$cnt+1" 44*4882a593Smuzhiyun done 45*4882a593Smuzhiyunfi 46