aboutsummaryrefslogtreecommitdiff
path: root/rootdir/etc/init.qcom.power.rc
blob: 41ea3d1dc098860d814e189af972afe94dd0e092 (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
on early-init
    # Enable sched boost
    write /proc/sys/kernel/sched_boost 1
    setprop sys.io.scheduler noop

on boot
    # Update foreground and background cpusets
    write /dev/cpuset/foreground/cpus 0-3
    write /dev/cpuset/foreground/boost/cpus 0-3
    write /dev/cpuset/background/cpus 0-3
    write /dev/cpuset/system-background/cpus 0-3
    write /dev/cpuset/top-app/cpus 0-3

    # Add a cpuset for the camera daemon
    # we want all cores for camera
    mkdir /dev/cpuset/camera-daemon
    write /dev/cpuset/camera-daemon/cpus 0-3
    write /dev/cpuset/camera-daemon/mems 0
    chown system system /dev/cpuset/camera-daemon
    chown system system /dev/cpuset/camera-daemon/tasks
    chmod 0664 /dev/cpuset/camera-daemon/tasks

    # Set light thermal restrictions while optimizing apps
    # [throttle_freq_LITTLE, throttle_freq_big, throttle_temp, unthrottle_temp]
    write /sys/kernel/msm_thermal/zone0 "1228800 1632000 46 44"
    write /sys/kernel/msm_thermal/zone1 "1228800 1555200 50 47"
    write /sys/kernel/msm_thermal/zone2 "1036800 1248000 55 53"
    write /sys/kernel/msm_thermal/zone3 "729600 729600 65 63"
    write /sys/kernel/msm_thermal/enabled 1

on enable-low-power
    # Enable Adaptive LMK

    write /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk 1
    write /sys/module/lowmemorykiller/parameters/vmpressure_file_min 81250

    # Configure governor settings for little cluster
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "interactive"
    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/cpu0/cpufreq/interactive/above_hispeed_delay 19000
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load 90
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate 20000
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq 307200
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy 1
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads 80
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time 19000
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis 79000
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 307200
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif 1
    write /sys/devices/system/cpu/cpu0/cpufreq/interactive/enable_prediction 1

    # Online CPU2
    write /sys/devices/system/cpu/cpu2/online 1

    # Configure governor settings for big cluster
    write /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor "interactive"
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_sched_load 1
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_migration_notif 1
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/above_hispeed_delay "19000 1400000:39000 1700000:19000 2100000:79000"
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/go_hispeed_load 90
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/timer_rate 20000
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/hispeed_freq 307200
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/io_is_busy 1
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads "85 1500000:90 1800000:70 2100000:95"
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/min_sample_time 19000
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/max_freq_hysteresis 79000
    write /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq 307200
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/ignore_hispeed_on_notif 1
    write /sys/devices/system/cpu/cpu2/cpufreq/interactive/enable_prediction 1

    # Input boost configuration
    write /sys/module/cpu_boost/parameters/input_boost_freq "0:1324800 2:1324800"
    write /sys/module/cpu_boost/parameters/input_boost_ms 0

    # Setting b.L scheduler parameters
    write /proc/sys/kernel/sched_boost 0
    write /proc/sys/kernel/sched_upmigrate 95
    write /proc/sys/kernel/sched_downmigrate 90
    write /proc/sys/kernel/sched_freq_inc_notify 400000
    write /proc/sys/kernel/sched_freq_dec_notify 400000
    write /proc/sys/kernel/sched_spill_nr_run 3
    write /proc/sys/kernel/sched_init_task_load 100

    # Enable bus-dcvs
    write /sys/class/devfreq/soc:qcom,cpubw/governor "bw_hwmon"
    write /sys/class/devfreq/soc:qcom,cpubw/polling_interval 50
    write /sys/class/devfreq/soc:qcom,cpubw/min_freq 1525
    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/mbps_zones "1525 5195 11863 13763"
    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/sample_ms 4
    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent 34
    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hist_memory 20
    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_length 10
    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/low_power_ceil_mbps 0
    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/low_power_io_percent 34
    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/low_power_delay 20
    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps 0
    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/up_scale 250
    write /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/idle_mbps 1600

    write /sys/class/devfreq/soc:qcom,memlat-cpu0/governor "mem_latency"
    write /sys/class/devfreq/soc:qcom,memlat-cpu0/polling_interval 10
    write /sys/class/devfreq/soc:qcom,memlat-cpu2/governor "mem_latency"
    write /sys/class/devfreq/soc:qcom,memlat-cpu2/polling_interval 10
    write /sys/class/devfreq/soc:qcom,mincpubw/governor "cpufreq"

    write /sys/module/lpm_levels/parameters/sleep_disabled "N"

    # Set perfd properties
    setprop sys.post_boot.parsed 1

    # Starting io prefetcher service
    start iop

    setprop sys.io.scheduler cfq

    # update cpusets now that boot is complete and we want better load balancing
    write /dev/cpuset/top-app/cpus 0-3
    write /dev/cpuset/foreground/boost/cpus 0-1
    write /dev/cpuset/foreground/cpus 0-2
    write /dev/cpuset/background/cpus 0-1
    write /dev/cpuset/system-background/cpus 0-1

    write /proc/sys/vm/dirty_ratio 90
    write /proc/sys/vm/dirty_background_ratio 85
    write /proc/sys/vm/dirty_writeback_centisecs 900
    write /proc/sys/vm/dirty_expire_centisecs 10
    write /proc/sys/vm/vfs_cache_pressure 5

    # Set thermal restrictions
    write /sys/kernel/msm_thermal/enabled 0
    write /sys/kernel/msm_thermal/zone0 "1401600 1785600 40 38"
    write /sys/kernel/msm_thermal/zone1 "1324800 1555200 41 40"
    write /sys/kernel/msm_thermal/zone2 "1228800 1478400 42 41"
    write /sys/kernel/msm_thermal/zone3 "1228800 1401600 43 42"
    write /sys/kernel/msm_thermal/zone4 "1190400 1324800 44 43"
    write /sys/kernel/msm_thermal/zone5 "1190400 1248000 46 44"
    write /sys/kernel/msm_thermal/zone6 "1113600 1190400 48 46"
    write /sys/kernel/msm_thermal/zone7 "1036800 940800 53 50"
    write /sys/kernel/msm_thermal/zone8 "729600 729600 65 60"
    write /sys/kernel/msm_thermal/sampling_ms 8000
    write /sys/kernel/msm_thermal/enabled 1

on charger
    write /sys/module/msm_thermal/core_control/cpus_offlined 14
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "powersave"
    write /sys/devices/system/cpu/cpu1/online 0
    write /sys/devices/system/cpu/cpu2/online 0
    write /sys/devices/system/cpu/cpu3/online 0
    write /sys/module/lpm_levels/parameters/sleep_disabled 0

on property:sys.boot_completed=1
    trigger enable-low-power

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

# It's set in "bootanimation_main.cpp" when shutdown charging.
# service "qcom-post-boot" is defined in [init.qcom.rc] on Qcom platform for CPU frequence configuration.
on property:sys.shutdown_charging=1
    start qcom-post-boot