162306a36Sopenharmony_ci#!/bin/bash
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
362306a36Sopenharmony_ci#
462306a36Sopenharmony_ci# CPU helpers
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci# protect against multiple inclusion
762306a36Sopenharmony_ciif [ $FILE_CPU ]; then
862306a36Sopenharmony_ci	return 0
962306a36Sopenharmony_cielse
1062306a36Sopenharmony_ci	FILE_CPU=DONE
1162306a36Sopenharmony_cifi
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cisource cpufreq.sh
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cifor_each_cpu()
1662306a36Sopenharmony_ci{
1762306a36Sopenharmony_ci	cpus=$(ls $CPUROOT | grep "cpu[0-9].*")
1862306a36Sopenharmony_ci	for cpu in $cpus; do
1962306a36Sopenharmony_ci		$@ $cpu
2062306a36Sopenharmony_ci	done
2162306a36Sopenharmony_ci}
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_cifor_each_non_boot_cpu()
2462306a36Sopenharmony_ci{
2562306a36Sopenharmony_ci	cpus=$(ls $CPUROOT | grep "cpu[1-9].*")
2662306a36Sopenharmony_ci	for cpu in $cpus; do
2762306a36Sopenharmony_ci		$@ $cpu
2862306a36Sopenharmony_ci	done
2962306a36Sopenharmony_ci}
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#$1: cpu
3262306a36Sopenharmony_cioffline_cpu()
3362306a36Sopenharmony_ci{
3462306a36Sopenharmony_ci	printf "Offline $1\n"
3562306a36Sopenharmony_ci	echo 0 > $CPUROOT/$1/online
3662306a36Sopenharmony_ci}
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci#$1: cpu
3962306a36Sopenharmony_cionline_cpu()
4062306a36Sopenharmony_ci{
4162306a36Sopenharmony_ci	printf "Online $1\n"
4262306a36Sopenharmony_ci	echo 1 > $CPUROOT/$1/online
4362306a36Sopenharmony_ci}
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci#$1: cpu
4662306a36Sopenharmony_cireboot_cpu()
4762306a36Sopenharmony_ci{
4862306a36Sopenharmony_ci	offline_cpu $1
4962306a36Sopenharmony_ci	online_cpu $1
5062306a36Sopenharmony_ci}
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci# Reboot CPUs
5362306a36Sopenharmony_ci# param: number of times we want to run the loop
5462306a36Sopenharmony_cireboot_cpus()
5562306a36Sopenharmony_ci{
5662306a36Sopenharmony_ci	printf "** Test: Running ${FUNCNAME[0]} for $1 loops **\n\n"
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci	for i in `seq 1 $1`; do
5962306a36Sopenharmony_ci		for_each_non_boot_cpu offline_cpu
6062306a36Sopenharmony_ci		for_each_non_boot_cpu online_cpu
6162306a36Sopenharmony_ci		printf "\n"
6262306a36Sopenharmony_ci	done
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci	printf "\n%s\n\n" "------------------------------------------------"
6562306a36Sopenharmony_ci}
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci# Prints warning for all CPUs with missing cpufreq directory
6862306a36Sopenharmony_ciprint_unmanaged_cpus()
6962306a36Sopenharmony_ci{
7062306a36Sopenharmony_ci	for_each_cpu cpu_should_have_cpufreq_directory
7162306a36Sopenharmony_ci}
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci# Counts CPUs with cpufreq directories
7462306a36Sopenharmony_cicount_cpufreq_managed_cpus()
7562306a36Sopenharmony_ci{
7662306a36Sopenharmony_ci	count=0;
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci	for cpu in `ls $CPUROOT | grep "cpu[0-9].*"`; do
7962306a36Sopenharmony_ci		if [ -d $CPUROOT/$cpu/cpufreq ]; then
8062306a36Sopenharmony_ci			let count=count+1;
8162306a36Sopenharmony_ci		fi
8262306a36Sopenharmony_ci	done
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci	echo $count;
8562306a36Sopenharmony_ci}
86