diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index b3b99bb083..8bf37fb789 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -963,15 +963,6 @@ prepare_sysroot() { # hide kernel log messages on console echo '1 4 1 7' > /proc/sys/kernel/printk -# set ondemand up_threshold -if [ -e /sys/devices/system/cpu/cpufreq/ondemand/up_threshold ]; then - echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold -else - for f in $(ls /sys/devices/system/cpu/cpufreq/policy*/ondemand/up_threshold 2>/dev/null) ; do - echo 50 > $f - done -fi - # run platform_init script if exists if [ -f "./platform_init" ]; then ./platform_init diff --git a/packages/sysutils/systemd/package.mk b/packages/sysutils/systemd/package.mk index 2a2c8c825f..77a6061699 100644 --- a/packages/sysutils/systemd/package.mk +++ b/packages/sysutils/systemd/package.mk @@ -206,6 +206,9 @@ post_makeinstall_target() { cp $PKG_DIR/scripts/userconfig-setup $INSTALL/usr/bin cp $PKG_DIR/scripts/usercache-setup $INSTALL/usr/bin + # use systemd to set cpufreq governor and tunables + find_file_path scripts/cpufreq && cp -PRv $FOUND_PATH $INSTALL/usr/bin + mkdir -p $INSTALL/usr/sbin cp $PKG_DIR/scripts/kernel-overlays-setup $INSTALL/usr/sbin @@ -268,4 +271,5 @@ post_install() { enable_service usercache.service enable_service kernel-overlays.service enable_service hwdb.service + enable_service cpufreq.service } diff --git a/packages/sysutils/systemd/scripts/cpufreq b/packages/sysutils/systemd/scripts/cpufreq new file mode 100755 index 0000000000..c39eb4e12f --- /dev/null +++ b/packages/sysutils/systemd/scripts/cpufreq @@ -0,0 +1,17 @@ +#!/bin/sh + +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2009-2015 Stephan Raue (stephan@openelec.tv) +# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) + +SYS_CPUFREQ_GOV=$( cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ) +SYS_CPUFREQ_DIR="/sys/devices/system/cpu/cpufreq" + +# Configure frequency scaling properties +if [ $SYS_CPUFREQ_GOV = "ondemand" ]; then + for policy in ${SYS_CPUFREQ_DIR}/ondemand ${SYS_CPUFREQ_DIR}/policy*/; do + if [ -e $policy/up_threshold ]; then + echo 50 > $policy/up_threshold + fi + done +fi diff --git a/packages/sysutils/systemd/system.d/cpufreq.service b/packages/sysutils/systemd/system.d/cpufreq.service new file mode 100644 index 0000000000..46c3cf0a6c --- /dev/null +++ b/packages/sysutils/systemd/system.d/cpufreq.service @@ -0,0 +1,11 @@ +[Unit] +Description=Set CPU frequency governor and its tunables +ConditionPathExists=/usr/bin/cpufreq + +[Service] +Type=oneshot +ExecStart=/usr/bin/cpufreq +RemainAfterExit=yes + +[Install] +WantedBy=basic.target