mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
59 lines
1.6 KiB
Bash
Executable File
59 lines
1.6 KiB
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
|
|
START=15
|
|
USE_PROCD=1
|
|
|
|
NAME="cpufreq"
|
|
CPUFREQ_PATH="/sys/devices/system/cpu/cpufreq"
|
|
|
|
extra_command "get_policies" "Get CPU scaling governors and frequencies"
|
|
|
|
get_policies() {
|
|
json_init
|
|
for policy in $(ls -d "$CPUFREQ_PATH"/policy[0-9]* 2>"/dev/null"); do
|
|
[ -s "$policy/scaling_available_frequencies" ] || continue
|
|
json_add_object "$(basename "$policy")"
|
|
json_add_string "index" "$(basename "$policy" | grep -Eo "[0-9]*$")"
|
|
json_add_string "cpus" "$(cat "$policy/affected_cpus")"
|
|
json_add_array "freqs"
|
|
for freq in $(cat "$policy/scaling_available_frequencies"); do
|
|
json_add_string "" "$freq"
|
|
done
|
|
json_close_array
|
|
json_add_array "governors"
|
|
for governor in $(cat "$policy/scaling_available_governors"); do
|
|
json_add_string "" "$governor"
|
|
done
|
|
json_close_array
|
|
json_close_object
|
|
done
|
|
json_dump
|
|
}
|
|
|
|
write_cpufreq_config() {
|
|
local value
|
|
config_get value "$NAME" "$1"
|
|
[ -z "$value" ] || echo -n "$value" > "$2"
|
|
}
|
|
|
|
start_service() {
|
|
config_load "$NAME"
|
|
|
|
for i in $(ls -d "$CPUFREQ_PATH"/policy[0-9]* 2>"/dev/null" | grep -Eo "[0-9]*$")
|
|
do
|
|
[ -z "$(config_get "$NAME" "governor$i")" ] && return
|
|
|
|
write_cpufreq_config "governor$i" "$CPUFREQ_PATH/policy$i/scaling_governor"
|
|
write_cpufreq_config "minfreq$i" "$CPUFREQ_PATH/policy$i/scaling_min_freq"
|
|
write_cpufreq_config "maxfreq$i" "$CPUFREQ_PATH/policy$i/scaling_max_freq"
|
|
if [ "$(config_get "$NAME" "governor$i")" = "ondemand" ]; then
|
|
write_cpufreq_config "sdfactor$i" "$CPUFREQ_PATH/ondemand/sampling_down_factor"
|
|
write_cpufreq_config "upthreshold$i" "$CPUFREQ_PATH/ondemand/up_threshold"
|
|
fi
|
|
done
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger "$NAME"
|
|
}
|