#!/bin/bash 
 | 
  
 | 
DMC_PATH=/sys/class/devfreq/dmc 
 | 
  
 | 
if [ ! -e "$DMC_PATH" ];then 
 | 
    echo "non-existent dmc path, please check if dmc enabled" 
 | 
    exit 
 | 
fi 
 | 
  
 | 
set_ddr_freq() { 
 | 
    echo userspace > $DMC_PATH/governor 
 | 
    echo $1 > $DMC_PATH/userspace/set_freq 
 | 
    cur=$(cat $DMC_PATH/cur_freq) 
 | 
  
 | 
    if [ "$cur" -eq "$1" ];then 
 | 
        echo "ddr freq: success change to $cur Hz" 
 | 
    else 
 | 
        echo "ddr freq: failed change to $1 HZ, now $cur Hz" 
 | 
    exit 
 | 
    fi 
 | 
} 
 | 
  
 | 
if [ "$#" -eq "1" ];then 
 | 
    read -a array < $DMC_PATH/available_frequencies 
 | 
    let j=${#array[@]}-1 
 | 
    for i in `seq 0 $j`; do 
 | 
        if [ "$1" -eq "${array[$i]}" ];then 
 | 
            set_ddr_freq $1 
 | 
            exit 
 | 
        fi 
 | 
    done 
 | 
    echo "ddr freq: $1 is not in available frequencies: "${array[*]}"" 
 | 
    echo "ddr freq: now $(cat $DMC_PATH/cur_freq) Hz" 
 | 
else 
 | 
    cnt=0 
 | 
    read -a FREQS < $DMC_PATH/available_frequencies 
 | 
    RANDOM=$$$(date +%s) 
 | 
    while true; do 
 | 
        echo userspace > $DMC_PATH/governor 
 | 
        FREQ=${FREQS[$RANDOM % ${#FREQS[@]} ]} 
 | 
        echo -n "cnt: $cnt, " 
 | 
        set_ddr_freq ${FREQ} 
 | 
        let "cnt=$cnt+1" 
 | 
    done 
 | 
fi 
 |