#!/bin/bash

# Copyright Piero Olmeda - AudioLinux  audiolinux@fastmail.fm
# https://www.audio-linux.com
# License: custom - All rights reserved

source /etc/ppower.conf

get_avalaible_cores() {
cores=$(ls /sys/devices/system/cpu/ |  grep -o '[[:digit:]]*' | wc -l)
c=1
available_cores=""
while [[ $c -lt $cores ]]; do
if [[ "$(cat /sys/devices/system/cpu/cpu"$c"/online)" == "1" ]]; then
available_cores="$available_cores  $c"
fi
((c++))
done
available_cores="0 $available_cores"
echo $available_cores
}

cores=$(get_avalaible_cores)

get_value() {
if [ -f "/sys/devices/system/cpu/cpu0/cpufreq/$1" ]; then
for i in $cores; do
echo -e -n "CPU$i $(cat /sys/devices/system/cpu/cpu$i/cpufreq/$1) "
done
fi
}

if_isolated() {
if [[ "$ISOLATED_CORES" ]]; then
echo "$1: $(get_value $2)"
else
echo -n "$1: $(cat /sys/devices/system/cpu/cpu0/cpufreq/$2)"
fi
}

DRIVER=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver)
echo "DRIVER: $DRIVER"

echo "AVAILABLE ENERGY VALUES: $(cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences)"
echo "$(if_isolated "CONFIGURED ENERGY VALUE" energy_performance_preference)"
echo "AVAILABLE GOVERNORS: $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)"
echo "$(if_isolated "CONFIGURED GOVERNOR" scaling_governor)"
if [[ "$DRIVER" == "intel_pstate" ]]; then
echo "CPU BASE FREQUENCY: $(cat /sys/devices/system/cpu/cpu0/cpufreq/base_frequency)"
fi
echo "CPU MIN FREQUENCY: $(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq)"
echo "$(if_isolated "CONFIGURED MIN FREQUENCY" scaling_min_freq)"
echo "CPU MAX FREQUENCY: $(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq)"
echo "$(if_isolated "CONFIGURED MAX FREQUENCY" scaling_max_freq)"
if [[ "$DRIVER" == "acpi-cpufreq" ]]; then
echo "AVAILABLE FREQUENCY STEPS: $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies)"
fi
echo "TURBO BOOST: $(if [[ -f /sys/devices/system/cpu/cpufreq/boost ]]; then
cat /sys/devices/system/cpu/cpufreq/boost
fi
if [[ -f /sys/devices/system/cpu/amd-pstate/pstate_dynamic_boost ]]; then
cat /sys/devices/system/cpu/amd-pstate/pstate_dynamic_boost
fi
if [[ -f /sys/devices/system/cpu/intel_pstate/no_turbo ]]; then
if [[ "$(cat /sys/devices/system/cpu/intel_pstate/no_turbo)" == "1" ]]; then
echo 0
else
echo 1
fi
fi)"

