mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-07-30 02:31:47 +08:00
63 lines
2.4 KiB
Bash
Executable File
63 lines
2.4 KiB
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
START=60
|
|
|
|
NAME=amlogic
|
|
|
|
uci_get_by_type() {
|
|
local ret=$(uci get $NAME.@$1[0].$2 2>/dev/null)
|
|
echo ${ret:=$3}
|
|
}
|
|
|
|
uci_set_by_type() {
|
|
uci set $NAME.@$1[0].$2=$3 2>/dev/null
|
|
uci commit $NAME
|
|
}
|
|
|
|
start() {
|
|
[ -x "/usr/sbin/fixcpufreq.pl" ] && /usr/sbin/fixcpufreq.pl && sync
|
|
local cpu_policys=$(ls /sys/devices/system/cpu/cpufreq 2>/dev/null | grep -E 'policy[0-9]{1,3}' | xargs)
|
|
if [ "${cpu_policys}" = "" ]; then
|
|
cpu_policys="policy0"
|
|
fi
|
|
|
|
config_load $NAME
|
|
for policy_name in ${cpu_policys}; do
|
|
local policy_id="${policy_name//policy/}"
|
|
|
|
# Get an optional value list for the current device
|
|
local governor_list="$(cat /sys/devices/system/cpu/cpufreq/${policy_name}/scaling_available_frequencies 2>/dev/null | xargs)"
|
|
local second_place_order="$(echo ${governor_list} | awk '{print $1}')"
|
|
local second_place_reverse="$(echo ${governor_list} | awk '{print $NF}')"
|
|
|
|
# Get the default value in the Config file
|
|
local governor=$(uci_get_by_type settings governor${policy_id} schedutil)
|
|
local minfreq=$(uci_get_by_type settings minfreq${policy_id} ${second_place_order})
|
|
local maxfreq=$(uci_get_by_type settings maxfreq${policy_id} ${second_place_reverse})
|
|
|
|
# Update result to the corresponding file
|
|
echo $governor >/sys/devices/system/cpu/cpufreq/${policy_name}/scaling_governor
|
|
echo $minfreq >/sys/devices/system/cpu/cpufreq/${policy_name}/scaling_min_freq
|
|
echo $maxfreq >/sys/devices/system/cpu/cpufreq/${policy_name}/scaling_max_freq
|
|
|
|
# If the governor is ondemand, configure its specific parameters.
|
|
if [ "$governor" = "ondemand" ]; then
|
|
local ondemand_dir="/sys/devices/system/cpu/cpufreq/${policy_name}/ondemand"
|
|
# Check if the per-policy ondemand directory exists.
|
|
if [ -d "$ondemand_dir" ]; then
|
|
# Read ondemand parameters from UCI, or use default values (e.g., 80 and 20) if not set.
|
|
local up_threshold=$(uci_get_by_type settings up_threshold${policy_id} 80)
|
|
local sampling_down_factor=$(uci_get_by_type settings sampling_down_factor${policy_id} 20)
|
|
|
|
# Write the values to the system files.
|
|
echo $up_threshold > "${ondemand_dir}/up_threshold"
|
|
echo $sampling_down_factor > "${ondemand_dir}/sampling_down_factor"
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
reload() {
|
|
start
|
|
return 0
|
|
}
|