1#!/vendor/bin/sh
2
3################################################################################
4# helper functions to allow Android init like script
5
6function write() {
7    echo -n $2 > $1
8}
9
10function copy() {
11    cat $1 > $2
12}
13
14################################################################################
15
16# disable thermal hotplug to switch governor
17write /sys/module/msm_thermal/core_control/enabled 0
18
19# bring back main cores CPU 0,2
20write /sys/devices/system/cpu/cpu0/online 1
21write /sys/devices/system/cpu/cpu2/online 1
22
23write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive
24write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load 1
25write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif 1
26write /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay 19000
27write /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load 90
28write /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate 20000
29write /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq 960000
30write /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy 1
31write /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads 80
32write /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time 19000
33write /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis 79000
34write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 300000
35write /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif 0
36
37# EAS: Capping the max frequency of silver core to 1.6GHz
38write /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 1593600
39
40write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor interactive
41write /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_sched_load 1
42write /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_migration_notif 1
43write /sys/devices/system/cpu/cpu2/cpufreq/interactive/above_hispeed_delay "19000 1400000:39000 1700000:39000"
44
45write /sys/devices/system/cpu/cpu2/cpufreq/interactive/go_hispeed_load 90
46write /sys/devices/system/cpu/cpu2/cpufreq/interactive/timer_rate 20000
47write /sys/devices/system/cpu/cpu2/cpufreq/interactive/hispeed_freq 1248000
48write /sys/devices/system/cpu/cpu2/cpufreq/interactive/io_is_busy 1
49write /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads "85 1500000:90 1800000:95"
50
51write /sys/devices/system/cpu/cpu2/cpufreq/interactive/min_sample_time 19000
52write /sys/devices/system/cpu/cpu2/cpufreq/interactive/max_freq_hysteresis 39000
53write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 300000
54write /sys/devices/system/cpu/cpu2/cpufreq/interactive/ignore_hispeed_on_notif 0
55
56# if EAS is present, switch to sched governor (no effect if not EAS)
57write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "sched"
58write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "sched"
59
60# re-enable thermal hotplug
61write /sys/module/msm_thermal/core_control/enabled 1
62
63# input boost configuration
64write /sys/module/cpu_boost/parameters/input_boost_freq "0:1324800 2:1324800"
65write /sys/module/cpu_boost/parameters/input_boost_ms 40
66
67# Setting b.L scheduler parameters
68write /proc/sys/kernel/sched_migration_fixup 1
69write /proc/sys/kernel/sched_upmigrate 95
70write /proc/sys/kernel/sched_downmigrate 90
71write /proc/sys/kernel/sched_freq_inc_notify 400000
72write /proc/sys/kernel/sched_freq_dec_notify 400000
73write /proc/sys/kernel/sched_spill_nr_run 3
74write /proc/sys/kernel/sched_init_task_load 100
75
76# Enable bus-dcvs
77for cpubw in /sys/class/devfreq/*qcom,cpubw* ; do
78    write $cpubw/governor "bw_hwmon"
79    write $cpubw/polling_interval 50
80    write $cpubw/min_freq 1525
81    write $cpubw/bw_hwmon/mbps_zones "1525 5195 11863 13763"
82    write $cpubw/bw_hwmon/sample_ms 4
83    write $cpubw/bw_hwmon/io_percent 34
84    write $cpubw/bw_hwmon/hist_memory 20
85    write $cpubw/bw_hwmon/hyst_length 10
86    write $cpubw/bw_hwmon/low_power_ceil_mbps 0
87    write $cpubw/bw_hwmon/low_power_io_percent 34
88    write $cpubw/bw_hwmon/low_power_delay 20
89    write $cpubw/bw_hwmon/guard_band_mbps 0
90    write $cpubw/bw_hwmon/up_scale 250
91    write $cpubw/bw_hwmon/idle_mbps 1600
92done
93
94for memlat in /sys/class/devfreq/*qcom,memlat-cpu* ; do
95    write $memlat/governor "mem_latency"
96    write $memlat/polling_interval 10
97done
98
99# Enable all LPMs by default
100# This will enable C4, D4, D3, E4 and M3 LPMs
101write /sys/module/lpm_levels/parameters/sleep_disabled N
102
103# On debuggable builds, enable console_suspend if uart is enabled to save power
104# Otherwise, disable console_suspend to get better logging for kernel crashes
105if [[ $(getprop ro.debuggable) == "1" && ! -e /sys/class/tty/ttyHSL0 ]]
106then
107    write /sys/module/printk/parameters/console_suspend N
108fi
109