aboutsummaryrefslogtreecommitdiff
path: root/rootdir/init.qcom.power.rc
blob: 21035b7cfed2ebb4084442d765146536046ede69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
on boot
    # add a cpuset for the camera daemon
    # we want all the little cores for camera
    mkdir /dev/cpuset/camera-daemon
    chown system system /dev/cpuset/camera-daemon
    chown system system /dev/cpuset/camera-daemon/tasks
    chmod 0664 /dev/cpuset/camera-daemon/tasks

    # update foreground cpuset now that processors are up
    # reserve CPU 4 for the top app
    write /dev/cpuset/foreground/cpus 0-3,5-7
    write /dev/cpuset/foreground/boost/cpus 0-3
    write /dev/cpuset/background/cpus 4
    write /dev/cpuset/system-background/cpus 5-7
    write /dev/cpuset/top-app/cpus 0-7
    write /dev/cpuset/camera-daemon/cpus 4-7

on enable-low-power
    # HMP scheduler settings
    write /proc/sys/kernel/sched_window_stats_policy 3
    write /proc/sys/kernel/sched_ravg_hist_size 3
    write /proc/sys/kernel/sched_ravg_window 20000000

    # HMP Task packing settings
    write /proc/sys/kernel/sched_small_task 20
    write /sys/devices/system/cpu/cpu0/sched_mostly_idle_load 30
    write /sys/devices/system/cpu/cpu1/sched_mostly_idle_load 30
    write /sys/devices/system/cpu/cpu2/sched_mostly_idle_load 30
    write /sys/devices/system/cpu/cpu3/sched_mostly_idle_load 30
    write /sys/devices/system/cpu/cpu4/sched_mostly_idle_load 30
    write /sys/devices/system/cpu/cpu5/sched_mostly_idle_load 30
    write /sys/devices/system/cpu/cpu6/sched_mostly_idle_load 30
    write /sys/devices/system/cpu/cpu7/sched_mostly_idle_load 30

    write /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run 3
    write /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run 3
    write /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run 3
    write /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run 3
    write /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run 3
    write /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run 3
    write /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run 3
    write /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run 3

    write /sys/devices/system/cpu/cpu0/sched_prefer_idle 0
    write /sys/devices/system/cpu/cpu1/sched_prefer_idle 0
    write /sys/devices/system/cpu/cpu2/sched_prefer_idle 0
    write /sys/devices/system/cpu/cpu3/sched_prefer_idle 0
    write /sys/devices/system/cpu/cpu4/sched_prefer_idle 0
    write /sys/devices/system/cpu/cpu5/sched_prefer_idle 0
    write /sys/devices/system/cpu/cpu6/sched_prefer_idle 0
    write /sys/devices/system/cpu/cpu7/sched_prefer_idle 0

    write /sys/class/devfreq/qcom,mincpubw.53/governor "cpufreq"
    write /sys/class/devfreq/qcom,cpubw.52/governor "bw_hwmon"
    write /sys/class/devfreq/qcom,cpubw.52/bw_hwmon/io_percent 20
    write /sys/class/devfreq/qcom,cpubw.52/bw_hwmon/guard_band_mbps 30
    write /sys/class/devfreq/qcom,gpubw.39/governor "bw_hwmon"
    write /sys/class/devfreq/qcom,gpubw.39/bw_hwmon/io_percent 40

    # disable thermal & BCL core_control to update interactive gov settings
    write /sys/module/msm_thermal/core_control/enabled 0
    write /sys/devices/soc.0/qcom,bcl.58/mode "disable"
    write /sys/devices/soc.0/qcom,bcl.58/hotplug_mask 0
    write /sys/devices/soc.0/qcom,bcl.58/hotplug_soc_mask 0
    write /sys/devices/soc.0/qcom,bcl.58/mode "enable"

    # enable governor for perf cluster
    write /sys/devices/system/cpu/cpu0/online 1
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "interactive"
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay "19000 1113600:39000"
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load 85
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate 20000
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq 1113600
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy 0
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads "1 960000:85 1113600:90 1344000:80"
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time 40000
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor 40000
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 960000

    # enable governor for power cluster
    write /sys/devices/system/cpu/cpu4/online 1
    write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor "interactive"
    write /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay 39000
    write /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load 90
    write /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate 20000
    write /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq 806400
    write /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy 0
    write /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads "1 800000:90"
    write /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time 40000
    write /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor 40000
    write /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq 800000

    # re-enable thermal & BCL core_control now
    write /sys/module/msm_thermal/core_control/enabled 1
    write /sys/devices/soc.0/qcom,bcl.58/mode "disable"
    write /sys/devices/soc.0/qcom,bcl.58/hotplug_mask 12
    write /sys/devices/soc.0/qcom,bcl.58/hotplug_soc_mask 15
    write /sys/devices/soc.0/qcom,bcl.58/mode "enable"

    # Bring up all cores online
    write /sys/devices/system/cpu/cpu1/online 1
    write /sys/devices/system/cpu/cpu2/online 1
    write /sys/devices/system/cpu/cpu3/online 1
    write /sys/devices/system/cpu/cpu4/online 1
    write /sys/devices/system/cpu/cpu5/online 1
    write /sys/devices/system/cpu/cpu6/online 1
    write /sys/devices/system/cpu/cpu7/online 1

    # Enable LPM Prediction
    write /sys/module/lpm_levels/parameters/lpm_prediction 1

    # Enable Low power modes
    write /sys/module/lpm_levels/parameters/sleep_disabled 0

    # HMP scheduler (big.Little cluster related) settings
    write /proc/sys/kernel/sched_upmigrate 93
    write /proc/sys/kernel/sched_downmigrate 83

    # Enable sched guided freq control
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load 1
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif 1
    write /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load 1
    write /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif 1
    write /proc/sys/kernel/sched_freq_inc_notify 50000
    write /proc/sys/kernel/sched_freq_dec_notify 50000

    # Input boost config
    write /sys/module/cpu_boost/parameters/input_boost_freq 960000
    write /sys/module/cpu_boost/parameters/input_boost_ms 40

    # Enable core control
    write /sys/devices/system/cpu/cpu0/core_ctl/min_cpus 0
    write /sys/devices/system/cpu/cpu0/core_ctl/max_cpus 4
    write /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres 72
    write /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres 28
    write /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms 100
    write /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster 1
    write /sys/devices/system/cpu/cpu0/core_ctl/task_thres 4

    # RPS
    write /sys/class/net/rmnet_ipa0/queues/rx-0/rps_cpus "f0"

    # Enable dynamic clock gating
    write /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating 1
    # Enable timer migration to little cluster
    write /proc/sys/kernel/power_aware_timer_migration 1

    # Process reclaim
    write /sys/module/process_reclaim/parameters/enable_process_reclaim 1
    write /sys/module/process_reclaim/parameters/pressure_min 10
    write /sys/module/process_reclaim/parameters/per_swap_size 1024

    write /sys/module/process_reclaim/parameters/pressure_max 70
    write /sys/module/process_reclaim/parameters/swap_opt_eff 30

    rm /data/system/perfd/default_values
    start perfd

on class_start:late_start
    trigger enable-low-power

on property:init.svc.recovery=running
    trigger enable-low-power

on property:dev.bootcomplete=1
    setprop sys.io.scheduler "bfq"