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