105 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/bash
 | |
| 
 | |
| # defines
 | |
| CPU_DIR="/sys/devices/system/cpu"
 | |
| GPU_DIR="/sys/class/kgsl/kgsl-3d0"
 | |
| 
 | |
| # helper functions
 | |
| fileexists() {
 | |
|   [ `adb shell "[ -f $1 ] && echo found"` ]
 | |
| }
 | |
| getprop() {
 | |
|   if fileexists $1; then
 | |
|     echo `adb shell cat $1 | tr -d '\r'`
 | |
|   else
 | |
|     echo "FILE $1 NOT FOUND"
 | |
|   fi
 | |
| }
 | |
| setprop() {
 | |
|   if fileexists $1; then
 | |
|     adb shell "echo -n $2 > $1"
 | |
|   else
 | |
|     echo "FILE $1 NOT FOUND"
 | |
|   fi
 | |
| }
 | |
| 
 | |
| # setup
 | |
| echo
 | |
| if [[ "`adb shell id | tr -d '\r' | awk -F'[()]' '{print $2}'`" != "root" ]]; then
 | |
|   adb root
 | |
|   adb wait-for-device
 | |
| fi
 | |
| 
 | |
| # device name
 | |
| echo Device: `adb shell getprop ro.product.model`
 | |
| echo
 | |
| 
 | |
| # collect and count all cores
 | |
| frequency=
 | |
| frequencies=
 | |
| cores=`adb shell ls /sys/devices/system/cpu/ | grep cpu[0-9].* | tr -d '\r'`
 | |
| for core in $cores; do
 | |
| 
 | |
|   # display cpu
 | |
|   echo "$core:"
 | |
| 
 | |
|   # display current status
 | |
|   if fileexists $CPU_DIR/$core/online && [ `getprop $CPU_DIR/$core/online` -eq 0 ]; then
 | |
|     echo "  Status: OFFLINE"
 | |
|   else
 | |
|     echo "  Status: ONLINE"
 | |
|   fi
 | |
| 
 | |
|   # display available frequencies
 | |
|   if fileexists $CPU_DIR/$core/cpufreq/scaling_available_frequencies; then
 | |
|     frequencies=(`getprop $CPU_DIR/$core/cpufreq/scaling_available_frequencies`)
 | |
|   elif fileexists $CPU_DIR/$core/cpufreq/stats/time_in_state; then
 | |
|     frequencies=(`adb shell cat $CPU_DIR/$core/cpufreq/stats/time_in_state | cut -f1 -d " " | tr -d '\r'`)
 | |
|   fi
 | |
|   frequencies=( `printf "%s\n" "${frequencies[@]}" | sort -n` )
 | |
|   echo "  Available Frequencies: ${frequencies[@]} (Hz)"
 | |
| 
 | |
|   # display current frequency
 | |
|   if fileexists $CPU_DIR/$core/cpufreq/scaling_cur_freq; then
 | |
|     frequency=`getprop $CPU_DIR/$core/cpufreq/scaling_cur_freq`
 | |
|   fi
 | |
|   echo "  Current Frequency: $frequency (Hz)"
 | |
| 
 | |
| done
 | |
| 
 | |
| # poll gpu
 | |
| echo
 | |
| echo "GPU:"
 | |
| 
 | |
| # get available gpu frequencies in sorted order
 | |
| if fileexists $GPU_DIR/devfreq/available_frequencies; then
 | |
|   frequencies=(`getprop $GPU_DIR/devfreq/available_frequencies`)
 | |
| elif fileexists $GPU_DIR/gpu_available_frequencies; then
 | |
|   frequencies=(`getprop $GPU_DIR/gpu_available_frequencies`)
 | |
| elif fileexists /d/clock/gbus/possible_rates; then
 | |
|   frequencies=(`getprop /d/clock/gbus/possible_rates`)
 | |
| else
 | |
|   echo "  Unable to find available GPU frequencies"
 | |
|   echo
 | |
|   exit
 | |
| fi
 | |
| frequencies=( `printf "%s\n" "${frequencies[@]}" | sort -n` )
 | |
| if [ ${frequencies[0]} == "(kHz)" ]; then
 | |
|   frequencies=(`printf "%s000\n" "${frequencies[@]:1}"`)
 | |
| fi
 | |
| echo "  Available Frequencies: ${frequencies[@]} (Hz)"
 | |
| 
 | |
| # collect and print current gpu frequency
 | |
| if fileexists $GPU_DIR/max_gpuclk; then
 | |
|   freq=`getprop $GPU_DIR/max_gpuclk`
 | |
| elif fileexists /d/clock/override.gbus/rate; then
 | |
|   freq=`getprop /d/clock/override.gbus/rate`
 | |
| else
 | |
|   echo "ERROR: unable to find current GPU frequency"
 | |
|   exit
 | |
| fi
 | |
| echo "  Current Frequency: $freq (Hz)"
 | |
| echo
 | |
| 
 | |
| 
 |