1*053f45beSAndroid Build Coastguard Worker#!/bin/bash 2*053f45beSAndroid Build Coastguard Worker# SPDX-License-Identifier: GPL-2.0 3*053f45beSAndroid Build Coastguard Worker# 4*053f45beSAndroid Build Coastguard Worker# CPU helpers 5*053f45beSAndroid Build Coastguard Worker 6*053f45beSAndroid Build Coastguard Worker# protect against multiple inclusion 7*053f45beSAndroid Build Coastguard Workerif [ $FILE_CPU ]; then 8*053f45beSAndroid Build Coastguard Worker return 0 9*053f45beSAndroid Build Coastguard Workerelse 10*053f45beSAndroid Build Coastguard Worker FILE_CPU=DONE 11*053f45beSAndroid Build Coastguard Workerfi 12*053f45beSAndroid Build Coastguard Worker 13*053f45beSAndroid Build Coastguard Workersource cpufreq.sh 14*053f45beSAndroid Build Coastguard Worker 15*053f45beSAndroid Build Coastguard Workerfor_each_cpu() 16*053f45beSAndroid Build Coastguard Worker{ 17*053f45beSAndroid Build Coastguard Worker cpus=$(ls $CPUROOT | grep "cpu[0-9].*") 18*053f45beSAndroid Build Coastguard Worker for cpu in $cpus; do 19*053f45beSAndroid Build Coastguard Worker $@ $cpu 20*053f45beSAndroid Build Coastguard Worker done 21*053f45beSAndroid Build Coastguard Worker} 22*053f45beSAndroid Build Coastguard Worker 23*053f45beSAndroid Build Coastguard Workerfor_each_non_boot_cpu() 24*053f45beSAndroid Build Coastguard Worker{ 25*053f45beSAndroid Build Coastguard Worker cpus=$(ls $CPUROOT | grep "cpu[1-9].*") 26*053f45beSAndroid Build Coastguard Worker for cpu in $cpus; do 27*053f45beSAndroid Build Coastguard Worker $@ $cpu 28*053f45beSAndroid Build Coastguard Worker done 29*053f45beSAndroid Build Coastguard Worker} 30*053f45beSAndroid Build Coastguard Worker 31*053f45beSAndroid Build Coastguard Worker#$1: cpu 32*053f45beSAndroid Build Coastguard Workeroffline_cpu() 33*053f45beSAndroid Build Coastguard Worker{ 34*053f45beSAndroid Build Coastguard Worker printf "Offline $1\n" 35*053f45beSAndroid Build Coastguard Worker echo 0 > $CPUROOT/$1/online 36*053f45beSAndroid Build Coastguard Worker} 37*053f45beSAndroid Build Coastguard Worker 38*053f45beSAndroid Build Coastguard Worker#$1: cpu 39*053f45beSAndroid Build Coastguard Workeronline_cpu() 40*053f45beSAndroid Build Coastguard Worker{ 41*053f45beSAndroid Build Coastguard Worker printf "Online $1\n" 42*053f45beSAndroid Build Coastguard Worker echo 1 > $CPUROOT/$1/online 43*053f45beSAndroid Build Coastguard Worker} 44*053f45beSAndroid Build Coastguard Worker 45*053f45beSAndroid Build Coastguard Worker#$1: cpu 46*053f45beSAndroid Build Coastguard Workerreboot_cpu() 47*053f45beSAndroid Build Coastguard Worker{ 48*053f45beSAndroid Build Coastguard Worker offline_cpu $1 49*053f45beSAndroid Build Coastguard Worker online_cpu $1 50*053f45beSAndroid Build Coastguard Worker} 51*053f45beSAndroid Build Coastguard Worker 52*053f45beSAndroid Build Coastguard Worker# Reboot CPUs 53*053f45beSAndroid Build Coastguard Worker# param: number of times we want to run the loop 54*053f45beSAndroid Build Coastguard Workerreboot_cpus() 55*053f45beSAndroid Build Coastguard Worker{ 56*053f45beSAndroid Build Coastguard Worker printf "** Test: Running ${FUNCNAME[0]} for $1 loops **\n\n" 57*053f45beSAndroid Build Coastguard Worker 58*053f45beSAndroid Build Coastguard Worker for i in `seq 1 $1`; do 59*053f45beSAndroid Build Coastguard Worker for_each_non_boot_cpu offline_cpu 60*053f45beSAndroid Build Coastguard Worker for_each_non_boot_cpu online_cpu 61*053f45beSAndroid Build Coastguard Worker printf "\n" 62*053f45beSAndroid Build Coastguard Worker done 63*053f45beSAndroid Build Coastguard Worker 64*053f45beSAndroid Build Coastguard Worker printf "\n%s\n\n" "------------------------------------------------" 65*053f45beSAndroid Build Coastguard Worker} 66*053f45beSAndroid Build Coastguard Worker 67*053f45beSAndroid Build Coastguard Worker# Prints warning for all CPUs with missing cpufreq directory 68*053f45beSAndroid Build Coastguard Workerprint_unmanaged_cpus() 69*053f45beSAndroid Build Coastguard Worker{ 70*053f45beSAndroid Build Coastguard Worker for_each_cpu cpu_should_have_cpufreq_directory 71*053f45beSAndroid Build Coastguard Worker} 72*053f45beSAndroid Build Coastguard Worker 73*053f45beSAndroid Build Coastguard Worker# Counts CPUs with cpufreq directories 74*053f45beSAndroid Build Coastguard Workercount_cpufreq_managed_cpus() 75*053f45beSAndroid Build Coastguard Worker{ 76*053f45beSAndroid Build Coastguard Worker count=0; 77*053f45beSAndroid Build Coastguard Worker 78*053f45beSAndroid Build Coastguard Worker for cpu in `ls $CPUROOT | grep "cpu[0-9].*"`; do 79*053f45beSAndroid Build Coastguard Worker if [ -d $CPUROOT/$cpu/cpufreq ]; then 80*053f45beSAndroid Build Coastguard Worker let count=count+1; 81*053f45beSAndroid Build Coastguard Worker fi 82*053f45beSAndroid Build Coastguard Worker done 83*053f45beSAndroid Build Coastguard Worker 84*053f45beSAndroid Build Coastguard Worker echo $count; 85*053f45beSAndroid Build Coastguard Worker} 86