xref: /aosp_15_r20/frameworks/rs/perf-test-scripts/get-freq (revision e1eccf28f96817838ad6867f7f39d2351ec11f56)
1*e1eccf28SAndroid Build Coastguard Worker#!/bin/bash
2*e1eccf28SAndroid Build Coastguard Worker
3*e1eccf28SAndroid Build Coastguard Worker# defines
4*e1eccf28SAndroid Build Coastguard WorkerCPU_DIR="/sys/devices/system/cpu"
5*e1eccf28SAndroid Build Coastguard WorkerGPU_DIR="/sys/class/kgsl/kgsl-3d0"
6*e1eccf28SAndroid Build Coastguard Worker
7*e1eccf28SAndroid Build Coastguard Worker# helper functions
8*e1eccf28SAndroid Build Coastguard Workerfileexists() {
9*e1eccf28SAndroid Build Coastguard Worker  [ `adb shell "[ -f $1 ] && echo found"` ]
10*e1eccf28SAndroid Build Coastguard Worker}
11*e1eccf28SAndroid Build Coastguard Workergetprop() {
12*e1eccf28SAndroid Build Coastguard Worker  if fileexists $1; then
13*e1eccf28SAndroid Build Coastguard Worker    echo `adb shell cat $1 | tr -d '\r'`
14*e1eccf28SAndroid Build Coastguard Worker  else
15*e1eccf28SAndroid Build Coastguard Worker    echo "FILE $1 NOT FOUND"
16*e1eccf28SAndroid Build Coastguard Worker  fi
17*e1eccf28SAndroid Build Coastguard Worker}
18*e1eccf28SAndroid Build Coastguard Workersetprop() {
19*e1eccf28SAndroid Build Coastguard Worker  if fileexists $1; then
20*e1eccf28SAndroid Build Coastguard Worker    adb shell "echo -n $2 > $1"
21*e1eccf28SAndroid Build Coastguard Worker  else
22*e1eccf28SAndroid Build Coastguard Worker    echo "FILE $1 NOT FOUND"
23*e1eccf28SAndroid Build Coastguard Worker  fi
24*e1eccf28SAndroid Build Coastguard Worker}
25*e1eccf28SAndroid Build Coastguard Worker
26*e1eccf28SAndroid Build Coastguard Worker# setup
27*e1eccf28SAndroid Build Coastguard Workerecho
28*e1eccf28SAndroid Build Coastguard Workerif [[ "`adb shell id | tr -d '\r' | awk -F'[()]' '{print $2}'`" != "root" ]]; then
29*e1eccf28SAndroid Build Coastguard Worker  adb root
30*e1eccf28SAndroid Build Coastguard Worker  adb wait-for-device
31*e1eccf28SAndroid Build Coastguard Workerfi
32*e1eccf28SAndroid Build Coastguard Worker
33*e1eccf28SAndroid Build Coastguard Worker# device name
34*e1eccf28SAndroid Build Coastguard Workerecho Device: `adb shell getprop ro.product.model`
35*e1eccf28SAndroid Build Coastguard Workerecho
36*e1eccf28SAndroid Build Coastguard Worker
37*e1eccf28SAndroid Build Coastguard Worker# collect and count all cores
38*e1eccf28SAndroid Build Coastguard Workerfrequency=
39*e1eccf28SAndroid Build Coastguard Workerfrequencies=
40*e1eccf28SAndroid Build Coastguard Workercores=`adb shell ls /sys/devices/system/cpu/ | grep cpu[0-9].* | tr -d '\r'`
41*e1eccf28SAndroid Build Coastguard Workerfor core in $cores; do
42*e1eccf28SAndroid Build Coastguard Worker
43*e1eccf28SAndroid Build Coastguard Worker  # display cpu
44*e1eccf28SAndroid Build Coastguard Worker  echo "$core:"
45*e1eccf28SAndroid Build Coastguard Worker
46*e1eccf28SAndroid Build Coastguard Worker  # display current status
47*e1eccf28SAndroid Build Coastguard Worker  if fileexists $CPU_DIR/$core/online && [ `getprop $CPU_DIR/$core/online` -eq 0 ]; then
48*e1eccf28SAndroid Build Coastguard Worker    echo "  Status: OFFLINE"
49*e1eccf28SAndroid Build Coastguard Worker  else
50*e1eccf28SAndroid Build Coastguard Worker    echo "  Status: ONLINE"
51*e1eccf28SAndroid Build Coastguard Worker  fi
52*e1eccf28SAndroid Build Coastguard Worker
53*e1eccf28SAndroid Build Coastguard Worker  # display available frequencies
54*e1eccf28SAndroid Build Coastguard Worker  if fileexists $CPU_DIR/$core/cpufreq/scaling_available_frequencies; then
55*e1eccf28SAndroid Build Coastguard Worker    frequencies=(`getprop $CPU_DIR/$core/cpufreq/scaling_available_frequencies`)
56*e1eccf28SAndroid Build Coastguard Worker  elif fileexists $CPU_DIR/$core/cpufreq/stats/time_in_state; then
57*e1eccf28SAndroid Build Coastguard Worker    frequencies=(`adb shell cat $CPU_DIR/$core/cpufreq/stats/time_in_state | cut -f1 -d " " | tr -d '\r'`)
58*e1eccf28SAndroid Build Coastguard Worker  fi
59*e1eccf28SAndroid Build Coastguard Worker  frequencies=( `printf "%s\n" "${frequencies[@]}" | sort -n` )
60*e1eccf28SAndroid Build Coastguard Worker  echo "  Available Frequencies: ${frequencies[@]} (Hz)"
61*e1eccf28SAndroid Build Coastguard Worker
62*e1eccf28SAndroid Build Coastguard Worker  # display current frequency
63*e1eccf28SAndroid Build Coastguard Worker  if fileexists $CPU_DIR/$core/cpufreq/scaling_cur_freq; then
64*e1eccf28SAndroid Build Coastguard Worker    frequency=`getprop $CPU_DIR/$core/cpufreq/scaling_cur_freq`
65*e1eccf28SAndroid Build Coastguard Worker  fi
66*e1eccf28SAndroid Build Coastguard Worker  echo "  Current Frequency: $frequency (Hz)"
67*e1eccf28SAndroid Build Coastguard Worker
68*e1eccf28SAndroid Build Coastguard Workerdone
69*e1eccf28SAndroid Build Coastguard Worker
70*e1eccf28SAndroid Build Coastguard Worker# poll gpu
71*e1eccf28SAndroid Build Coastguard Workerecho
72*e1eccf28SAndroid Build Coastguard Workerecho "GPU:"
73*e1eccf28SAndroid Build Coastguard Worker
74*e1eccf28SAndroid Build Coastguard Worker# get available gpu frequencies in sorted order
75*e1eccf28SAndroid Build Coastguard Workerif fileexists $GPU_DIR/devfreq/available_frequencies; then
76*e1eccf28SAndroid Build Coastguard Worker  frequencies=(`getprop $GPU_DIR/devfreq/available_frequencies`)
77*e1eccf28SAndroid Build Coastguard Workerelif fileexists $GPU_DIR/gpu_available_frequencies; then
78*e1eccf28SAndroid Build Coastguard Worker  frequencies=(`getprop $GPU_DIR/gpu_available_frequencies`)
79*e1eccf28SAndroid Build Coastguard Workerelif fileexists /d/clock/gbus/possible_rates; then
80*e1eccf28SAndroid Build Coastguard Worker  frequencies=(`getprop /d/clock/gbus/possible_rates`)
81*e1eccf28SAndroid Build Coastguard Workerelse
82*e1eccf28SAndroid Build Coastguard Worker  echo "  Unable to find available GPU frequencies"
83*e1eccf28SAndroid Build Coastguard Worker  echo
84*e1eccf28SAndroid Build Coastguard Worker  exit
85*e1eccf28SAndroid Build Coastguard Workerfi
86*e1eccf28SAndroid Build Coastguard Workerfrequencies=( `printf "%s\n" "${frequencies[@]}" | sort -n` )
87*e1eccf28SAndroid Build Coastguard Workerif [ ${frequencies[0]} == "(kHz)" ]; then
88*e1eccf28SAndroid Build Coastguard Worker  frequencies=(`printf "%s000\n" "${frequencies[@]:1}"`)
89*e1eccf28SAndroid Build Coastguard Workerfi
90*e1eccf28SAndroid Build Coastguard Workerecho "  Available Frequencies: ${frequencies[@]} (Hz)"
91*e1eccf28SAndroid Build Coastguard Worker
92*e1eccf28SAndroid Build Coastguard Worker# collect and print current gpu frequency
93*e1eccf28SAndroid Build Coastguard Workerif fileexists $GPU_DIR/max_gpuclk; then
94*e1eccf28SAndroid Build Coastguard Worker  freq=`getprop $GPU_DIR/max_gpuclk`
95*e1eccf28SAndroid Build Coastguard Workerelif fileexists /d/clock/override.gbus/rate; then
96*e1eccf28SAndroid Build Coastguard Worker  freq=`getprop /d/clock/override.gbus/rate`
97*e1eccf28SAndroid Build Coastguard Workerelse
98*e1eccf28SAndroid Build Coastguard Worker  echo "ERROR: unable to find current GPU frequency"
99*e1eccf28SAndroid Build Coastguard Worker  exit
100*e1eccf28SAndroid Build Coastguard Workerfi
101*e1eccf28SAndroid Build Coastguard Workerecho "  Current Frequency: $freq (Hz)"
102*e1eccf28SAndroid Build Coastguard Workerecho
103*e1eccf28SAndroid Build Coastguard Worker
104*e1eccf28SAndroid Build Coastguard Worker
105