blob: 5501fc44b46e34c2c628fa6ea4b7881785ea2b98 [file] [log] [blame]
ReStranger1b85f702025-09-30 04:05:06 +03001#! /vendor/bin/sh
2
3# Copyright (c) 2012-2013, 2016-2021, The Linux Foundation. All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions are met:
7# * Redistributions of source code must retain the above copyright
8# notice, this list of conditions and the following disclaimer.
9# * Redistributions in binary form must reproduce the above copyright
10# notice, this list of conditions and the following disclaimer in the
11# documentation and/or other materials provided with the distribution.
12# * Neither the name of The Linux Foundation nor
13# the names of its contributors may be used to endorse or promote
14# products derived from this software without specific prior written
15# permission.
16#
17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28#
29
30function 8953_sched_dcvs_eas()
31{
32 #governor settings
33 echo 1 > /sys/devices/system/cpu/cpu0/online
34 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
35 echo 0 > /sys/devices/system/cpu/cpufreq/schedutil/up_rate_limit_us
36 echo 0 > /sys/devices/system/cpu/cpufreq/schedutil/down_rate_limit_us
37 #set the hispeed_freq
38 echo 1401600 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_freq
39 #default value for hispeed_load is 90, for 8953 and sdm450 it should be 85
40 echo 85 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_load
41}
42
43function 8917_sched_dcvs_eas()
44{
45 #governor settings
46 echo 1 > /sys/devices/system/cpu/cpu0/online
47 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
48 echo 0 > /sys/devices/system/cpu/cpufreq/schedutil/up_rate_limit_us
49 echo 0 > /sys/devices/system/cpu/cpufreq/schedutil/down_rate_limit_us
50 #set the hispeed_freq
51 echo 1094400 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_freq
52 #default value for hispeed_load is 90, for 8917 it should be 85
53 echo 85 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_load
54}
55
56function 8937_sched_dcvs_eas()
57{
58 # enable governor for perf cluster
59 echo 1 > /sys/devices/system/cpu/cpu0/online
60 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
61 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
62 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
63 #set the hispeed_freq
64 echo 1094400 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
65 #default value for hispeed_load is 90, for 8937 it should be 85
66 echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
67 ## enable governor for power cluster
68 echo 1 > /sys/devices/system/cpu/cpu4/online
69 echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
70 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us
71 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us
72 #set the hispeed_freq
73 echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
74 #default value for hispeed_load is 90, for 8937 it should be 85
75 echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
76
77}
78
79function configure_automotive_sku_parameters() {
80
81 echo 1036800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
82 echo 1056000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
83 echo 1171200 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq
84 echo 1785600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
85 echo 902400000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
86 echo 902400000 > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/min_freq
87 echo 902400000 > /sys/class/devfreq/soc\:qcom,cpu7-cpu-l3-lat/min_freq
88 echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
89 echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/max_freq
90 echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu7-cpu-l3-lat/max_freq
91#read feature id from nvram
92reg_val=`cat /sys/devices/platform/soc/780130.qfprom/qfprom0/nvmem | od -An -t d4`
93feature_id=$(((reg_val >> 20) & 0xFF))
94log -t BOOT -p i "feature id '$feature_id'"
95if [ $feature_id == 0 ]; then
96 echo " SKU Configured : SA8155P"
97 echo 2131200 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
98 echo 2419200 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
99 echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
100elif [ $feature_id == 1 ]; then
101 echo "SKU Configured : SA8150P"
102 echo 1920000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
103 echo 2227200 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
104 echo 3 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
105else
106 echo "unknown feature_id value" $feature_id
107fi
108}
109
110function configure_sku_parameters() {
111
112#read feature id from nvram
113reg_val=`cat /sys/devices/platform/soc/780130.qfprom/qfprom0/nvmem | od -An -t d4`
114feature_id=$(((reg_val >> 20) & 0xFF))
115log -t BOOT -p i "feature id '$feature_id'"
116if [ $feature_id == 6 ]; then
117 echo " SKU Configured : SA6145"
118 echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
119 echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
120 echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
121 echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
122 echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
123 echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq
124 echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
125 echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq
126 echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
127 echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
128 echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
129 echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
130 echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
131 echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq
132 echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq
133 echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
134 echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
135 echo 1017600000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
136 echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq
137 echo 1017600000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq
138 echo 3 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
139 setprop vendor.sku_identified 1
140 setprop vendor.sku_name "SA6145"
141elif [ $feature_id == 5 ]; then
142 echo "SKU Configured : SA6150"
143 echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
144 echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
145 echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
146 echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
147 echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
148 echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq
149 echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
150 echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq
151 echo 998400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
152 echo 998400 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
153 echo 998400 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
154 echo 998400 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
155 echo 998400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
156 echo 998400 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq
157 echo 1708800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq
158 echo 1708800 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
159 echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
160 echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
161 echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq
162 echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq
163 echo 2 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
164 setprop vendor.sku_identified 1
165 setprop vendor.sku_name "SA6150"
166elif [ $feature_id == 4 ] || [ $feature_id == 3 ]; then
167 echo "SKU Configured : SA6155"
168 echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
169 echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
170 echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
171 echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
172 echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
173 echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq
174 echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
175 echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq
176 echo 1593600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
177 echo 1593600 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
178 echo 1593600 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
179 echo 1593600 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
180 echo 1593600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
181 echo 1593600 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq
182 echo 1900800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq
183 echo 1900800 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
184 echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
185 echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
186 echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq
187 echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq
188 echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
189 setprop vendor.sku_identified 1
190 setprop vendor.sku_name "SA6155"
191else
192 echo "SKU Configured : SA6155"
193 echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
194 echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
195 echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
196 echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
197 echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
198 echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq
199 echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
200 echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq
201 echo 1593600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
202 echo 1593600 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
203 echo 1593600 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
204 echo 1593600 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
205 echo 1593600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
206 echo 1593600 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq
207 echo 1900800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq
208 echo 1900800 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq
209 echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
210 echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
211 echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq
212 echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq
213 echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
214 setprop vendor.sku_identified 1
215 setprop vendor.sku_name "SA6155"
216fi
217}
218
219function 8953_sched_dcvs_hmp()
220{
221 #scheduler settings
222 echo 3 > /proc/sys/kernel/sched_window_stats_policy
223 echo 3 > /proc/sys/kernel/sched_ravg_hist_size
224 #task packing settings
225 echo 0 > /sys/devices/system/cpu/cpu0/sched_static_cpu_pwr_cost
226 echo 0 > /sys/devices/system/cpu/cpu1/sched_static_cpu_pwr_cost
227 echo 0 > /sys/devices/system/cpu/cpu2/sched_static_cpu_pwr_cost
228 echo 0 > /sys/devices/system/cpu/cpu3/sched_static_cpu_pwr_cost
229 echo 0 > /sys/devices/system/cpu/cpu4/sched_static_cpu_pwr_cost
230 echo 0 > /sys/devices/system/cpu/cpu5/sched_static_cpu_pwr_cost
231 echo 0 > /sys/devices/system/cpu/cpu6/sched_static_cpu_pwr_cost
232 echo 0 > /sys/devices/system/cpu/cpu7/sched_static_cpu_pwr_cost
233 # spill load is set to 100% by default in the kernel
234 echo 3 > /proc/sys/kernel/sched_spill_nr_run
235 # Apply inter-cluster load balancer restrictions
236 echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill
237 # set sync wakee policy tunable
238 echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker
239
240 #governor settings
241 echo 1 > /sys/devices/system/cpu/cpu0/online
242 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
243 echo "19000 1401600:39000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
244 echo 85 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
245 echo 20000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
246 echo 1401600 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
247 echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
248 echo "85 1401600:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
249 echo 39000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
250 echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
251 echo 19 > /proc/sys/kernel/sched_upmigrate_min_nice
252 # Enable sched guided freq control
253 echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_sched_load
254 echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_migration_notif
255 echo 200000 > /proc/sys/kernel/sched_freq_inc_notify
256 echo 200000 > /proc/sys/kernel/sched_freq_dec_notify
257
258}
259
260function 8917_sched_dcvs_hmp()
261{
262 # HMP scheduler settings
263 echo 3 > /proc/sys/kernel/sched_window_stats_policy
264 echo 3 > /proc/sys/kernel/sched_ravg_hist_size
265 echo 1 > /proc/sys/kernel/sched_restrict_tasks_spread
266 # HMP Task packing settings
267 echo 20 > /proc/sys/kernel/sched_small_task
268 echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
269 echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
270 echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
271 echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
272
273 echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
274 echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
275 echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
276 echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
277
278 echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle
279 echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle
280 echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle
281 echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle
282
283 echo 1 > /sys/devices/system/cpu/cpu0/online
284 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
285 echo "19000 1094400:39000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
286 echo 85 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
287 echo 20000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
288 echo 1094400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
289 echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
290 echo "1 960000:85 1094400:90" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
291 echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
292 echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
293
294 # Enable sched guided freq control
295 echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_sched_load
296 echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_migration_notif
297 echo 50000 > /proc/sys/kernel/sched_freq_inc_notify
298 echo 50000 > /proc/sys/kernel/sched_freq_dec_notify
299}
300
301function 8937_sched_dcvs_hmp()
302{
303 # HMP scheduler settings
304 echo 3 > /proc/sys/kernel/sched_window_stats_policy
305 echo 3 > /proc/sys/kernel/sched_ravg_hist_size
306 # HMP Task packing settings
307 echo 20 > /proc/sys/kernel/sched_small_task
308 echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
309 echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
310 echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
311 echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
312 echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load
313 echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load
314 echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load
315 echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load
316
317 echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
318 echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
319 echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
320 echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
321 echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run
322 echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run
323 echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run
324 echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run
325
326 echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle
327 echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle
328 echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle
329 echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle
330 echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle
331 echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle
332 echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle
333 echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle
334 # enable governor for perf cluster
335 echo 1 > /sys/devices/system/cpu/cpu0/online
336 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
337 echo "19000 1094400:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
338 echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
339 echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
340 echo 1094400 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
341 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
342 echo "1 960000:85 1094400:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
343 echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
344 echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor
345
346 # enable governor for power cluster
347 echo 1 > /sys/devices/system/cpu/cpu4/online
348 echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
349 echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
350 echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
351 echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
352 echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
353 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
354 echo "1 768000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
355 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
356 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor
357
358 # Enable sched guided freq control
359 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
360 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
361 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
362 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
363 echo 50000 > /proc/sys/kernel/sched_freq_inc_notify
364 echo 50000 > /proc/sys/kernel/sched_freq_dec_notify
365
366}
367
368function sdm660_sched_interactive_dcvs() {
369
370 echo 0 > /proc/sys/kernel/sched_select_prev_cpu_us
371 echo 400000 > /proc/sys/kernel/sched_freq_inc_notify
372 echo 400000 > /proc/sys/kernel/sched_freq_dec_notify
373 echo 5 > /proc/sys/kernel/sched_spill_nr_run
374 echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill
375 echo 100000 > /proc/sys/kernel/sched_short_burst_ns
376 echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker
377 echo 20 > /proc/sys/kernel/sched_small_wakee_task_load
378
379 # disable thermal bcl hotplug to switch governor
380 echo 0 > /sys/module/msm_thermal/core_control/enabled
381
382 # online CPU0
383 echo 1 > /sys/devices/system/cpu/cpu0/online
384 # configure governor settings for little cluster
385 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
386 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
387 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
388 echo "19000 1401600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
389 echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
390 echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
391 echo 1401600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
392 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
393 echo "85 1747200:95" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
394 echo 39000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
395 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
396 echo 633600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
397 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
398 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/fast_ramp_down
399 # online CPU4
400 echo 1 > /sys/devices/system/cpu/cpu4/online
401 # configure governor settings for big cluster
402 echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
403 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
404 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
405 echo "19000 1401600:39000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
406 echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
407 echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
408 echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
409 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
410 echo "85 1401600:90 2150400:95" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
411 echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
412 echo 59000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
413 echo 1113600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
414 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/ignore_hispeed_on_notif
415 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/fast_ramp_down
416
417 # bring all cores online
418 echo 1 > /sys/devices/system/cpu/cpu0/online
419 echo 1 > /sys/devices/system/cpu/cpu1/online
420 echo 1 > /sys/devices/system/cpu/cpu2/online
421 echo 1 > /sys/devices/system/cpu/cpu3/online
422 echo 1 > /sys/devices/system/cpu/cpu4/online
423 echo 1 > /sys/devices/system/cpu/cpu5/online
424 echo 1 > /sys/devices/system/cpu/cpu6/online
425 echo 1 > /sys/devices/system/cpu/cpu7/online
426
427 # configure LPM
428 echo N > /sys/module/lpm_levels/system/pwr/cpu0/ret/idle_enabled
429 echo N > /sys/module/lpm_levels/system/pwr/cpu1/ret/idle_enabled
430 echo N > /sys/module/lpm_levels/system/pwr/cpu2/ret/idle_enabled
431 echo N > /sys/module/lpm_levels/system/pwr/cpu3/ret/idle_enabled
432 echo N > /sys/module/lpm_levels/system/perf/cpu4/ret/idle_enabled
433 echo N > /sys/module/lpm_levels/system/perf/cpu5/ret/idle_enabled
434 echo N > /sys/module/lpm_levels/system/perf/cpu6/ret/idle_enabled
435 echo N > /sys/module/lpm_levels/system/perf/cpu7/ret/idle_enabled
436 echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled
437 echo N > /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled
438 echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-ret/idle_enabled
439 echo N > /sys/module/lpm_levels/system/perf/perf-l2-ret/idle_enabled
440
441 # re-enable thermal and BCL hotplug
442 echo 1 > /sys/module/msm_thermal/core_control/enabled
443
444 # Enable bus-dcvs
445 for cpubw in /sys/class/devfreq/*qcom,cpubw*
446 do
447 echo "bw_hwmon" > $cpubw/governor
448 echo 50 > $cpubw/polling_interval
449 echo 762 > $cpubw/min_freq
450 echo "1525 3143 5859 7759 9887 10327 11863 13763" > $cpubw/bw_hwmon/mbps_zones
451 echo 4 > $cpubw/bw_hwmon/sample_ms
452 echo 85 > $cpubw/bw_hwmon/io_percent
453 echo 100 > $cpubw/bw_hwmon/decay_rate
454 echo 50 > $cpubw/bw_hwmon/bw_step
455 echo 20 > $cpubw/bw_hwmon/hist_memory
456 echo 0 > $cpubw/bw_hwmon/hyst_length
457 echo 80 > $cpubw/bw_hwmon/down_thres
458 echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps
459 echo 34 > $cpubw/bw_hwmon/low_power_io_percent
460 echo 20 > $cpubw/bw_hwmon/low_power_delay
461 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
462 echo 250 > $cpubw/bw_hwmon/up_scale
463 echo 1600 > $cpubw/bw_hwmon/idle_mbps
464 done
465
466 for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
467 do
468 echo "mem_latency" > $memlat/governor
469 echo 10 > $memlat/polling_interval
470 echo 400 > $memlat/mem_latency/ratio_ceil
471 done
472 echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
473}
474
475function sdm660_sched_schedutil_dcvs() {
476
477 if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 19 ]; then
478 # configure governor settings for little cluster
479 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
480 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us
481 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
482 echo 1401600 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
483 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
484 echo 633600 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
485 echo 902400 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/rtg_boost_freq
486
487 # configure governor settings for big cluster
488 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
489 echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us
490 echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/down_rate_limit_us
491 echo 1401600 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/hispeed_freq
492 echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/pl
493 echo 1113600 > /sys/devices/system/cpu/cpufreq/policy4/scaling_min_freq
494 echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/rtg_boost_freq
495 else
496 # configure governor settings for little cluster
497 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
498 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
499 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
500 echo 1401600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
501
502 # configure governor settings for big cluster
503 echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
504 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us
505 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us
506 echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
507 fi
508
509 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
510
511 #if the kernel version >=4.19,set input_boost_freq accordingly
512 if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 19 ]; then
513 echo "0:1401600" > /sys/devices/system/cpu/cpu_boost/input_boost_freq
514 echo 40 > /sys/devices/system/cpu/cpu_boost/input_boost_ms
515 else
516 echo "0:1401600" > /sys/module/cpu_boost/parameters/input_boost_freq
517 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
518 fi
519
520 # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
521 echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
522 echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
523 echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
524 echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
525 echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost
526 echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost
527 echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
528 echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
529 echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
530 echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
531
532 # Enable bus-dcvs
533 for device in /sys/devices/platform/soc
534 do
535 for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw
536 do
537 echo "bw_hwmon" > $cpubw/governor
538 echo 50 > $cpubw/polling_interval
539 echo 762 > $cpubw/min_freq
540 echo "1525 3143 5859 7759 9887 10327 11863 13763" > $cpubw/bw_hwmon/mbps_zones
541 echo 4 > $cpubw/bw_hwmon/sample_ms
542 echo 85 > $cpubw/bw_hwmon/io_percent
543 echo 100 > $cpubw/bw_hwmon/decay_rate
544 echo 50 > $cpubw/bw_hwmon/bw_step
545 echo 20 > $cpubw/bw_hwmon/hist_memory
546 echo 0 > $cpubw/bw_hwmon/hyst_length
547 echo 80 > $cpubw/bw_hwmon/down_thres
548 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
549 echo 250 > $cpubw/bw_hwmon/up_scale
550 echo 1600 > $cpubw/bw_hwmon/idle_mbps
551 done
552
553 if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -le 14 ]; then
554 for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat
555 do
556 echo "mem_latency" > $memlat/governor
557 echo 10 > $memlat/polling_interval
558 echo 400 > $memlat/mem_latency/ratio_ceil
559 done
560
561 for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor*
562 do
563 echo "compute" > $latfloor/governor
564 echo 10 > $latfloor/polling_interval
565 done
566 fi
567 done
568
569 if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 19 ]; then
570 # memlat specific settings are moved to seperate file under
571 # device/target specific folder
572 setprop vendor.dcvs.prop 1
573 fi
574
575}
576
577target=`getprop ro.board.platform`
578
579KernelVersionStr=`cat /proc/sys/kernel/osrelease`
580KernelVersionS=${KernelVersionStr:2:2}
581KernelVersionA=${KernelVersionStr:0:1}
582KernelVersionB=${KernelVersionS%.*}
583
584function configure_zram_parameters() {
585 MemTotalStr=`cat /proc/meminfo | grep MemTotal`
586 MemTotal=${MemTotalStr:16:8}
587
588 low_ram=`getprop ro.config.low_ram`
589
590 # Zram disk - 75% for Go devices.
591 # For 512MB Go device, size = 384MB, set same for Non-Go.
592 # For 1GB Go device, size = 768MB, set same for Non-Go.
593 # For 2GB Go device, size = 1536MB, set same for Non-Go.
594 # For >2GB Non-Go devices, size = 50% of RAM size. Limit the size to 4GB.
595 # And enable lz4 zram compression for Go targets.
596
597 let RamSizeGB="( $MemTotal / 1048576 ) + 1"
598 diskSizeUnit=M
599 if [ $RamSizeGB -le 2 ]; then
600 let zRamSizeMB="( $RamSizeGB * 1024 ) * 3 / 4"
601 else
602 let zRamSizeMB="( $RamSizeGB * 1024 ) / 2"
603 fi
604
605 # use MB avoid 32 bit overflow
606 if [ $zRamSizeMB -gt 4096 ]; then
607 let zRamSizeMB=4096
608 fi
609
610 if [ "$low_ram" == "true" ]; then
611 echo lz4 > /sys/block/zram0/comp_algorithm
612 fi
613
614 if [ -f /sys/block/zram0/disksize ]; then
615 if [ -f /sys/block/zram0/use_dedup ]; then
616 echo 1 > /sys/block/zram0/use_dedup
617 fi
618 echo "$zRamSizeMB""$diskSizeUnit" > /sys/block/zram0/disksize
619
620 # ZRAM may use more memory than it saves if SLAB_STORE_USER
621 # debug option is enabled.
622 if [ -e /sys/kernel/slab/zs_handle ]; then
623 echo 0 > /sys/kernel/slab/zs_handle/store_user
624 fi
625 if [ -e /sys/kernel/slab/zspage ]; then
626 echo 0 > /sys/kernel/slab/zspage/store_user
627 fi
628
629 mkswap /dev/block/zram0
630 swapon /dev/block/zram0 -p 32758
631 fi
632}
633
634function configure_read_ahead_kb_values() {
635 MemTotalStr=`cat /proc/meminfo | grep MemTotal`
636 MemTotal=${MemTotalStr:16:8}
637
638 dmpts=$(ls /sys/block/*/queue/read_ahead_kb | grep -e dm -e mmc)
639
640 # Set 128 for <= 3GB &
641 # set 512 for >= 4GB targets.
642 if [ $MemTotal -le 3145728 ]; then
643 echo 128 > /sys/block/mmcblk0/bdi/read_ahead_kb
644 echo 128 > /sys/block/mmcblk0rpmb/bdi/read_ahead_kb
645 for dm in $dmpts; do
646 echo 128 > $dm
647 done
648 else
649 echo 512 > /sys/block/mmcblk0/bdi/read_ahead_kb
650 echo 512 > /sys/block/mmcblk0rpmb/bdi/read_ahead_kb
651 for dm in $dmpts; do
652 echo 512 > $dm
653 done
654 fi
655}
656
657function disable_core_ctl() {
658 if [ -f /sys/devices/system/cpu/cpu0/core_ctl/enable ]; then
659 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
660 else
661 echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/disable
662 fi
663}
664
665function enable_swap() {
666 MemTotalStr=`cat /proc/meminfo | grep MemTotal`
667 MemTotal=${MemTotalStr:16:8}
668
669 SWAP_ENABLE_THRESHOLD=1048576
670 swap_enable=`getprop ro.vendor.qti.config.swap`
671
672 # Enable swap initially only for 1 GB targets
673 if [ "$MemTotal" -le "$SWAP_ENABLE_THRESHOLD" ] && [ "$swap_enable" == "true" ]; then
674 # Static swiftness
675 echo 1 > /proc/sys/vm/swap_ratio_enable
676 echo 70 > /proc/sys/vm/swap_ratio
677
678 # Swap disk - 200MB size
679 if [ ! -f /data/vendor/swap/swapfile ]; then
680 dd if=/dev/zero of=/data/vendor/swap/swapfile bs=1m count=200
681 fi
682 mkswap /data/vendor/swap/swapfile
683 swapon /data/vendor/swap/swapfile -p 32758
684 fi
685}
686
687function configure_memory_parameters() {
688 # Set Memory parameters.
689 #
690 # Set per_process_reclaim tuning parameters
691 # All targets will use vmpressure range 50-70,
692 # All targets will use 512 pages swap size.
693 #
694 # Set Low memory killer minfree parameters
695 # 32 bit Non-Go, all memory configurations will use 15K series
696 # 32 bit Go, all memory configurations will use uLMK + Memcg
697 # 64 bit will use Google default LMK series.
698 #
699 # Set ALMK parameters (usually above the highest minfree values)
700 # vmpressure_file_min threshold is always set slightly higher
701 # than LMK minfree's last bin value for all targets. It is calculated as
702 # vmpressure_file_min = (last bin - second last bin ) + last bin
703 #
704 # Set allocstall_threshold to 0 for all targets.
705 #
706
707ProductName=`getprop ro.product.name`
708low_ram=`getprop ro.config.low_ram`
709
710if [ "$ProductName" == "msmnile" ] || [ "$ProductName" == "kona" ] || [ "$ProductName" == "sdmshrike_au" ]; then
711 # Enable ZRAM
712 configure_zram_parameters
713 configure_read_ahead_kb_values
714 echo 0 > /proc/sys/vm/page-cluster
715 echo 100 > /proc/sys/vm/swappiness
716else
717 arch_type=`uname -m`
718
719 # Set parameters for 32-bit Go targets.
720 if [ "$low_ram" == "true" ]; then
721 # Disable KLMK, ALMK, PPR & Core Control for Go devices
722 echo 0 > /sys/module/lowmemorykiller/parameters/enable_lmk
723 echo 0 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk
724 echo 0 > /sys/module/process_reclaim/parameters/enable_process_reclaim
725 disable_core_ctl
726 # Enable oom_reaper for Go devices
727 if [ -f /proc/sys/vm/reap_mem_on_sigkill ]; then
728 echo 1 > /proc/sys/vm/reap_mem_on_sigkill
729 fi
730 else
731
732 # Read adj series and set adj threshold for PPR and ALMK.
733 # This is required since adj values change from framework to framework.
734 adj_series=`cat /sys/module/lowmemorykiller/parameters/adj`
735 adj_1="${adj_series#*,}"
736 set_almk_ppr_adj="${adj_1%%,*}"
737
738 # PPR and ALMK should not act on HOME adj and below.
739 # Normalized ADJ for HOME is 6. Hence multiply by 6
740 # ADJ score represented as INT in LMK params, actual score can be in decimal
741 # Hence add 6 considering a worst case of 0.9 conversion to INT (0.9*6).
742 # For uLMK + Memcg, this will be set as 6 since adj is zero.
743 set_almk_ppr_adj=$(((set_almk_ppr_adj * 6) + 6))
744 echo $set_almk_ppr_adj > /sys/module/lowmemorykiller/parameters/adj_max_shift
745
746 # Calculate vmpressure_file_min as below & set for 64 bit:
747 # vmpressure_file_min = last_lmk_bin + (last_lmk_bin - last_but_one_lmk_bin)
748 if [ "$arch_type" == "aarch64" ]; then
749 minfree_series=`cat /sys/module/lowmemorykiller/parameters/minfree`
750 minfree_1="${minfree_series#*,}" ; rem_minfree_1="${minfree_1%%,*}"
751 minfree_2="${minfree_1#*,}" ; rem_minfree_2="${minfree_2%%,*}"
752 minfree_3="${minfree_2#*,}" ; rem_minfree_3="${minfree_3%%,*}"
753 minfree_4="${minfree_3#*,}" ; rem_minfree_4="${minfree_4%%,*}"
754 minfree_5="${minfree_4#*,}"
755
756 vmpres_file_min=$((minfree_5 + (minfree_5 - rem_minfree_4)))
757 echo $vmpres_file_min > /sys/module/lowmemorykiller/parameters/vmpressure_file_min
758 else
759 # Set LMK series, vmpressure_file_min for 32 bit non-go targets.
760 # Disable Core Control, enable KLMK for non-go 8909.
761 if [ "$ProductName" == "msm8909" ]; then
762 disable_core_ctl
763 echo 1 > /sys/module/lowmemorykiller/parameters/enable_lmk
764 fi
765 echo "15360,19200,23040,26880,34415,43737" > /sys/module/lowmemorykiller/parameters/minfree
766 echo 53059 > /sys/module/lowmemorykiller/parameters/vmpressure_file_min
767 fi
768
769 # Enable adaptive LMK for all targets &
770 # use Google default LMK series for all 64-bit targets >=2GB.
771 echo 1 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk
772
773 # Enable oom_reaper
774 if [ -f /sys/module/lowmemorykiller/parameters/oom_reaper ]; then
775 echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper
776 fi
777
778 if [[ "$ProductName" != "bengal"* ]]; then
779 #bengal has appcompaction enabled. So not needed
780 # Set PPR parameters for other targets
781 if [ -f /sys/devices/soc0/soc_id ]; then
782 soc_id=`cat /sys/devices/soc0/soc_id`
783 else
784 soc_id=`cat /sys/devices/system/soc/soc0/id`
785 fi
786
787 case "$soc_id" in
788 # Do not set PPR parameters for premium targets
789 # sdm845 - 321, 341
790 # msm8998 - 292, 319
791 # msm8996 - 246, 291, 305, 312
792 "321" | "341" | "292" | "319" | "246" | "291" | "305" | "312")
793 ;;
794 *)
795 #Set PPR parameters for all other targets.
796 echo $set_almk_ppr_adj > /sys/module/process_reclaim/parameters/min_score_adj
797 echo 1 > /sys/module/process_reclaim/parameters/enable_process_reclaim
798 echo 50 > /sys/module/process_reclaim/parameters/pressure_min
799 echo 70 > /sys/module/process_reclaim/parameters/pressure_max
800 echo 30 > /sys/module/process_reclaim/parameters/swap_opt_eff
801 echo 512 > /sys/module/process_reclaim/parameters/per_swap_size
802 ;;
803 esac
804 fi
805 fi
806
807 if [[ "$ProductName" == "bengal"* ]]; then
808 #Set PPR nomap parameters for bengal targets
809 echo 1 > /sys/module/process_reclaim/parameters/enable_process_reclaim
810 echo 50 > /sys/module/process_reclaim/parameters/pressure_min
811 echo 70 > /sys/module/process_reclaim/parameters/pressure_max
812 echo 30 > /sys/module/process_reclaim/parameters/swap_opt_eff
813 echo 0 > /sys/module/process_reclaim/parameters/per_swap_size
814 echo 7680 > /sys/module/process_reclaim/parameters/tsk_nomap_swap_sz
815 fi
816
817 # Set allocstall_threshold to 0 for all targets.
818 # Set swappiness to 100 for all targets
819 echo 0 > /sys/module/vmpressure/parameters/allocstall_threshold
820 echo 100 > /proc/sys/vm/swappiness
821
822 # Disable wsf for all targets beacause we are using efk.
823 # wsf Range : 1..1000 So set to bare minimum value 1.
824 echo 1 > /proc/sys/vm/watermark_scale_factor
825
826 configure_zram_parameters
827
828 configure_read_ahead_kb_values
829
830 enable_swap
831fi
832}
833
834function enable_memory_features()
835{
836 MemTotalStr=`cat /proc/meminfo | grep MemTotal`
837 MemTotal=${MemTotalStr:16:8}
838
839 if [ $MemTotal -le 2097152 ]; then
840 #Enable B service adj transition for 2GB or less memory
841 setprop ro.vendor.qti.sys.fw.bservice_enable true
842 setprop ro.vendor.qti.sys.fw.bservice_limit 5
843 setprop ro.vendor.qti.sys.fw.bservice_age 5000
844
845 #Enable Delay Service Restart
846 setprop ro.vendor.qti.am.reschedule_service true
847 fi
848}
849
850function start_hbtp()
851{
852 # Start the Host based Touch processing but not in the power off mode.
853 bootmode=`getprop ro.bootmode`
854 if [ "charger" != $bootmode ]; then
855 # start vendor.hbtp
856 fi
857}
858
859case "$target" in
860 "kalama")
861 if [ -f /sys/devices/soc0/chip_family ]; then
862 chip_family_id=`cat /sys/devices/soc0/chip_family`
863 else
864 chip_family_id=-1
865 fi
866
867 echo "adsprpc : chip_family_id : $chip_faily_id" > /dev/kmsg
868
869 case "$chip_family_id" in
870 "0x7f")
871 if [ -f /sys/devices/platform/soc/soc:qcom,msm_fastrpc/fastrpc_cdsp_status ]; then
872 fastrpc_cdsp_status=`cat /sys/devices/platform/soc/soc:qcom,msm_fastrpc/fastrpc_cdsp_status`
873 else
874 fastrpc_cdsp_status=-1
875 fi
876
877 echo "adsprpc : fastrpc_cdsp_status : $fastrpc_cdsp_status" > /dev/kmsg
878
879 if [ $fastrpc_cdsp_status -eq 0 ]; then
880 setprop vendor.fastrpc.disable.cdsprpcd.daemon 1
881 echo "adsprpc : Disabled cdsp daemon" > /dev/kmsg
882 fi
883 esac
884 ;;
885esac
886
887case "$target" in
888 "msm7201a_ffa" | "msm7201a_surf" | "msm7627_ffa" | "msm7627_6x" | "msm7627a" | "msm7627_surf" | \
889 "qsd8250_surf" | "qsd8250_ffa" | "msm7630_surf" | "msm7630_1x" | "msm7630_fusion" | "qsd8650a_st1x")
890 echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
891 echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
892 ;;
893esac
894
895case "$target" in
896 "msm7201a_ffa" | "msm7201a_surf")
897 echo 500000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
898 ;;
899esac
900
901case "$target" in
902 "msm7630_surf" | "msm7630_1x" | "msm7630_fusion")
903 echo 75000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
904 echo 1 > /sys/module/pm2/parameters/idle_sleep_mode
905 ;;
906esac
907
908case "$target" in
909 "msm7201a_ffa" | "msm7201a_surf" | "msm7627_ffa" | "msm7627_6x" | "msm7627_surf" | "msm7630_surf" | "msm7630_1x" | "msm7630_fusion" | "msm7627a" )
910 echo 245760 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
911 ;;
912esac
913
914case "$target" in
915 "msm8660")
916 echo 1 > /sys/module/rpm_resources/enable_low_power/L2_cache
917 echo 1 > /sys/module/rpm_resources/enable_low_power/pxo
918 echo 2 > /sys/module/rpm_resources/enable_low_power/vdd_dig
919 echo 2 > /sys/module/rpm_resources/enable_low_power/vdd_mem
920 echo 1 > /sys/module/rpm_resources/enable_low_power/rpm_cpu
921 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
922 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
923 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
924 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
925 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
926 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
927 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
928 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
929 echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
930 echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
931 echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
932 echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
933 echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
934 echo 4 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
935 echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
936 echo 384000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
937 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
938 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
939 chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
940 chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
941 chown -h root.system /sys/devices/system/cpu/mfreq
942 chmod -h 220 /sys/devices/system/cpu/mfreq
943 chown -h root.system /sys/devices/system/cpu/cpu1/online
944 chmod -h 664 /sys/devices/system/cpu/cpu1/online
945 ;;
946esac
947
948case "$target" in
949 "msm8960")
950 echo 1 > /sys/module/rpm_resources/enable_low_power/L2_cache
951 echo 1 > /sys/module/rpm_resources/enable_low_power/pxo
952 echo 1 > /sys/module/rpm_resources/enable_low_power/vdd_dig
953 echo 1 > /sys/module/rpm_resources/enable_low_power/vdd_mem
954 echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled
955 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
956 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
957 echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
958 echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
959 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
960 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
961 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
962 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
963 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
964 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
965 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
966 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
967 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
968 echo 0 > /sys/module/msm_thermal/core_control/enabled
969 echo 1 > /sys/devices/system/cpu/cpu1/online
970 echo 1 > /sys/devices/system/cpu/cpu2/online
971 echo 1 > /sys/devices/system/cpu/cpu3/online
972 echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
973 echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
974 echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
975 echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
976 echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
977 echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
978 echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
979 echo 4 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
980 echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
981 echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core
982 echo 3 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core
983 echo 918000 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq
984 echo 1026000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq
985 echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load
986 chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
987 chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
988 chown -h system /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
989 echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
990 echo 384000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
991 echo 384000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
992 echo 384000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
993 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
994 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
995 chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
996 chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
997 chown -h system /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
998 chown -h system /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
999 chown -h system /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq
1000 chown -h system /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
1001 echo 1 > /sys/module/msm_thermal/core_control/enabled
1002 chown -h root.system /sys/devices/system/cpu/mfreq
1003 chmod -h 220 /sys/devices/system/cpu/mfreq
1004 chown -h root.system /sys/devices/system/cpu/cpu1/online
1005 chown -h root.system /sys/devices/system/cpu/cpu2/online
1006 chown -h root.system /sys/devices/system/cpu/cpu3/online
1007 chmod -h 664 /sys/devices/system/cpu/cpu1/online
1008 chmod -h 664 /sys/devices/system/cpu/cpu2/online
1009 chmod -h 664 /sys/devices/system/cpu/cpu3/online
1010 # set DCVS parameters for CPU
1011 echo 40000 > /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us
1012 echo 40000 > /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us
1013 echo 100000 > /sys/module/msm_dcvs/cores/cpu0/em_win_size_min_us
1014 echo 500000 > /sys/module/msm_dcvs/cores/cpu0/em_win_size_max_us
1015 echo 0 > /sys/module/msm_dcvs/cores/cpu0/slack_mode_dynamic
1016 echo 1000000 > /sys/module/msm_dcvs/cores/cpu0/disable_pc_threshold
1017 echo 25000 > /sys/module/msm_dcvs/cores/cpu1/slack_time_max_us
1018 echo 25000 > /sys/module/msm_dcvs/cores/cpu1/slack_time_min_us
1019 echo 100000 > /sys/module/msm_dcvs/cores/cpu1/em_win_size_min_us
1020 echo 500000 > /sys/module/msm_dcvs/cores/cpu1/em_win_size_max_us
1021 echo 0 > /sys/module/msm_dcvs/cores/cpu1/slack_mode_dynamic
1022 echo 1000000 > /sys/module/msm_dcvs/cores/cpu1/disable_pc_threshold
1023 echo 25000 > /sys/module/msm_dcvs/cores/cpu2/slack_time_max_us
1024 echo 25000 > /sys/module/msm_dcvs/cores/cpu2/slack_time_min_us
1025 echo 100000 > /sys/module/msm_dcvs/cores/cpu2/em_win_size_min_us
1026 echo 500000 > /sys/module/msm_dcvs/cores/cpu2/em_win_size_max_us
1027 echo 0 > /sys/module/msm_dcvs/cores/cpu2/slack_mode_dynamic
1028 echo 1000000 > /sys/module/msm_dcvs/cores/cpu2/disable_pc_threshold
1029 echo 25000 > /sys/module/msm_dcvs/cores/cpu3/slack_time_max_us
1030 echo 25000 > /sys/module/msm_dcvs/cores/cpu3/slack_time_min_us
1031 echo 100000 > /sys/module/msm_dcvs/cores/cpu3/em_win_size_min_us
1032 echo 500000 > /sys/module/msm_dcvs/cores/cpu3/em_win_size_max_us
1033 echo 0 > /sys/module/msm_dcvs/cores/cpu3/slack_mode_dynamic
1034 echo 1000000 > /sys/module/msm_dcvs/cores/cpu3/disable_pc_threshold
1035 # set DCVS parameters for GPU
1036 echo 20000 > /sys/module/msm_dcvs/cores/gpu0/slack_time_max_us
1037 echo 20000 > /sys/module/msm_dcvs/cores/gpu0/slack_time_min_us
1038 echo 0 > /sys/module/msm_dcvs/cores/gpu0/slack_mode_dynamic
1039 # set msm_mpdecision parameters
1040 echo 45000 > /sys/module/msm_mpdecision/slack_time_max_us
1041 echo 15000 > /sys/module/msm_mpdecision/slack_time_min_us
1042 echo 100000 > /sys/module/msm_mpdecision/em_win_size_min_us
1043 echo 1000000 > /sys/module/msm_mpdecision/em_win_size_max_us
1044 echo 3 > /sys/module/msm_mpdecision/online_util_pct_min
1045 echo 25 > /sys/module/msm_mpdecision/online_util_pct_max
1046 echo 97 > /sys/module/msm_mpdecision/em_max_util_pct
1047 echo 2 > /sys/module/msm_mpdecision/rq_avg_poll_ms
1048 echo 10 > /sys/module/msm_mpdecision/mp_em_rounding_point_min
1049 echo 85 > /sys/module/msm_mpdecision/mp_em_rounding_point_max
1050 echo 50 > /sys/module/msm_mpdecision/iowait_threshold_pct
1051 #set permissions for the nodes needed by display on/off hook
1052 chown -h system /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us
1053 chown -h system /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us
1054 chown -h system /sys/module/msm_mpdecision/slack_time_max_us
1055 chown -h system /sys/module/msm_mpdecision/slack_time_min_us
1056 chmod -h 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us
1057 chmod -h 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us
1058 chmod -h 664 /sys/module/msm_mpdecision/slack_time_max_us
1059 chmod -h 664 /sys/module/msm_mpdecision/slack_time_min_us
1060 if [ -f /sys/devices/soc0/soc_id ]; then
1061 soc_id=`cat /sys/devices/soc0/soc_id`
1062 else
1063 soc_id=`cat /sys/devices/system/soc/soc0/id`
1064 fi
1065 case "$soc_id" in
1066 "130")
1067 echo 230 > /sys/class/gpio/export
1068 echo 228 > /sys/class/gpio/export
1069 echo 229 > /sys/class/gpio/export
1070 echo "in" > /sys/class/gpio/gpio230/direction
1071 echo "rising" > /sys/class/gpio/gpio230/edge
1072 echo "in" > /sys/class/gpio/gpio228/direction
1073 echo "rising" > /sys/class/gpio/gpio228/edge
1074 echo "in" > /sys/class/gpio/gpio229/direction
1075 echo "rising" > /sys/class/gpio/gpio229/edge
1076 echo 253 > /sys/class/gpio/export
1077 echo 254 > /sys/class/gpio/export
1078 echo 257 > /sys/class/gpio/export
1079 echo 258 > /sys/class/gpio/export
1080 echo 259 > /sys/class/gpio/export
1081 echo "out" > /sys/class/gpio/gpio253/direction
1082 echo "out" > /sys/class/gpio/gpio254/direction
1083 echo "out" > /sys/class/gpio/gpio257/direction
1084 echo "out" > /sys/class/gpio/gpio258/direction
1085 echo "out" > /sys/class/gpio/gpio259/direction
1086 chown -h media /sys/class/gpio/gpio253/value
1087 chown -h media /sys/class/gpio/gpio254/value
1088 chown -h media /sys/class/gpio/gpio257/value
1089 chown -h media /sys/class/gpio/gpio258/value
1090 chown -h media /sys/class/gpio/gpio259/value
1091 chown -h media /sys/class/gpio/gpio253/direction
1092 chown -h media /sys/class/gpio/gpio254/direction
1093 chown -h media /sys/class/gpio/gpio257/direction
1094 chown -h media /sys/class/gpio/gpio258/direction
1095 chown -h media /sys/class/gpio/gpio259/direction
1096 echo 0 > /sys/module/rpm_resources/enable_low_power/vdd_dig
1097 echo 0 > /sys/module/rpm_resources/enable_low_power/vdd_mem
1098 ;;
1099 esac
1100 ;;
1101esac
1102
1103case "$target" in
1104 "msm8974")
1105 echo 4 > /sys/module/lpm_levels/enable_low_power/l2
1106 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
1107 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
1108 echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
1109 echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
1110 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
1111 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
1112 echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled
1113 echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled
1114 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
1115 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
1116 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
1117 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
1118 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
1119 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
1120 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
1121 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
1122 echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled
1123 echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled
1124 echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled
1125 echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled
1126 echo 0 > /sys/module/msm_thermal/core_control/enabled
1127 echo 1 > /sys/devices/system/cpu/cpu1/online
1128 echo 1 > /sys/devices/system/cpu/cpu2/online
1129 echo 1 > /sys/devices/system/cpu/cpu3/online
1130 if [ -f /sys/devices/soc0/soc_id ]; then
1131 soc_id=`cat /sys/devices/soc0/soc_id`
1132 else
1133 soc_id=`cat /sys/devices/system/soc/soc0/id`
1134 fi
1135 case "$soc_id" in
1136 "208" | "211" | "214" | "217" | "209" | "212" | "215" | "218" | "194" | "210" | "213" | "216")
1137 for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor
1138 do
1139 echo "cpubw_hwmon" > $devfreq_gov
1140 done
1141 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
1142 echo "interactive" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
1143 echo "interactive" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
1144 echo "interactive" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
1145 echo "20000 1400000:40000 1700000:20000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
1146 echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
1147 echo 1190400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
1148 echo 1 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
1149 echo "85 1500000:90 1800000:70" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
1150 echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
1151 echo 20 > /sys/module/cpu_boost/parameters/boost_ms
1152 echo 1728000 > /sys/module/cpu_boost/parameters/sync_threshold
1153 echo 100000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
1154 echo 1497600 > /sys/module/cpu_boost/parameters/input_boost_freq
1155 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
1156 ;;
1157 *)
1158 echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
1159 echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
1160 echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
1161 echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
1162 echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
1163 echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
1164 echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
1165 echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
1166 echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
1167 echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core
1168 echo 3 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core
1169 echo 960000 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq
1170 echo 960000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq
1171 echo 1190400 > /sys/devices/system/cpu/cpufreq/ondemand/input_boost
1172 echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load
1173 ;;
1174 esac
1175 echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1176 echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
1177 echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
1178 echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
1179 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
1180 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1181 echo 1 > /sys/module/msm_thermal/core_control/enabled
1182 chown -h root.system /sys/devices/system/cpu/mfreq
1183 chmod -h 220 /sys/devices/system/cpu/mfreq
1184 chown -h root.system /sys/devices/system/cpu/cpu1/online
1185 chown -h root.system /sys/devices/system/cpu/cpu2/online
1186 chown -h root.system /sys/devices/system/cpu/cpu3/online
1187 chmod -h 664 /sys/devices/system/cpu/cpu1/online
1188 chmod -h 664 /sys/devices/system/cpu/cpu2/online
1189 chmod -h 664 /sys/devices/system/cpu/cpu3/online
1190 echo 1 > /dev/cpuctl/apps/cpu.notify_on_migrate
1191 ;;
1192esac
1193
1194case "$target" in
1195 "msm8916")
1196 if [ -f /sys/devices/soc0/soc_id ]; then
1197 soc_id=`cat /sys/devices/soc0/soc_id`
1198 else
1199 soc_id=`cat /sys/devices/system/soc/soc0/id`
1200 fi
1201 case "$soc_id" in
1202 "206")
1203 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
1204 echo 1 > /sys/devices/system/cpu/cpu1/online
1205 echo 1 > /sys/devices/system/cpu/cpu2/online
1206 echo 1 > /sys/devices/system/cpu/cpu3/online
1207 echo 2 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus
1208 ;;
1209 "247" | "248" | "249" | "250")
1210 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
1211 echo 1 > /sys/devices/system/cpu/cpu1/online
1212 echo 1 > /sys/devices/system/cpu/cpu2/online
1213 echo 1 > /sys/devices/system/cpu/cpu3/online
1214 ;;
1215 "239" | "241" | "263")
1216 if [ -f /sys/devices/soc0/revision ]; then
1217 revision=`cat /sys/devices/soc0/revision`
1218 else
1219 revision=`cat /sys/devices/system/soc/soc0/revision`
1220 fi
1221 echo 10 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus
1222 if [ -f /sys/devices/soc0/platform_subtype_id ]; then
1223 platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
1224 fi
1225 if [ -f /sys/devices/soc0/hw_platform ]; then
1226 hw_platform=`cat /sys/devices/soc0/hw_platform`
1227 fi
1228 case "$soc_id" in
1229 "239")
1230 case "$hw_platform" in
1231 "Surf")
1232 case "$platform_subtype_id" in
1233 "1" | "2")
1234 start_hbtp
1235 ;;
1236 esac
1237 ;;
1238 "MTP")
1239 case "$platform_subtype_id" in
1240 "3")
1241 start_hbtp
1242 ;;
1243 esac
1244 ;;
1245 esac
1246 ;;
1247 esac
1248 ;;
1249 "268" | "269" | "270" | "271")
1250 echo 10 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus
1251 ;;
1252 "233" | "240" | "242")
1253 echo 1 > /sys/devices/system/cpu/cpu1/online
1254 echo 1 > /sys/devices/system/cpu/cpu2/online
1255 echo 1 > /sys/devices/system/cpu/cpu3/online
1256 ;;
1257 esac
1258 ;;
1259esac
1260
1261case "$target" in
1262 "msm8226")
1263 echo 4 > /sys/module/lpm_levels/enable_low_power/l2
1264 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
1265 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
1266 echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
1267 echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
1268 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
1269 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
1270 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
1271 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
1272 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
1273 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
1274 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
1275 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
1276 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
1277 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
1278 echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled
1279 echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled
1280 echo 1 > /sys/devices/system/cpu/cpu1/online
1281 echo 1 > /sys/devices/system/cpu/cpu2/online
1282 echo 1 > /sys/devices/system/cpu/cpu3/online
1283 echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
1284 echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
1285 echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
1286 echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
1287 echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
1288 echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
1289 echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core
1290 echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core
1291 echo 787200 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq
1292 echo 300000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq
1293 echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load
1294 echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1295 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
1296 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1297 chown -h root.system /sys/devices/system/cpu/cpu1/online
1298 chown -h root.system /sys/devices/system/cpu/cpu2/online
1299 chown -h root.system /sys/devices/system/cpu/cpu3/online
1300 chmod -h 664 /sys/devices/system/cpu/cpu1/online
1301 chmod -h 664 /sys/devices/system/cpu/cpu2/online
1302 chmod -h 664 /sys/devices/system/cpu/cpu3/online
1303 ;;
1304esac
1305
1306case "$target" in
1307 "msm8610")
1308 echo 4 > /sys/module/lpm_levels/enable_low_power/l2
1309 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
1310 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
1311 echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
1312 echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
1313 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
1314 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
1315 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
1316 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
1317 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
1318 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
1319 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
1320 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
1321 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
1322 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
1323 echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled
1324 echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled
1325 echo 1 > /sys/devices/system/cpu/cpu1/online
1326 echo 1 > /sys/devices/system/cpu/cpu2/online
1327 echo 1 > /sys/devices/system/cpu/cpu3/online
1328 echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
1329 echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
1330 echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
1331 echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
1332 echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
1333 echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
1334 echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core
1335 echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core
1336 echo 787200 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq
1337 echo 300000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq
1338 echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load
1339 echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1340 setprop ro.qualcomm.perf.min_freq 7
1341 echo 1 > /sys/kernel/mm/ksm/deferred_timer
1342 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
1343 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1344 chown -h root.system /sys/devices/system/cpu/cpu1/online
1345 chown -h root.system /sys/devices/system/cpu/cpu2/online
1346 chown -h root.system /sys/devices/system/cpu/cpu3/online
1347 chmod -h 664 /sys/devices/system/cpu/cpu1/online
1348 chmod -h 664 /sys/devices/system/cpu/cpu2/online
1349 chmod -h 664 /sys/devices/system/cpu/cpu3/online
1350 ;;
1351esac
1352
1353case "$target" in
1354 "msm8916")
1355
1356 if [ -f /sys/devices/soc0/soc_id ]; then
1357 soc_id=`cat /sys/devices/soc0/soc_id`
1358 else
1359 soc_id=`cat /sys/devices/system/soc/soc0/id`
1360 fi
1361
1362 # HMP scheduler settings for 8916, 8936, 8939, 8929
1363 echo 3 > /proc/sys/kernel/sched_window_stats_policy
1364 echo 3 > /proc/sys/kernel/sched_ravg_hist_size
1365
1366 # Apply governor settings for 8916
1367 case "$soc_id" in
1368 "206" | "247" | "248" | "249" | "250")
1369
1370 # HMP scheduler load tracking settings
1371 echo 3 > /proc/sys/kernel/sched_ravg_hist_size
1372
1373 # HMP Task packing settings for 8916
1374 echo 20 > /proc/sys/kernel/sched_small_task
1375 echo 30 > /proc/sys/kernel/sched_mostly_idle_load
1376 echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run
1377
1378 # disable thermal core_control to update scaling_min_freq
1379 echo 0 > /sys/module/msm_thermal/core_control/enabled
1380 echo 1 > /sys/devices/system/cpu/cpu0/online
1381 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
1382 echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1383 # enable thermal core_control now
1384 echo 1 > /sys/module/msm_thermal/core_control/enabled
1385
1386 echo "25000 1094400:50000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
1387 echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
1388 echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
1389 echo 998400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
1390 echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
1391 echo "1 800000:85 998400:90 1094400:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
1392 echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
1393 echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
1394
1395 # Bring up all cores online
1396 echo 1 > /sys/devices/system/cpu/cpu1/online
1397 echo 1 > /sys/devices/system/cpu/cpu2/online
1398 echo 1 > /sys/devices/system/cpu/cpu3/online
1399 echo 1 > /sys/devices/system/cpu/cpu4/online
1400 ;;
1401 esac
1402
1403 # Apply governor settings for 8936
1404 case "$soc_id" in
1405 "233" | "240" | "242")
1406
1407 # HMP scheduler load tracking settings
1408 echo 3 > /proc/sys/kernel/sched_ravg_hist_size
1409
1410 # HMP Task packing settings for 8936
1411 echo 50 > /proc/sys/kernel/sched_small_task
1412 echo 50 > /proc/sys/kernel/sched_mostly_idle_load
1413 echo 10 > /proc/sys/kernel/sched_mostly_idle_nr_run
1414
1415 # disable thermal core_control to update scaling_min_freq, interactive gov
1416 echo 0 > /sys/module/msm_thermal/core_control/enabled
1417 echo 1 > /sys/devices/system/cpu/cpu0/online
1418 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
1419 echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1420 # enable thermal core_control now
1421 echo 1 > /sys/module/msm_thermal/core_control/enabled
1422
1423 echo "25000 1113600:50000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
1424 echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
1425 echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
1426 echo 960000 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
1427 echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
1428 echo "1 800000:85 1113600:90 1267200:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
1429 echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
1430 echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
1431
1432 # Bring up all cores online
1433 echo 1 > /sys/devices/system/cpu/cpu1/online
1434 echo 1 > /sys/devices/system/cpu/cpu2/online
1435 echo 1 > /sys/devices/system/cpu/cpu3/online
1436 echo 1 > /sys/devices/system/cpu/cpu4/online
1437
1438 # Enable low power modes
1439 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
1440
1441 for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent
1442 do
1443 echo 40 > $gpu_bimc_io_percent
1444 done
1445 ;;
1446 esac
1447
1448 # Apply governor settings for 8939
1449 case "$soc_id" in
1450 "239" | "241" | "263" | "268" | "269" | "270" | "271")
1451
1452 if [ `cat /sys/devices/soc0/revision` != "3.0" ]; then
1453 # Apply 1.0 and 2.0 specific Sched & Governor settings
1454
1455 # HMP scheduler load tracking settings
1456 echo 5 > /proc/sys/kernel/sched_ravg_hist_size
1457
1458 # HMP Task packing settings for 8939, 8929
1459 echo 20 > /proc/sys/kernel/sched_small_task
1460
1461 for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor
1462 do
1463 echo "cpufreq" > $devfreq_gov
1464 done
1465
1466 for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor
1467 do
1468 echo "bw_hwmon" > $devfreq_gov
1469 for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent
1470 do
1471 echo 20 > $cpu_io_percent
1472 done
1473 done
1474
1475 for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent
1476 do
1477 echo 40 > $gpu_bimc_io_percent
1478 done
1479 # disable thermal core_control to update interactive gov settings
1480 echo 0 > /sys/module/msm_thermal/core_control/enabled
1481
1482 # enable governor for perf cluster
1483 echo 1 > /sys/devices/system/cpu/cpu0/online
1484 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
1485 echo "20000 1113600:50000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
1486 echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
1487 echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
1488 echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
1489 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
1490 echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
1491 echo 50000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
1492 echo 50000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor
1493 echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1494
1495 # enable governor for power cluster
1496 echo 1 > /sys/devices/system/cpu/cpu4/online
1497 echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
1498 echo "25000 800000:50000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
1499 echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
1500 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
1501 echo 998400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
1502 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
1503 echo "1 800000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
1504 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
1505 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor
1506 echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
1507
1508 # enable thermal core_control now
1509 echo 1 > /sys/module/msm_thermal/core_control/enabled
1510
1511 # Bring up all cores online
1512 echo 1 > /sys/devices/system/cpu/cpu1/online
1513 echo 1 > /sys/devices/system/cpu/cpu2/online
1514 echo 1 > /sys/devices/system/cpu/cpu3/online
1515 echo 1 > /sys/devices/system/cpu/cpu4/online
1516 echo 1 > /sys/devices/system/cpu/cpu5/online
1517 echo 1 > /sys/devices/system/cpu/cpu6/online
1518 echo 1 > /sys/devices/system/cpu/cpu7/online
1519
1520 # Enable low power modes
1521 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
1522
1523 # HMP scheduler (big.Little cluster related) settings
1524 echo 75 > /proc/sys/kernel/sched_upmigrate
1525 echo 60 > /proc/sys/kernel/sched_downmigrate
1526
1527 # cpu idle load threshold
1528 echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
1529 echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
1530 echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
1531 echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
1532 echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load
1533 echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load
1534 echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load
1535 echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load
1536
1537 # cpu idle nr run threshold
1538 echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
1539 echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
1540 echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
1541 echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
1542 echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run
1543 echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run
1544 echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run
1545 echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run
1546
1547 else
1548 # Apply 3.0 specific Sched & Governor settings
1549 # HMP scheduler settings for 8939 V3.0
1550 echo 3 > /proc/sys/kernel/sched_window_stats_policy
1551 echo 3 > /proc/sys/kernel/sched_ravg_hist_size
1552 echo 20000000 > /proc/sys/kernel/sched_ravg_window
1553
1554 # HMP Task packing settings for 8939 V3.0
1555 echo 20 > /proc/sys/kernel/sched_small_task
1556 echo 30 > /proc/sys/kernel/sched_mostly_idle_load
1557 echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run
1558
1559 echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle
1560 echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle
1561 echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle
1562 echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle
1563 echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle
1564 echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle
1565 echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle
1566 echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle
1567
1568 for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor
1569 do
1570 echo "cpufreq" > $devfreq_gov
1571 done
1572
1573 for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor
1574 do
1575 echo "bw_hwmon" > $devfreq_gov
1576 for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent
1577 do
1578 echo 20 > $cpu_io_percent
1579 done
1580 done
1581
1582 for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent
1583 do
1584 echo 40 > $gpu_bimc_io_percent
1585 done
1586 # disable thermal core_control to update interactive gov settings
1587 echo 0 > /sys/module/msm_thermal/core_control/enabled
1588
1589 # enable governor for perf cluster
1590 echo 1 > /sys/devices/system/cpu/cpu0/online
1591 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
1592 echo "19000 1113600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
1593 echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
1594 echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
1595 echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
1596 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
1597 echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
1598 echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
1599 echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor
1600 echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1601
1602 # enable governor for power cluster
1603 echo 1 > /sys/devices/system/cpu/cpu4/online
1604 echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
1605 echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
1606 echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
1607 echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
1608 echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
1609 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
1610 echo "1 800000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
1611 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
1612 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor
1613 echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
1614
1615 # enable thermal core_control now
1616 echo 1 > /sys/module/msm_thermal/core_control/enabled
1617
1618 # Bring up all cores online
1619 echo 1 > /sys/devices/system/cpu/cpu1/online
1620 echo 1 > /sys/devices/system/cpu/cpu2/online
1621 echo 1 > /sys/devices/system/cpu/cpu3/online
1622 echo 1 > /sys/devices/system/cpu/cpu5/online
1623 echo 1 > /sys/devices/system/cpu/cpu6/online
1624 echo 1 > /sys/devices/system/cpu/cpu7/online
1625
1626 # Enable low power modes
1627 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
1628
1629 # HMP scheduler (big.Little cluster related) settings
1630 echo 93 > /proc/sys/kernel/sched_upmigrate
1631 echo 83 > /proc/sys/kernel/sched_downmigrate
1632
1633 # Enable sched guided freq control
1634 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
1635 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
1636 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
1637 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
1638 echo 50000 > /proc/sys/kernel/sched_freq_inc_notify
1639 echo 50000 > /proc/sys/kernel/sched_freq_dec_notify
1640
1641 # Enable core control
1642# insmod /system/lib/modules/core_ctl.ko
1643 echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
1644 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus
1645 echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
1646 echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
1647 echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
1648 case "$revision" in
1649 "3.0")
1650 # Enable dynamic clock gatin
1651 echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating
1652 ;;
1653 esac
1654 fi
1655 ;;
1656 esac
1657 # Set Memory parameters
1658 configure_memory_parameters
1659 ;;
1660esac
1661
1662case "$target" in
1663 "msm8952")
1664
1665 if [ -f /sys/devices/soc0/soc_id ]; then
1666 soc_id=`cat /sys/devices/soc0/soc_id`
1667 else
1668 soc_id=`cat /sys/devices/system/soc/soc0/id`
1669 fi
1670 case "$soc_id" in
1671 "264" | "289")
1672 # Apply Scheduler and Governor settings for 8952
1673
1674 # HMP scheduler settings
1675 echo 3 > /proc/sys/kernel/sched_window_stats_policy
1676 echo 3 > /proc/sys/kernel/sched_ravg_hist_size
1677 echo 20000000 > /proc/sys/kernel/sched_ravg_window
1678
1679 # HMP Task packing settings
1680 echo 20 > /proc/sys/kernel/sched_small_task
1681 echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
1682 echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
1683 echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
1684 echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
1685 echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load
1686 echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load
1687 echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load
1688 echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load
1689
1690 echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
1691 echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
1692 echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
1693 echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
1694 echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run
1695 echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run
1696 echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run
1697 echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run
1698
1699 echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle
1700 echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle
1701 echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle
1702 echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle
1703 echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle
1704 echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle
1705 echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle
1706 echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle
1707
1708 echo 0 > /proc/sys/kernel/sched_boost
1709
1710 for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor
1711 do
1712 echo "cpufreq" > $devfreq_gov
1713 done
1714
1715 for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor
1716 do
1717 echo "bw_hwmon" > $devfreq_gov
1718 for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent
1719 do
1720 echo 20 > $cpu_io_percent
1721 done
1722 for cpu_guard_band in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/guard_band_mbps
1723 do
1724 echo 30 > $cpu_guard_band
1725 done
1726 done
1727
1728 for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent
1729 do
1730 echo 40 > $gpu_bimc_io_percent
1731 done
1732 # disable thermal & BCL core_control to update interactive gov settings
1733 echo 0 > /sys/module/msm_thermal/core_control/enabled
1734 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
1735 do
1736 echo -n disable > $mode
1737 done
1738 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
1739 do
1740 bcl_hotplug_mask=`cat $hotplug_mask`
1741 echo 0 > $hotplug_mask
1742 done
1743 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
1744 do
1745 bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
1746 echo 0 > $hotplug_soc_mask
1747 done
1748 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
1749 do
1750 echo -n enable > $mode
1751 done
1752
1753 # enable governor for perf cluster
1754 echo 1 > /sys/devices/system/cpu/cpu0/online
1755 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
1756 echo "19000 1113600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
1757 echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
1758 echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
1759 echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
1760 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
1761 echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
1762 echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
1763 echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor
1764 echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1765
1766 # enable governor for power cluster
1767 echo 1 > /sys/devices/system/cpu/cpu4/online
1768 echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
1769 echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
1770 echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
1771 echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
1772 echo 806400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
1773 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
1774 echo "1 806400:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
1775 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
1776 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor
1777 echo 806400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
1778
1779 # Bring up all cores online
1780 echo 1 > /sys/devices/system/cpu/cpu1/online
1781 echo 1 > /sys/devices/system/cpu/cpu2/online
1782 echo 1 > /sys/devices/system/cpu/cpu3/online
1783 echo 1 > /sys/devices/system/cpu/cpu4/online
1784 echo 1 > /sys/devices/system/cpu/cpu5/online
1785 echo 1 > /sys/devices/system/cpu/cpu6/online
1786 echo 1 > /sys/devices/system/cpu/cpu7/online
1787
1788 # Enable Low power modes
1789 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
1790
1791 # HMP scheduler (big.Little cluster related) settings
1792 echo 93 > /proc/sys/kernel/sched_upmigrate
1793 echo 83 > /proc/sys/kernel/sched_downmigrate
1794
1795 # Enable sched guided freq control
1796 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
1797 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
1798 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
1799 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
1800 echo 50000 > /proc/sys/kernel/sched_freq_inc_notify
1801 echo 50000 > /proc/sys/kernel/sched_freq_dec_notify
1802
1803 # Enable core control
1804 echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
1805 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus
1806 echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
1807 echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
1808 echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
1809 echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
1810
1811 # re-enable thermal & BCL core_control now
1812 echo 1 > /sys/module/msm_thermal/core_control/enabled
1813 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
1814 do
1815 echo -n disable > $mode
1816 done
1817 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
1818 do
1819 echo $bcl_hotplug_mask > $hotplug_mask
1820 done
1821 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
1822 do
1823 echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
1824 done
1825 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
1826 do
1827 echo -n enable > $mode
1828 done
1829
1830 # Enable dynamic clock gating
1831 echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating
1832 # Enable timer migration to little cluster
1833 echo 1 > /proc/sys/kernel/power_aware_timer_migration
1834
1835 # Set Memory parameters
1836 configure_memory_parameters
1837
1838 ;;
1839 *)
1840 panel=`cat /sys/class/graphics/fb0/modes`
1841 if [ "${panel:5:1}" == "x" ]; then
1842 panel=${panel:2:3}
1843 else
1844 panel=${panel:2:4}
1845 fi
1846
1847 # Apply Scheduler and Governor settings for 8976
1848 # SoC IDs are 266, 274, 277, 278
1849
1850 # HMP scheduler (big.Little cluster related) settings
1851 echo 95 > /proc/sys/kernel/sched_upmigrate
1852 echo 85 > /proc/sys/kernel/sched_downmigrate
1853
1854 echo 2 > /proc/sys/kernel/sched_window_stats_policy
1855 echo 5 > /proc/sys/kernel/sched_ravg_hist_size
1856
1857 echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
1858 echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
1859 echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
1860 echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
1861 echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run
1862 echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run
1863 echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run
1864 echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run
1865
1866 for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor
1867 do
1868 echo "cpufreq" > $devfreq_gov
1869 done
1870
1871 for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor
1872 do
1873 echo "bw_hwmon" > $devfreq_gov
1874 for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent
1875 do
1876 echo 20 > $cpu_io_percent
1877 done
1878 for cpu_guard_band in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/guard_band_mbps
1879 do
1880 echo 30 > $cpu_guard_band
1881 done
1882 done
1883
1884 for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent
1885 do
1886 echo 40 > $gpu_bimc_io_percent
1887 done
1888 # disable thermal & BCL core_control to update interactive gov settings
1889 echo 0 > /sys/module/msm_thermal/core_control/enabled
1890 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
1891 do
1892 echo -n disable > $mode
1893 done
1894 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
1895 do
1896 bcl_hotplug_mask=`cat $hotplug_mask`
1897 echo 0 > $hotplug_mask
1898 done
1899 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
1900 do
1901 bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
1902 echo 0 > $hotplug_soc_mask
1903 done
1904 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
1905 do
1906 echo -n enable > $mode
1907 done
1908
1909 # enable governor for power cluster
1910 echo 1 > /sys/devices/system/cpu/cpu0/online
1911 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
1912 echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
1913 echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
1914 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
1915 echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
1916 echo 691200 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
1917
1918 # enable governor for perf cluster
1919 echo 1 > /sys/devices/system/cpu/cpu4/online
1920 echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
1921 echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
1922 echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
1923 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
1924 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
1925 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor
1926 echo 883200 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
1927 echo 60000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
1928
1929 if [ $panel -gt 1080 ]; then
1930 #set texture cache size for resolution greater than 1080p
1931 setprop ro.hwui.texture_cache_size 72
1932 fi
1933
1934 echo 59000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
1935 echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
1936 echo "1 691200:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
1937 echo 1382400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
1938 echo "19000 1382400:39000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
1939 echo "85 1382400:90 1747200:80" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
1940 # HMP Task packing settings for 8976
1941 echo 30 > /proc/sys/kernel/sched_small_task
1942 echo 20 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
1943 echo 20 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
1944 echo 20 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
1945 echo 20 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
1946 echo 20 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load
1947 echo 20 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load
1948 echo 20 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load
1949 echo 20 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load
1950
1951 echo 0 > /proc/sys/kernel/sched_boost
1952
1953 # Bring up all cores online
1954 echo 1 > /sys/devices/system/cpu/cpu1/online
1955 echo 1 > /sys/devices/system/cpu/cpu2/online
1956 echo 1 > /sys/devices/system/cpu/cpu3/online
1957 echo 1 > /sys/devices/system/cpu/cpu4/online
1958 echo 1 > /sys/devices/system/cpu/cpu5/online
1959 echo 1 > /sys/devices/system/cpu/cpu6/online
1960 echo 1 > /sys/devices/system/cpu/cpu7/online
1961
1962 #Disable CPU retention modes for 32bit builds
1963 ProductName=`getprop ro.product.name`
1964 if [ "$ProductName" == "msm8952_32" ] || [ "$ProductName" == "msm8952_32_LMT" ]; then
1965 echo N > /sys/module/lpm_levels/system/a72/cpu4/retention/idle_enabled
1966 echo N > /sys/module/lpm_levels/system/a72/cpu5/retention/idle_enabled
1967 echo N > /sys/module/lpm_levels/system/a72/cpu6/retention/idle_enabled
1968 echo N > /sys/module/lpm_levels/system/a72/cpu7/retention/idle_enabled
1969 fi
1970
1971 if [ `cat /sys/devices/soc0/revision` == "1.0" ]; then
1972 # Disable l2-pc and l2-gdhs low power modes
1973 echo N > /sys/module/lpm_levels/system/a53/a53-l2-gdhs/idle_enabled
1974 echo N > /sys/module/lpm_levels/system/a72/a72-l2-gdhs/idle_enabled
1975 echo N > /sys/module/lpm_levels/system/a53/a53-l2-pc/idle_enabled
1976 echo N > /sys/module/lpm_levels/system/a72/a72-l2-pc/idle_enabled
1977 fi
1978
1979 # Enable LPM Prediction
1980 echo 1 > /sys/module/lpm_levels/parameters/lpm_prediction
1981
1982 # Enable Low power modes
1983 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
1984 # Disable L2 GDHS on 8976
1985 echo N > /sys/module/lpm_levels/system/a53/a53-l2-gdhs/idle_enabled
1986 echo N > /sys/module/lpm_levels/system/a72/a72-l2-gdhs/idle_enabled
1987
1988 # Enable sched guided freq control
1989 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
1990 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
1991 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
1992 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
1993 echo 50000 > /proc/sys/kernel/sched_freq_inc_notify
1994 echo 50000 > /proc/sys/kernel/sched_freq_dec_notify
1995
1996 # Enable core control
1997 #for 8976
1998 echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
1999 echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/max_cpus
2000 echo 68 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
2001 echo 40 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
2002 echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
2003 echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster
2004
2005 # re-enable thermal & BCL core_control now
2006 echo 1 > /sys/module/msm_thermal/core_control/enabled
2007 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2008 do
2009 echo -n disable > $mode
2010 done
2011 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
2012 do
2013 echo $bcl_hotplug_mask > $hotplug_mask
2014 done
2015 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
2016 do
2017 echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
2018 done
2019 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2020 do
2021 echo -n enable > $mode
2022 done
2023
2024 # Enable timer migration to little cluster
2025 echo 1 > /proc/sys/kernel/power_aware_timer_migration
2026
2027 case "$soc_id" in
2028 "277" | "278")
2029 # Start energy-awareness for 8976
2030 start energy-awareness
2031 ;;
2032 esac
2033
2034 #enable sched colocation and colocation inheritance
2035 echo 130 > /proc/sys/kernel/sched_grp_upmigrate
2036 echo 110 > /proc/sys/kernel/sched_grp_downmigrate
2037 echo 1 > /proc/sys/kernel/sched_enable_thread_grouping
2038
2039 # Set Memory parameters
2040 configure_memory_parameters
2041
2042 ;;
2043 esac
2044 #Enable Memory Features
2045 enable_memory_features
2046 restorecon -R /sys/devices/system/cpu
2047 ;;
2048esac
2049
2050case "$target" in
2051 "msm8953")
2052
2053 if [ -f /sys/devices/soc0/soc_id ]; then
2054 soc_id=`cat /sys/devices/soc0/soc_id`
2055 else
2056 soc_id=`cat /sys/devices/system/soc/soc0/id`
2057 fi
2058
2059 if [ -f /sys/devices/soc0/hw_platform ]; then
2060 hw_platform=`cat /sys/devices/soc0/hw_platform`
2061 else
2062 hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
2063 fi
2064
2065 if [ -f /sys/devices/soc0/platform_subtype_id ]; then
2066 platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
2067 fi
2068
2069 echo 0 > /proc/sys/kernel/sched_boost
2070
2071 case "$soc_id" in
2072 "293" | "304" | "338" | "351")
2073
2074 # Start Host based Touch processing
2075 case "$hw_platform" in
2076 "MTP" | "Surf" | "RCM" )
2077 #if this directory is present, it means that a
2078 #1200p panel is connected to the device.
2079 dir="/sys/bus/i2c/devices/3-0038"
2080 if [ ! -d "$dir" ]; then
2081 start_hbtp
2082 fi
2083 ;;
2084 esac
2085
2086 if [ $soc_id -eq "338" ]; then
2087 case "$hw_platform" in
2088 "QRD" )
2089 if [ $platform_subtype_id -eq "1" ]; then
2090 start_hbtp
2091 fi
2092 ;;
2093 esac
2094 fi
2095
2096 #init task load, restrict wakeups to preferred cluster
2097 echo 15 > /proc/sys/kernel/sched_init_task_load
2098
2099 for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor
2100 do
2101 echo "cpufreq" > $devfreq_gov
2102 done
2103
2104 for devfreq_gov in /sys/class/devfreq/soc:qcom,cpubw/governor
2105 do
2106 echo "bw_hwmon" > $devfreq_gov
2107 for cpu_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent
2108 do
2109 echo 34 > $cpu_io_percent
2110 done
2111 for cpu_guard_band in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps
2112 do
2113 echo 0 > $cpu_guard_band
2114 done
2115 for cpu_hist_memory in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hist_memory
2116 do
2117 echo 20 > $cpu_hist_memory
2118 done
2119 for cpu_hyst_length in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_length
2120 do
2121 echo 10 > $cpu_hyst_length
2122 done
2123 for cpu_idle_mbps in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/idle_mbps
2124 do
2125 echo 1600 > $cpu_idle_mbps
2126 done
2127 for cpu_low_power_delay in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/low_power_delay
2128 do
2129 echo 20 > $cpu_low_power_delay
2130 done
2131 for cpu_low_power_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/low_power_io_percent
2132 do
2133 echo 34 > $cpu_low_power_io_percent
2134 done
2135 for cpu_mbps_zones in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/mbps_zones
2136 do
2137 echo "1611 3221 5859 6445 7104" > $cpu_mbps_zones
2138 done
2139 for cpu_sample_ms in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/sample_ms
2140 do
2141 echo 4 > $cpu_sample_ms
2142 done
2143 for cpu_up_scale in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/up_scale
2144 do
2145 echo 250 > $cpu_up_scale
2146 done
2147 for cpu_min_freq in /sys/class/devfreq/soc:qcom,cpubw/min_freq
2148 do
2149 echo 1611 > $cpu_min_freq
2150 done
2151 done
2152
2153 for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent
2154 do
2155 echo 40 > $gpu_bimc_io_percent
2156 done
2157
2158 # disable thermal & BCL core_control to update interactive gov settings
2159 echo 0 > /sys/module/msm_thermal/core_control/enabled
2160 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2161 do
2162 echo -n disable > $mode
2163 done
2164 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
2165 do
2166 bcl_hotplug_mask=`cat $hotplug_mask`
2167 echo 0 > $hotplug_mask
2168 done
2169 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
2170 do
2171 bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
2172 echo 0 > $hotplug_soc_mask
2173 done
2174 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2175 do
2176 echo -n enable > $mode
2177 done
2178
2179 #if the kernel version >=4.9,use the schedutil governor
2180 if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 9 ]; then
2181 8953_sched_dcvs_eas
2182 else
2183 8953_sched_dcvs_hmp
2184 fi
2185 echo 652800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
2186
2187 # Bring up all cores online
2188 echo 1 > /sys/devices/system/cpu/cpu1/online
2189 echo 1 > /sys/devices/system/cpu/cpu2/online
2190 echo 1 > /sys/devices/system/cpu/cpu3/online
2191 echo 1 > /sys/devices/system/cpu/cpu4/online
2192 echo 1 > /sys/devices/system/cpu/cpu5/online
2193 echo 1 > /sys/devices/system/cpu/cpu6/online
2194 echo 1 > /sys/devices/system/cpu/cpu7/online
2195
2196 # Enable low power modes
2197 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
2198
2199 # re-enable thermal & BCL core_control now
2200 echo 1 > /sys/module/msm_thermal/core_control/enabled
2201 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2202 do
2203 echo -n disable > $mode
2204 done
2205 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
2206 do
2207 echo $bcl_hotplug_mask > $hotplug_mask
2208 done
2209 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
2210 do
2211 echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
2212 done
2213 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2214 do
2215 echo -n enable > $mode
2216 done
2217
2218 # SMP scheduler
2219 echo 85 > /proc/sys/kernel/sched_upmigrate
2220 echo 85 > /proc/sys/kernel/sched_downmigrate
2221
2222 # Set Memory parameters
2223 configure_memory_parameters
2224 ;;
2225 esac
2226 case "$soc_id" in
2227 "349" | "350")
2228
2229 # Start Host based Touch processing
2230 case "$hw_platform" in
2231 "MTP" | "Surf" | "RCM" | "QRD" )
2232 start_hbtp
2233 ;;
2234 esac
2235
2236 for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor
2237 do
2238 echo "cpufreq" > $devfreq_gov
2239 done
2240 for cpubw in /sys/class/devfreq/*qcom,cpubw*
2241 do
2242 echo "bw_hwmon" > $cpubw/governor
2243 echo 50 > $cpubw/polling_interval
2244 echo "1611 3221 5859 6445 7104" > $cpubw/bw_hwmon/mbps_zones
2245 echo 4 > $cpubw/bw_hwmon/sample_ms
2246 echo 34 > $cpubw/bw_hwmon/io_percent
2247 echo 20 > $cpubw/bw_hwmon/hist_memory
2248 echo 80 > $cpubw/bw_hwmon/down_thres
2249 echo 0 > $cpubw/bw_hwmon/hyst_length
2250 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
2251 echo 250 > $cpubw/bw_hwmon/up_scale
2252 echo 1600 > $cpubw/bw_hwmon/idle_mbps
2253 done
2254
2255 # Configure DCC module to capture critical register contents when device crashes
2256 for DCC_PATH in /sys/bus/platform/devices/*.dcc*
2257 do
2258 echo 0 > $DCC_PATH/enable
2259 echo cap > $DCC_PATH/func_type
2260 echo sram > $DCC_PATH/data_sink
2261 echo 1 > $DCC_PATH/config_reset
2262
2263 # Register specifies APC CPR closed-loop settled voltage for current voltage corner
2264 echo 0xb1d2c18 1 > $DCC_PATH/config
2265
2266 # Register specifies SW programmed open-loop voltage for current voltage corner
2267 echo 0xb1d2900 1 > $DCC_PATH/config
2268
2269 # Register specifies APM switch settings and APM FSM state
2270 echo 0xb1112b0 1 > $DCC_PATH/config
2271
2272 # Register specifies CPR mode change state and also #online cores input to CPR HW
2273 echo 0xb018798 1 > $DCC_PATH/config
2274
2275 echo 1 > $DCC_PATH/enable
2276 done
2277
2278 # disable thermal & BCL core_control to update interactive gov settings
2279 echo 0 > /sys/module/msm_thermal/core_control/enabled
2280 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2281 do
2282 echo -n disable > $mode
2283 done
2284 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
2285 do
2286 bcl_hotplug_mask=`cat $hotplug_mask`
2287 echo 0 > $hotplug_mask
2288 done
2289 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
2290 do
2291 bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
2292 echo 0 > $hotplug_soc_mask
2293 done
2294 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2295 do
2296 echo -n enable > $mode
2297 done
2298
2299 # configure governor settings for little cluster
2300 echo 1 > /sys/devices/system/cpu/cpu0/online
2301 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
2302 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
2303 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
2304 echo 1363200 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
2305 #default value for hispeed_load is 90, for sdm632 it should be 85
2306 echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
2307 # sched_load_boost as -6 is equivalent to target load as 85.
2308 echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
2309 echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
2310 echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
2311 echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
2312
2313 # configure governor settings for big cluster
2314 echo 1 > /sys/devices/system/cpu/cpu4/online
2315 echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
2316 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us
2317 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us
2318 echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
2319 #default value for hispeed_load is 90, for sdm632 it should be 85
2320 echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
2321 # sched_load_boost as -6 is equivalent to target load as 85.
2322 echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost
2323 echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost
2324 echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
2325 echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
2326
2327 echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
2328 echo 633600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
2329
2330 # cpuset settings
2331 echo 0-3 > /dev/cpuset/background/cpus
2332 echo 0-3 > /dev/cpuset/system-background/cpus
2333 # choose idle CPU for top app tasks
2334 echo 1 > /dev/stune/top-app/schedtune.prefer_idle
2335
2336 # re-enable thermal & BCL core_control now
2337 echo 1 > /sys/module/msm_thermal/core_control/enabled
2338 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2339 do
2340 echo -n disable > $mode
2341 done
2342 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
2343 do
2344 echo $bcl_hotplug_mask > $hotplug_mask
2345 done
2346 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
2347 do
2348 echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
2349 done
2350 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2351 do
2352 echo -n enable > $mode
2353 done
2354
2355 # Disable Core control
2356 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
2357 echo 0 > /sys/devices/system/cpu/cpu4/core_ctl/enable
2358
2359 # Bring up all cores online
2360 echo 1 > /sys/devices/system/cpu/cpu1/online
2361 echo 1 > /sys/devices/system/cpu/cpu2/online
2362 echo 1 > /sys/devices/system/cpu/cpu3/online
2363 echo 1 > /sys/devices/system/cpu/cpu4/online
2364 echo 1 > /sys/devices/system/cpu/cpu5/online
2365 echo 1 > /sys/devices/system/cpu/cpu6/online
2366 echo 1 > /sys/devices/system/cpu/cpu7/online
2367
2368 # Enable low power modes
2369 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
2370
2371 # Set Memory parameters
2372 configure_memory_parameters
2373
2374 # Setting b.L scheduler parameters
2375 echo 76 > /proc/sys/kernel/sched_downmigrate
2376 echo 86 > /proc/sys/kernel/sched_upmigrate
2377 echo 80 > /proc/sys/kernel/sched_group_downmigrate
2378 echo 90 > /proc/sys/kernel/sched_group_upmigrate
2379 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
2380
2381 # Enable min frequency adjustment for big cluster
2382 if [ -f /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster ]; then
2383 echo "4-7" > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster
2384 fi
2385 echo 1 > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_adjust
2386
2387 ;;
2388 esac
2389 ;;
2390esac
2391
2392case "$target" in
2393 "msm8937")
2394
2395 if [ -f /sys/devices/soc0/soc_id ]; then
2396 soc_id=`cat /sys/devices/soc0/soc_id`
2397 else
2398 soc_id=`cat /sys/devices/system/soc/soc0/id`
2399 fi
2400
2401 if [ -f /sys/devices/soc0/hw_platform ]; then
2402 hw_platform=`cat /sys/devices/soc0/hw_platform`
2403 else
2404 hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
2405 fi
2406 if [ -f /sys/devices/soc0/platform_subtype_id ]; then
2407 platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
2408 fi
2409
2410 # Socid 386 = Pukeena
2411 case "$soc_id" in
2412 "303" | "307" | "308" | "309" | "320" | "386" | "436")
2413
2414 # Start Host based Touch processing
2415 case "$hw_platform" in
2416 "MTP" )
2417 start_hbtp
2418 ;;
2419 esac
2420
2421 case "$hw_platform" in
2422 "Surf" | "RCM" )
2423 if [ $platform_subtype_id -ne "4" ]; then
2424 start_hbtp
2425 fi
2426 ;;
2427 esac
2428 # Apply Scheduler and Governor settings for 8917 / 8920
2429
2430 echo 20000000 > /proc/sys/kernel/sched_ravg_window
2431
2432 #disable sched_boost in 8917
2433 echo 0 > /proc/sys/kernel/sched_boost
2434
2435 # core_ctl is not needed for 8917. Disable it.
2436 disable_core_ctl
2437
2438 for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor
2439 do
2440 echo "cpufreq" > $devfreq_gov
2441 done
2442
2443 for devfreq_gov in /sys/class/devfreq/soc:qcom,cpubw/governor
2444 do
2445 echo "bw_hwmon" > $devfreq_gov
2446 for cpu_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent
2447 do
2448 echo 20 > $cpu_io_percent
2449 done
2450 for cpu_guard_band in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps
2451 do
2452 echo 30 > $cpu_guard_band
2453 done
2454 done
2455
2456 for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent
2457 do
2458 echo 40 > $gpu_bimc_io_percent
2459 done
2460
2461 # disable thermal core_control to update interactive gov settings
2462 echo 0 > /sys/module/msm_thermal/core_control/enabled
2463
2464 if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 9 ]; then
2465 8917_sched_dcvs_eas
2466 else
2467 8917_sched_dcvs_hmp
2468 fi
2469 echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
2470 # re-enable thermal core_control now
2471 echo 1 > /sys/module/msm_thermal/core_control/enabled
2472
2473 # Disable L2-GDHS low power modes
2474 echo N > /sys/module/lpm_levels/perf/perf-l2-gdhs/idle_enabled
2475 echo N > /sys/module/lpm_levels/perf/perf-l2-gdhs/suspend_enabled
2476
2477 # Bring up all cores online
2478 echo 1 > /sys/devices/system/cpu/cpu1/online
2479 echo 1 > /sys/devices/system/cpu/cpu2/online
2480 echo 1 > /sys/devices/system/cpu/cpu3/online
2481
2482 # Enable low power modes
2483 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
2484
2485 # Set rps mask
2486 echo 2 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus
2487
2488 # Enable dynamic clock gating
2489 echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating
2490 # Enable timer migration to little cluster
2491 echo 1 > /proc/sys/kernel/power_aware_timer_migration
2492 # Set Memory parameters
2493 configure_memory_parameters
2494 ;;
2495 *)
2496 ;;
2497 esac
2498
2499 case "$soc_id" in
2500 "294" | "295" | "313" )
2501
2502 # Start Host based Touch processing
2503 case "$hw_platform" in
2504 "MTP" | "Surf" | "RCM" )
2505 start_hbtp
2506 ;;
2507 esac
2508
2509 # Apply Scheduler and Governor settings for 8937/8940
2510
2511 # HMP scheduler settings
2512 echo 3 > /proc/sys/kernel/sched_window_stats_policy
2513 echo 3 > /proc/sys/kernel/sched_ravg_hist_size
2514 echo 20000000 > /proc/sys/kernel/sched_ravg_window
2515
2516 #disable sched_boost in 8937
2517 echo 0 > /proc/sys/kernel/sched_boost
2518
2519 for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor
2520 do
2521 echo "cpufreq" > $devfreq_gov
2522 done
2523
2524 for devfreq_gov in /sys/class/devfreq/soc:qcom,cpubw/governor
2525 do
2526 echo "bw_hwmon" > $devfreq_gov
2527 for cpu_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent
2528 do
2529 echo 20 > $cpu_io_percent
2530 done
2531 for cpu_guard_band in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps
2532 do
2533 echo 30 > $cpu_guard_band
2534 done
2535 done
2536
2537 for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent
2538 do
2539 echo 40 > $gpu_bimc_io_percent
2540 done
2541
2542 # disable thermal core_control to update interactive gov and core_ctl settings
2543 echo 0 > /sys/module/msm_thermal/core_control/enabled
2544
2545 if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 9 ]; then
2546 8937_sched_dcvs_eas
2547 else
2548 8937_sched_dcvs_hmp
2549 fi
2550 echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
2551 echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
2552 # Disable L2-GDHS low power modes
2553 echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/idle_enabled
2554 echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/suspend_enabled
2555 echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/idle_enabled
2556 echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/suspend_enabled
2557
2558 # Bring up all cores online
2559 echo 1 > /sys/devices/system/cpu/cpu1/online
2560 echo 1 > /sys/devices/system/cpu/cpu2/online
2561 echo 1 > /sys/devices/system/cpu/cpu3/online
2562 echo 1 > /sys/devices/system/cpu/cpu4/online
2563 echo 1 > /sys/devices/system/cpu/cpu5/online
2564 echo 1 > /sys/devices/system/cpu/cpu6/online
2565 echo 1 > /sys/devices/system/cpu/cpu7/online
2566
2567 # Enable low power modes
2568 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
2569
2570 # HMP scheduler (big.Little cluster related) settings
2571 echo 93 > /proc/sys/kernel/sched_upmigrate
2572 echo 83 > /proc/sys/kernel/sched_downmigrate
2573
2574 # Enable core control
2575 echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
2576 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus
2577 echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
2578 echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
2579 echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
2580 echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
2581
2582 # re-enable thermal core_control
2583 echo 1 > /sys/module/msm_thermal/core_control/enabled
2584
2585 # Enable dynamic clock gating
2586 echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating
2587 # Enable timer migration to little cluster
2588 echo 1 > /proc/sys/kernel/power_aware_timer_migration
2589 # Set Memory parameters
2590 configure_memory_parameters
2591 ;;
2592 *)
2593
2594 ;;
2595 esac
2596
2597 case "$soc_id" in
2598 "354" | "364" | "353" | "363" )
2599
2600 # Start Host based Touch processing
2601 case "$hw_platform" in
2602 "MTP" | "Surf" | "RCM" | "QRD" )
2603 start_hbtp
2604 ;;
2605 esac
2606
2607 # Apply settings for sdm429/sda429/sdm439/sda439
2608
2609 for cpubw in /sys/class/devfreq/*qcom,mincpubw*
2610 do
2611 echo "cpufreq" > $cpubw/governor
2612 done
2613
2614 for cpubw in /sys/class/devfreq/*qcom,cpubw*
2615 do
2616 echo "bw_hwmon" > $cpubw/governor
2617 echo 20 > $cpubw/bw_hwmon/io_percent
2618 echo 30 > $cpubw/bw_hwmon/guard_band_mbps
2619 done
2620
2621 for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent
2622 do
2623 echo 40 > $gpu_bimc_io_percent
2624 done
2625
2626 case "$soc_id" in
2627 "353" | "363" )
2628 # Apply settings for sdm439/sda439
2629 # configure schedutil governor settings
2630 # enable governor for perf cluster
2631 echo 1 > /sys/devices/system/cpu/cpu0/online
2632 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
2633 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
2634 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
2635
2636 #set the hispeed_freq
2637 echo 1497600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
2638 echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
2639 echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
2640 # sched_load_boost as -6 is equivalent to target load as 85.
2641 echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
2642 echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
2643 echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
2644 echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
2645
2646 ## enable governor for power cluster
2647 echo 1 > /sys/devices/system/cpu/cpu4/online
2648 echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
2649 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us
2650 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us
2651
2652 #set the hispeed_freq
2653 echo 998400 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
2654 echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
2655 echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
2656 # sched_load_boost as -6 is equivalent to target load as 85.
2657 echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost
2658 echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost
2659 echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
2660 echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
2661
2662 # EAS scheduler (big.Little cluster related) settings
2663 echo 93 > /proc/sys/kernel/sched_upmigrate
2664 echo 83 > /proc/sys/kernel/sched_downmigrate
2665 echo 140 > /proc/sys/kernel/sched_group_upmigrate
2666 echo 120 > /proc/sys/kernel/sched_group_downmigrate
2667
2668 # cpuset settings
2669 #echo 0-3 > /dev/cpuset/background/cpus
2670 #echo 0-3 > /dev/cpuset/system-background/cpus
2671
2672 # Bring up all cores online
2673 echo 1 > /sys/devices/system/cpu/cpu1/online
2674 echo 1 > /sys/devices/system/cpu/cpu2/online
2675 echo 1 > /sys/devices/system/cpu/cpu3/online
2676 echo 1 > /sys/devices/system/cpu/cpu4/online
2677 echo 1 > /sys/devices/system/cpu/cpu5/online
2678 echo 1 > /sys/devices/system/cpu/cpu6/online
2679 echo 1 > /sys/devices/system/cpu/cpu7/online
2680
2681 # Enable core control
2682 echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
2683 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus
2684 echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
2685 echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
2686 echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
2687 echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
2688 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
2689
2690 # Big cluster min frequency adjust settings
2691 if [ -f /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster ]; then
2692 echo "0-3" > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster
2693 fi
2694 echo 1305600 > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_floor
2695 ;;
2696 *)
2697 # Apply settings for sdm429/sda429
2698 # configure schedutil governor settings
2699 echo 1 > /sys/devices/system/cpu/cpu0/online
2700 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
2701 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
2702 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
2703
2704 #set the hispeed_freq
2705 echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
2706 echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
2707 echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
2708 # sched_load_boost as -6 is equivalent to target load as 85.
2709 echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
2710 echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
2711 echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
2712 echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
2713
2714 # Bring up all cores online
2715 echo 1 > /sys/devices/system/cpu/cpu1/online
2716 echo 1 > /sys/devices/system/cpu/cpu2/online
2717 echo 1 > /sys/devices/system/cpu/cpu3/online
2718 ;;
2719 esac
2720
2721 # Set Memory parameters
2722 configure_memory_parameters
2723
2724 #disable sched_boost
2725 echo 0 > /proc/sys/kernel/sched_boost
2726
2727 # Disable L2-GDHS low power modes
2728 echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/idle_enabled
2729 echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/suspend_enabled
2730 echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/idle_enabled
2731 echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/suspend_enabled
2732
2733 # Enable low power modes
2734 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
2735
2736 case "$soc_id" in
2737 "353" | "363" )
2738 echo 1 > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_adjust
2739 ;;
2740 esac
2741 ;;
2742 esac
2743
2744 case "$soc_id" in
2745 "386" | "436")
2746
2747 # Start Host based Touch processing
2748 case "$hw_platform" in
2749 "QRD" )
2750 start_hbtp
2751 ;;
2752 esac
2753 ;;
2754 esac
2755 ;;
2756esac
2757
2758case "$target" in
2759 "sdm660")
2760
2761 # Set the default IRQ affinity to the primary cluster. When a
2762 # CPU is isolated/hotplugged, the IRQ affinity is adjusted
2763 # to one of the CPU from the default IRQ affinity mask.
2764 echo f > /proc/irq/default_smp_affinity
2765
2766 if [ -f /sys/devices/soc0/soc_id ]; then
2767 soc_id=`cat /sys/devices/soc0/soc_id`
2768 else
2769 soc_id=`cat /sys/devices/system/soc/soc0/id`
2770 fi
2771
2772 if [ -f /sys/devices/soc0/hw_platform ]; then
2773 hw_platform=`cat /sys/devices/soc0/hw_platform`
2774 else
2775 hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
2776 fi
2777
2778 panel=`cat /sys/class/graphics/fb0/modes`
2779 if [ "${panel:5:1}" == "x" ]; then
2780 panel=${panel:2:3}
2781 else
2782 panel=${panel:2:4}
2783 fi
2784
2785 if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -le 14 ]; then
2786 if [ $panel -gt 1080 ]; then
2787 echo 2 > /proc/sys/kernel/sched_window_stats_policy
2788 echo 5 > /proc/sys/kernel/sched_ravg_hist_size
2789 else
2790 echo 3 > /proc/sys/kernel/sched_window_stats_policy
2791 echo 3 > /proc/sys/kernel/sched_ravg_hist_size
2792 fi
2793 fi
2794 #Apply settings for sdm660, sdm636,sda636
2795 case "$soc_id" in
2796 "317" | "324" | "325" | "326" | "345" | "346" )
2797
2798 echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
2799 echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
2800 echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
2801 echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
2802 echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster
2803 echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
2804
2805 # Setting b.L scheduler parameters
2806 echo 96 > /proc/sys/kernel/sched_upmigrate
2807 echo 90 > /proc/sys/kernel/sched_downmigrate
2808 echo 140 > /proc/sys/kernel/sched_group_upmigrate
2809 echo 120 > /proc/sys/kernel/sched_group_downmigrate
2810
2811 # cpuset settings
2812 echo 0-3 > /dev/cpuset/background/cpus
2813 echo 0-3 > /dev/cpuset/system-background/cpus
2814
2815 #if the kernel version >=4.14,use the schedutil governor
2816 if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 14 ]; then
2817 sdm660_sched_schedutil_dcvs
2818 else
2819 sdm660_sched_interactive_dcvs
2820 fi
2821
2822 # Set Memory parameters
2823 configure_memory_parameters
2824
2825 # enable LPM
2826 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
2827
2828 # Start cdsprpcd only for sdm660 and disable for sdm630
2829 start vendor.cdsprpcd
2830
2831 # Start Host based Touch processing
2832 case "$hw_platform" in
2833 "MTP" | "Surf" | "RCM" | "QRD" )
2834 start_hbtp
2835 ;;
2836 esac
2837 ;;
2838 esac
2839 #Apply settings for sdm630 and Tahaa
2840 case "$soc_id" in
2841 "318" | "327" | "385" )
2842
2843 # Start Host based Touch processing
2844 case "$hw_platform" in
2845 "MTP" | "Surf" | "RCM" | "QRD" )
2846 start_hbtp
2847 ;;
2848 esac
2849
2850 # Setting b.L scheduler parameters
2851 echo 85 > /proc/sys/kernel/sched_upmigrate
2852 echo 85 > /proc/sys/kernel/sched_downmigrate
2853 echo 900 > /proc/sys/kernel/sched_group_upmigrate
2854 echo 900 > /proc/sys/kernel/sched_group_downmigrate
2855 echo 0 > /proc/sys/kernel/sched_select_prev_cpu_us
2856 echo 400000 > /proc/sys/kernel/sched_freq_inc_notify
2857 echo 400000 > /proc/sys/kernel/sched_freq_dec_notify
2858 echo 3 > /proc/sys/kernel/sched_spill_nr_run
2859
2860 #init task load, restrict wakeups to preferred cluster
2861 echo 15 > /proc/sys/kernel/sched_init_task_load
2862 echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill
2863 echo 50000 > /proc/sys/kernel/sched_short_burst_ns
2864
2865 # cpuset settings
2866 echo 0-3 > /dev/cpuset/background/cpus
2867 echo 0-3 > /dev/cpuset/system-background/cpus
2868
2869 # disable thermal bcl hotplug to switch governor
2870 echo 0 > /sys/module/msm_thermal/core_control/enabled
2871 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2872 do
2873 echo -n disable > $mode
2874 done
2875 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
2876 do
2877 bcl_hotplug_mask=`cat $hotplug_mask`
2878 echo 0 > $hotplug_mask
2879 done
2880 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
2881 do
2882 bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
2883 echo 0 > $hotplug_soc_mask
2884 done
2885 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2886 do
2887 echo -n enable > $mode
2888 done
2889
2890 # online CPU0
2891 echo 1 > /sys/devices/system/cpu/cpu0/online
2892 # configure governor settings for Big cluster(CPU0 to CPU3)
2893 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
2894 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
2895 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
2896 echo "19000 1344000:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
2897 echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
2898 echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
2899 echo 1344000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
2900 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
2901 echo "85 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
2902 echo 39000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
2903 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
2904 echo 787200 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
2905 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
2906
2907 # online CPU4
2908 echo 1 > /sys/devices/system/cpu/cpu4/online
2909 # configure governor settings for Little cluster(CPU4 to CPU7)
2910 echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
2911 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
2912 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
2913 echo "19000 1094400:39000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
2914 echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
2915 echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
2916 echo 1094400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
2917 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
2918 echo "85 1094400:80" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
2919 echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
2920 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
2921 echo 614400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
2922 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/ignore_hispeed_on_notif
2923
2924 # bring all cores online
2925 echo 1 > /sys/devices/system/cpu/cpu0/online
2926 echo 1 > /sys/devices/system/cpu/cpu1/online
2927 echo 1 > /sys/devices/system/cpu/cpu2/online
2928 echo 1 > /sys/devices/system/cpu/cpu3/online
2929 echo 1 > /sys/devices/system/cpu/cpu4/online
2930 echo 1 > /sys/devices/system/cpu/cpu5/online
2931 echo 1 > /sys/devices/system/cpu/cpu6/online
2932 echo 1 > /sys/devices/system/cpu/cpu7/online
2933
2934 # configure LPM
2935 echo N > /sys/module/lpm_levels/system/perf/cpu0/ret/idle_enabled
2936 echo N > /sys/module/lpm_levels/system/perf/cpu1/ret/idle_enabled
2937 echo N > /sys/module/lpm_levels/system/perf/cpu2/ret/idle_enabled
2938 echo N > /sys/module/lpm_levels/system/perf/cpu3/ret/idle_enabled
2939 echo N > /sys/module/lpm_levels/system/pwr/cpu4/ret/idle_enabled
2940 echo N > /sys/module/lpm_levels/system/pwr/cpu5/ret/idle_enabled
2941 echo N > /sys/module/lpm_levels/system/pwr/cpu6/ret/idle_enabled
2942 echo N > /sys/module/lpm_levels/system/pwr/cpu7/ret/idle_enabled
2943 echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled
2944 echo N > /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled
2945 # enable LPM
2946 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
2947
2948 # re-enable thermal and BCL hotplug
2949 echo 1 > /sys/module/msm_thermal/core_control/enabled
2950 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2951 do
2952 echo -n disable > $mode
2953 done
2954 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
2955 do
2956 echo $bcl_hotplug_mask > $hotplug_mask
2957 done
2958 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
2959 do
2960 echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
2961 done
2962 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
2963 do
2964 echo -n enable > $mode
2965 done
2966
2967 # Set Memory parameters
2968 configure_memory_parameters
2969
2970 # Enable bus-dcvs
2971 for cpubw in /sys/class/devfreq/*qcom,cpubw*
2972 do
2973 echo "bw_hwmon" > $cpubw/governor
2974 echo 50 > $cpubw/polling_interval
2975 echo 762 > $cpubw/min_freq
2976 echo "1525 3143 4173 5195 5859 7759 9887 10327" > $cpubw/bw_hwmon/mbps_zones
2977 echo 4 > $cpubw/bw_hwmon/sample_ms
2978 echo 85 > $cpubw/bw_hwmon/io_percent
2979 echo 20 > $cpubw/bw_hwmon/hist_memory
2980 echo 0 > $cpubw/bw_hwmon/hyst_length
2981 echo 100 > $cpubw/bw_hwmon/decay_rate
2982 echo 50 > $cpubw/bw_hwmon/bw_step
2983 echo 80 > $cpubw/bw_hwmon/down_thres
2984 echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps
2985 echo 50 > $cpubw/bw_hwmon/low_power_io_percent
2986 echo 20 > $cpubw/bw_hwmon/low_power_delay
2987 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
2988 echo 250 > $cpubw/bw_hwmon/up_scale
2989 echo 1600 > $cpubw/bw_hwmon/idle_mbps
2990 done
2991
2992 for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
2993 do
2994 echo "mem_latency" > $memlat/governor
2995 echo 10 > $memlat/polling_interval
2996 echo 400 > $memlat/mem_latency/ratio_ceil
2997 done
2998
2999 echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
3000 ;;
3001 esac
3002 ;;
3003esac
3004
3005case "$target" in
3006 "sdm710")
3007
3008 #Apply settings for sdm710
3009 # Set the default IRQ affinity to the silver cluster. When a
3010 # CPU is isolated/hotplugged, the IRQ affinity is adjusted
3011 # to one of the CPU from the default IRQ affinity mask.
3012 echo 3f > /proc/irq/default_smp_affinity
3013
3014 if [ -f /sys/devices/soc0/soc_id ]; then
3015 soc_id=`cat /sys/devices/soc0/soc_id`
3016 else
3017 soc_id=`cat /sys/devices/system/soc/soc0/id`
3018 fi
3019
3020 if [ -f /sys/devices/soc0/hw_platform ]; then
3021 hw_platform=`cat /sys/devices/soc0/hw_platform`
3022 else
3023 hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
3024 fi
3025
3026 case "$soc_id" in
3027 "336" | "337" | "347" | "360" | "393" )
3028
3029 # Start Host based Touch processing
3030 case "$hw_platform" in
3031 "MTP" | "Surf" | "RCM" | "QRD" )
3032 start_hbtp
3033 ;;
3034 esac
3035
3036 # Core control parameters on silver
3037 echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
3038 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
3039 echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
3040 echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
3041 echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
3042 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
3043 echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
3044
3045 # Setting b.L scheduler parameters
3046 echo 96 > /proc/sys/kernel/sched_upmigrate
3047 echo 90 > /proc/sys/kernel/sched_downmigrate
3048 echo 140 > /proc/sys/kernel/sched_group_upmigrate
3049 echo 120 > /proc/sys/kernel/sched_group_downmigrate
3050 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
3051
3052 # configure governor settings for little cluster
3053 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3054 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us
3055 echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
3056 echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
3057
3058 # configure governor settings for big cluster
3059 echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
3060 echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/rate_limit_us
3061 echo 1344000 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
3062 echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
3063
3064 # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
3065 echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
3066 echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
3067 echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
3068
3069 echo "0:1209600" > /sys/module/cpu_boost/parameters/input_boost_freq
3070 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
3071
3072 # Set Memory parameters
3073 configure_memory_parameters
3074
3075 # Enable bus-dcvs
3076 for cpubw in /sys/class/devfreq/*qcom,cpubw*
3077 do
3078 echo "bw_hwmon" > $cpubw/governor
3079 echo 50 > $cpubw/polling_interval
3080 echo "1144 1720 2086 2929 3879 5931 6881" > $cpubw/bw_hwmon/mbps_zones
3081 echo 4 > $cpubw/bw_hwmon/sample_ms
3082 echo 68 > $cpubw/bw_hwmon/io_percent
3083 echo 20 > $cpubw/bw_hwmon/hist_memory
3084 echo 0 > $cpubw/bw_hwmon/hyst_length
3085 echo 80 > $cpubw/bw_hwmon/down_thres
3086 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
3087 echo 250 > $cpubw/bw_hwmon/up_scale
3088 echo 1600 > $cpubw/bw_hwmon/idle_mbps
3089 done
3090
3091 #Enable mem_latency governor for DDR scaling
3092 for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
3093 do
3094 echo "mem_latency" > $memlat/governor
3095 echo 10 > $memlat/polling_interval
3096 echo 400 > $memlat/mem_latency/ratio_ceil
3097 done
3098
3099 #Enable mem_latency governor for L3 scaling
3100 for memlat in /sys/class/devfreq/*qcom,l3-cpu*
3101 do
3102 echo "mem_latency" > $memlat/governor
3103 echo 10 > $memlat/polling_interval
3104 echo 400 > $memlat/mem_latency/ratio_ceil
3105 done
3106
3107 #Enable userspace governor for L3 cdsp nodes
3108 for l3cdsp in /sys/class/devfreq/*qcom,l3-cdsp*
3109 do
3110 echo "userspace" > $l3cdsp/governor
3111 chown -h system $l3cdsp/userspace/set_freq
3112 done
3113
3114 echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
3115
3116 # Disable CPU Retention
3117 echo N > /sys/module/lpm_levels/L3/cpu0/ret/idle_enabled
3118 echo N > /sys/module/lpm_levels/L3/cpu1/ret/idle_enabled
3119 echo N > /sys/module/lpm_levels/L3/cpu2/ret/idle_enabled
3120 echo N > /sys/module/lpm_levels/L3/cpu3/ret/idle_enabled
3121 echo N > /sys/module/lpm_levels/L3/cpu4/ret/idle_enabled
3122 echo N > /sys/module/lpm_levels/L3/cpu5/ret/idle_enabled
3123 echo N > /sys/module/lpm_levels/L3/cpu6/ret/idle_enabled
3124 echo N > /sys/module/lpm_levels/L3/cpu7/ret/idle_enabled
3125
3126 # cpuset parameters
3127 echo 0-5 > /dev/cpuset/background/cpus
3128 echo 0-5 > /dev/cpuset/system-background/cpus
3129
3130 # Turn off scheduler boost at the end
3131 echo 0 > /proc/sys/kernel/sched_boost
3132
3133 # Turn on sleep modes.
3134 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
3135 ;;
3136 esac
3137 ;;
3138esac
3139
3140case "$target" in
3141 "trinket")
3142
3143 if [ -f /sys/devices/soc0/soc_id ]; then
3144 soc_id=`cat /sys/devices/soc0/soc_id`
3145 else
3146 soc_id=`cat /sys/devices/system/soc/soc0/id`
3147 fi
3148
3149 case "$soc_id" in
3150 "394" )
3151
3152 # Core control parameters on big
3153 echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
3154 echo 40 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
3155 echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
3156 echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
3157 echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster
3158 echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
3159
3160 # Setting b.L scheduler parameters
3161 echo 67 > /proc/sys/kernel/sched_downmigrate
3162 echo 77 > /proc/sys/kernel/sched_upmigrate
3163 echo 85 > /proc/sys/kernel/sched_group_downmigrate
3164 echo 100 > /proc/sys/kernel/sched_group_upmigrate
3165
3166 # cpuset settings
3167 echo 0-3 > /dev/cpuset/background/cpus
3168 echo 0-3 > /dev/cpuset/system-background/cpus
3169
3170
3171 # configure governor settings for little cluster
3172 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3173 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
3174 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
3175 echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
3176 echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
3177
3178 # configure governor settings for big cluster
3179 echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
3180 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
3181 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
3182 echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
3183 echo 1056000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
3184
3185 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
3186
3187 # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
3188 echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
3189 echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
3190 echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
3191 echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
3192 echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost
3193 echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost
3194 echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
3195 echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
3196 echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
3197 echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
3198
3199 # Set Memory parameters
3200 configure_memory_parameters
3201
3202 # Enable bus-dcvs
3203 ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type`
3204 ddr_type4="07"
3205 ddr_type3="05"
3206
3207 for device in /sys/devices/platform/soc
3208 do
3209 for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw
3210 do
3211 echo "bw_hwmon" > $cpubw/governor
3212 echo 762 > $cpubw/min_freq
3213 if [ ${ddr_type:4:2} == $ddr_type4 ]; then
3214 # LPDDR4
3215 echo "2288 3440 4173 5195 5859 7759 10322 11863 13763" > $cpubw/bw_hwmon/mbps_zones
3216 echo 85 > $cpubw/bw_hwmon/io_percent
3217 fi
3218 if [ ${ddr_type:4:2} == $ddr_type3 ]; then
3219 # LPDDR3
3220 echo "1525 3440 5195 5859 7102" > $cpubw/bw_hwmon/mbps_zones
3221 echo 34 > $cpubw/bw_hwmon/io_percent
3222 fi
3223 echo 4 > $cpubw/bw_hwmon/sample_ms
3224 echo 90 > $cpubw/bw_hwmon/decay_rate
3225 echo 190 > $cpubw/bw_hwmon/bw_step
3226 echo 20 > $cpubw/bw_hwmon/hist_memory
3227 echo 0 > $cpubw/bw_hwmon/hyst_length
3228 echo 80 > $cpubw/bw_hwmon/down_thres
3229 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
3230 echo 250 > $cpubw/bw_hwmon/up_scale
3231 echo 1600 > $cpubw/bw_hwmon/idle_mbps
3232 echo 50 > $cpubw/polling_interval
3233 done
3234
3235 done
3236
3237 # memlat specific settings are moved to seperate file under
3238 # device/target specific folder
3239 setprop vendor.dcvs.prop 1
3240
3241 # colcoation v3 disabled
3242 echo 0 > /proc/sys/kernel/sched_min_task_util_for_boost
3243 echo 0 > /proc/sys/kernel/sched_min_task_util_for_colocation
3244 echo 0 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz
3245
3246 # Turn off scheduler boost at the end
3247 echo 0 > /proc/sys/kernel/sched_boost
3248
3249 # Turn on sleep modes.
3250 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
3251
3252 ;;
3253 esac
3254 ;;
3255esac
3256
3257case "$target" in
3258 "sm6150")
3259
3260 #Apply settings for sm6150
3261 # Set the default IRQ affinity to the silver cluster. When a
3262 # CPU is isolated/hotplugged, the IRQ affinity is adjusted
3263 # to one of the CPU from the default IRQ affinity mask.
3264 echo 3f > /proc/irq/default_smp_affinity
3265
3266 if [ -f /sys/devices/soc0/soc_id ]; then
3267 soc_id=`cat /sys/devices/soc0/soc_id`
3268 else
3269 soc_id=`cat /sys/devices/system/soc/soc0/id`
3270 fi
3271
3272 case "$soc_id" in
3273 "355" | "369" | "377" | "380" | "384" )
3274 target_type=`getprop ro.hardware.type`
3275 if [ "$target_type" == "automotive" ]; then
3276 # update frequencies
3277 configure_sku_parameters
3278 sku_identified=`getprop vendor.sku_identified`
3279 else
3280 sku_identified=0
3281 fi
3282
3283 # Core control parameters on silver
3284 echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
3285 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
3286 echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
3287 echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
3288 echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
3289 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
3290 echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
3291 echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable
3292
3293
3294 # Setting b.L scheduler parameters
3295 # default sched up and down migrate values are 90 and 85
3296 echo 65 > /proc/sys/kernel/sched_downmigrate
3297 echo 71 > /proc/sys/kernel/sched_upmigrate
3298 # default sched up and down migrate values are 100 and 95
3299 echo 85 > /proc/sys/kernel/sched_group_downmigrate
3300 echo 100 > /proc/sys/kernel/sched_group_upmigrate
3301 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
3302
3303 # colocation v3 settings
3304 echo 740000 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz
3305
3306
3307 # configure governor settings for little cluster
3308 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3309 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
3310 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
3311 echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
3312 if [ $sku_identified != 1 ]; then
3313 echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
3314 fi
3315
3316 # configure governor settings for big cluster
3317 echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
3318 echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us
3319 echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us
3320 echo 1209600 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
3321 if [ $sku_identified != 1 ]; then
3322 echo 768000 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
3323 fi
3324
3325 # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
3326 echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
3327 echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
3328 echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
3329
3330 echo "0:1209600" > /sys/module/cpu_boost/parameters/input_boost_freq
3331 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
3332
3333 # Set Memory parameters
3334 configure_memory_parameters
3335
3336 # Enable bus-dcvs
3337 for device in /sys/devices/platform/soc
3338 do
3339 for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
3340 do
3341 echo "bw_hwmon" > $cpubw/governor
3342 echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones
3343 echo 4 > $cpubw/bw_hwmon/sample_ms
3344 echo 68 > $cpubw/bw_hwmon/io_percent
3345 echo 20 > $cpubw/bw_hwmon/hist_memory
3346 echo 0 > $cpubw/bw_hwmon/hyst_length
3347 echo 80 > $cpubw/bw_hwmon/down_thres
3348 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
3349 echo 250 > $cpubw/bw_hwmon/up_scale
3350 echo 1600 > $cpubw/bw_hwmon/idle_mbps
3351 echo 50 > $cpubw/polling_interval
3352 done
3353
3354 for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
3355 do
3356 echo "bw_hwmon" > $llccbw/governor
3357 echo "1144 1720 2086 2929 3879 5931 6881" > $llccbw/bw_hwmon/mbps_zones
3358 echo 4 > $llccbw/bw_hwmon/sample_ms
3359 echo 68 > $llccbw/bw_hwmon/io_percent
3360 echo 20 > $llccbw/bw_hwmon/hist_memory
3361 echo 0 > $llccbw/bw_hwmon/hyst_length
3362 echo 80 > $llccbw/bw_hwmon/down_thres
3363 echo 0 > $llccbw/bw_hwmon/guard_band_mbps
3364 echo 250 > $llccbw/bw_hwmon/up_scale
3365 echo 1600 > $llccbw/bw_hwmon/idle_mbps
3366 echo 40 > $llccbw/polling_interval
3367 done
3368 done
3369
3370 # memlat specific settings are moved to seperate file under
3371 # device/target specific folder
3372 setprop vendor.dcvs.prop 1
3373
3374 # cpuset parameters
3375 echo 0-5 > /dev/cpuset/background/cpus
3376 echo 0-5 > /dev/cpuset/system-background/cpus
3377
3378 # Turn off scheduler boost at the end
3379 echo 0 > /proc/sys/kernel/sched_boost
3380
3381 # Turn on sleep modes.
3382 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
3383 ;;
3384 esac
3385
3386 #Apply settings for moorea
3387 case "$soc_id" in
3388 "365" | "366" )
3389
3390 # Core control parameters on silver
3391 echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
3392 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
3393 echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
3394 echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
3395 echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
3396 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
3397 echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
3398 echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable
3399
3400 # Setting b.L scheduler parameters
3401 # default sched up and down migrate values are 71 and 65
3402 echo 65 > /proc/sys/kernel/sched_downmigrate
3403 echo 71 > /proc/sys/kernel/sched_upmigrate
3404 # default sched up and down migrate values are 100 and 95
3405 echo 85 > /proc/sys/kernel/sched_group_downmigrate
3406 echo 100 > /proc/sys/kernel/sched_group_upmigrate
3407 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
3408
3409 #colocation v3 settings
3410 echo 740000 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz
3411
3412 # configure governor settings for little cluster
3413 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3414 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
3415 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
3416 echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
3417 echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
3418
3419 # configure governor settings for big cluster
3420 echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
3421 echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us
3422 echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us
3423 echo 1324600 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
3424 echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
3425
3426 # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
3427 echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
3428 echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
3429 echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
3430
3431 echo "0:1248000" > /sys/module/cpu_boost/parameters/input_boost_freq
3432 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
3433
3434 # Set Memory parameters
3435 configure_memory_parameters
3436
3437 # Enable bus-dcvs
3438 for device in /sys/devices/platform/soc
3439 do
3440 for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
3441 do
3442 echo "bw_hwmon" > $cpubw/governor
3443 echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones
3444 echo 4 > $cpubw/bw_hwmon/sample_ms
3445 echo 68 > $cpubw/bw_hwmon/io_percent
3446 echo 20 > $cpubw/bw_hwmon/hist_memory
3447 echo 0 > $cpubw/bw_hwmon/hyst_length
3448 echo 80 > $cpubw/bw_hwmon/down_thres
3449 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
3450 echo 250 > $cpubw/bw_hwmon/up_scale
3451 echo 1600 > $cpubw/bw_hwmon/idle_mbps
3452 echo 50 > $cpubw/polling_interval
3453 done
3454
3455 for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
3456 do
3457 echo "bw_hwmon" > $llccbw/governor
3458 echo "1144 1720 2086 2929 3879 5931 6881" > $llccbw/bw_hwmon/mbps_zones
3459 echo 4 > $llccbw/bw_hwmon/sample_ms
3460 echo 68 > $llccbw/bw_hwmon/io_percent
3461 echo 20 > $llccbw/bw_hwmon/hist_memory
3462 echo 0 > $llccbw/bw_hwmon/hyst_length
3463 echo 80 > $llccbw/bw_hwmon/down_thres
3464 echo 0 > $llccbw/bw_hwmon/guard_band_mbps
3465 echo 250 > $llccbw/bw_hwmon/up_scale
3466 echo 1600 > $llccbw/bw_hwmon/idle_mbps
3467 echo 40 > $llccbw/polling_interval
3468 done
3469
3470 for npubw in $device/*npu-npu-ddr-bw/devfreq/*npu-npu-ddr-bw
3471 do
3472 echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
3473 echo "bw_hwmon" > $npubw/governor
3474 echo "1144 1720 2086 2929 3879 5931 6881" > $npubw/bw_hwmon/mbps_zones
3475 echo 4 > $npubw/bw_hwmon/sample_ms
3476 echo 80 > $npubw/bw_hwmon/io_percent
3477 echo 20 > $npubw/bw_hwmon/hist_memory
3478 echo 10 > $npubw/bw_hwmon/hyst_length
3479 echo 30 > $npubw/bw_hwmon/down_thres
3480 echo 0 > $npubw/bw_hwmon/guard_band_mbps
3481 echo 250 > $npubw/bw_hwmon/up_scale
3482 echo 0 > $npubw/bw_hwmon/idle_mbps
3483 echo 40 > $npubw/polling_interval
3484 echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
3485 done
3486 done
3487
3488 # memlat specific settings are moved to seperate file under
3489 # device/target specific folder
3490 setprop vendor.dcvs.prop 1
3491
3492 # cpuset parameters
3493 echo 0-5 > /dev/cpuset/background/cpus
3494 echo 0-5 > /dev/cpuset/system-background/cpus
3495
3496 # Turn off scheduler boost at the end
3497 echo 0 > /proc/sys/kernel/sched_boost
3498
3499 # Turn on sleep modes.
3500 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
3501 ;;
3502 esac
3503
3504 ;;
3505esac
3506
3507
3508case "$target" in
3509 "lito")
3510
3511 #Apply settings for lito
3512 if [ -f /sys/devices/soc0/soc_id ]; then
3513 soc_id=`cat /sys/devices/soc0/soc_id`
3514 fi
3515
3516 case "$soc_id" in
3517 "400" | "440" | "476" )
3518 # Core control parameters on silver
3519 echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
3520 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
3521 echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
3522 echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
3523 echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
3524 echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
3525
3526 # Disable Core control on gold, prime
3527 echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable
3528 echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/enable
3529
3530 # Setting b.L scheduler parameters
3531 echo 65 85 > /proc/sys/kernel/sched_downmigrate
3532 echo 71 95 > /proc/sys/kernel/sched_upmigrate
3533 echo 85 > /proc/sys/kernel/sched_group_downmigrate
3534 echo 100 > /proc/sys/kernel/sched_group_upmigrate
3535 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
3536 echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_ns
3537 echo 0 > /proc/sys/kernel/sched_coloc_busy_hysteresis_enable_cpus
3538 echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_max_ms
3539
3540 # disable unfiltering
3541 echo 20000000 > /proc/sys/kernel/sched_task_unfilter_period
3542 echo 1 > /proc/sys/kernel/sched_task_unfilter_nr_windows
3543
3544 # configure governor settings for silver cluster
3545 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
3546 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us
3547 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
3548 echo 1228800 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
3549 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
3550 echo 576000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
3551 echo 650000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/rtg_boost_freq
3552
3553 # configure governor settings for gold cluster
3554 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor
3555 echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/up_rate_limit_us
3556 echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/down_rate_limit_us
3557 echo 1228800 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_freq
3558 echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
3559 echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
3560 echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/pl
3561 echo 672000 > /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq
3562 echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/rtg_boost_freq
3563
3564 # configure governor settings for gold+ cluster
3565 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor
3566 echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us
3567 echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/down_rate_limit_us
3568 echo 1228800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
3569 echo 85 > /sys/devices/system/cpu/cpu7/cpufreq/schedutil/hispeed_load
3570 echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
3571 echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl
3572 echo 672000 > /sys/devices/system/cpu/cpufreq/policy7/scaling_min_freq
3573 echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/rtg_boost_freq
3574
3575 # colocation v3 settings
3576 echo 51 > /proc/sys/kernel/sched_min_task_util_for_boost
3577 echo 35 > /proc/sys/kernel/sched_min_task_util_for_colocation
3578
3579 # Enable conservative pl
3580 echo 1 > /proc/sys/kernel/sched_conservative_pl
3581
3582 echo "0:1228800" > /sys/devices/system/cpu/cpu_boost/input_boost_freq
3583 echo 120 > /sys/devices/system/cpu/cpu_boost/input_boost_ms
3584
3585 # Set Memory parameters
3586 configure_memory_parameters
3587
3588 if [ `cat /sys/devices/soc0/revision` == "2.0" ]; then
3589 # r2.0 related changes
3590 echo "0:1075200" > /sys/devices/system/cpu/cpu_boost/input_boost_freq
3591 echo 610000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/rtg_boost_freq
3592 echo 1075200 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
3593 echo 1152000 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_freq
3594 echo 1401600 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
3595 echo 614400 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
3596 echo 652800 > /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq
3597 echo 806400 > /sys/devices/system/cpu/cpufreq/policy7/scaling_min_freq
3598 echo 83 > /proc/sys/kernel/sched_asym_cap_sibling_freq_match_pct
3599 fi
3600
3601 # Enable bus-dcvs
3602 for device in /sys/devices/platform/soc
3603 do
3604 for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
3605 do
3606 echo "bw_hwmon" > $cpubw/governor
3607 echo "2288 4577 7110 9155 12298 14236 16265" > $cpubw/bw_hwmon/mbps_zones
3608 echo 4 > $cpubw/bw_hwmon/sample_ms
3609 echo 68 > $cpubw/bw_hwmon/io_percent
3610 echo 20 > $cpubw/bw_hwmon/hist_memory
3611 echo 0 > $cpubw/bw_hwmon/hyst_length
3612 echo 80 > $cpubw/bw_hwmon/down_thres
3613 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
3614 echo 250 > $cpubw/bw_hwmon/up_scale
3615 echo 1600 > $cpubw/bw_hwmon/idle_mbps
3616 echo 50 > $cpubw/polling_interval
3617 done
3618
3619 for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
3620 do
3621 echo "bw_hwmon" > $llccbw/governor
3622 echo "1144 1720 2086 2929 3879 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones
3623 echo 4 > $llccbw/bw_hwmon/sample_ms
3624 echo 68 > $llccbw/bw_hwmon/io_percent
3625 echo 20 > $llccbw/bw_hwmon/hist_memory
3626 echo 0 > $llccbw/bw_hwmon/hyst_length
3627 echo 80 > $llccbw/bw_hwmon/down_thres
3628 echo 0 > $llccbw/bw_hwmon/guard_band_mbps
3629 echo 250 > $llccbw/bw_hwmon/up_scale
3630 echo 1600 > $llccbw/bw_hwmon/idle_mbps
3631 echo 50 > $llccbw/polling_interval
3632 done
3633
3634 for npubw in $device/*npu*-ddr-bw/devfreq/*npu*-ddr-bw
3635 do
3636 echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
3637 echo "bw_hwmon" > $npubw/governor
3638 echo "1144 1720 2086 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones
3639 echo 4 > $npubw/bw_hwmon/sample_ms
3640 echo 80 > $npubw/bw_hwmon/io_percent
3641 echo 20 > $npubw/bw_hwmon/hist_memory
3642 echo 10 > $npubw/bw_hwmon/hyst_length
3643 echo 30 > $npubw/bw_hwmon/down_thres
3644 echo 0 > $npubw/bw_hwmon/guard_band_mbps
3645 echo 250 > $npubw/bw_hwmon/up_scale
3646 echo 0 > $npubw/bw_hwmon/idle_mbps
3647 echo 40 > $npubw/polling_interval
3648 echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
3649 done
3650
3651 for npullccbw in $device/*npu*-llcc-bw/devfreq/*npu*-llcc-bw
3652 do
3653 echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
3654 echo "bw_hwmon" > $npullccbw/governor
3655 echo "2288 4577 7110 9155 12298 14236 16265" > $npullccbw/bw_hwmon/mbps_zones
3656 echo 4 > $npullccbw/bw_hwmon/sample_ms
3657 echo 100 > $npullccbw/bw_hwmon/io_percent
3658 echo 20 > $npullccbw/bw_hwmon/hist_memory
3659 echo 10 > $npullccbw/bw_hwmon/hyst_length
3660 echo 30 > $npullccbw/bw_hwmon/down_thres
3661 echo 0 > $npullccbw/bw_hwmon/guard_band_mbps
3662 echo 250 > $npullccbw/bw_hwmon/up_scale
3663 echo 40 > $npullccbw/polling_interval
3664 echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
3665 done
3666 done
3667 # memlat specific settings are moved to seperate file under
3668 # device/target specific folder
3669 setprop vendor.dcvs.prop 0
3670 setprop vendor.dcvs.prop 1
3671
3672 # cpuset parameters
3673 echo 0-5 > /dev/cpuset/background/cpus
3674 echo 0-5 > /dev/cpuset/system-background/cpus
3675
3676 # Turn off scheduler boost at the end
3677 echo 0 > /proc/sys/kernel/sched_boost
3678
3679 # Turn on sleep modes
3680 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
3681 ;;
3682 esac
3683
3684 #Apply settings for lagoon
3685 case "$soc_id" in
3686 "434" | "459" )
3687
3688 # Core control parameters on silver
3689 echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
3690 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
3691 echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
3692 echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
3693 echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
3694 echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
3695
3696 # Disable Core control on gold
3697 echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable
3698
3699
3700 # disable unfiltering
3701 echo 20000000 > /proc/sys/kernel/sched_task_unfilter_period
3702
3703 # Setting b.L scheduler parameters
3704 # default sched up and down migrate values are 95 and 85
3705 echo 65 > /proc/sys/kernel/sched_downmigrate
3706 echo 71 > /proc/sys/kernel/sched_upmigrate
3707
3708 # default sched up and down migrate values are 100 and 95
3709 echo 85 > /proc/sys/kernel/sched_group_downmigrate
3710 echo 100 > /proc/sys/kernel/sched_group_upmigrate
3711 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
3712 echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_ns
3713 echo 0 > /proc/sys/kernel/sched_coloc_busy_hysteresis_enable_cpus
3714 echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_max_ms
3715
3716 # configure governor settings for little cluster
3717 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3718 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
3719 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
3720 echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
3721 echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
3722
3723 # configure governor settings for big cluster
3724 echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
3725 echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us
3726 echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us
3727 echo 1248000 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
3728 echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
3729
3730 #colocation v3 settings
3731 echo 740000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/rtg_boost_freq
3732 echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/rtg_boost_freq
3733 echo 51 > /proc/sys/kernel/sched_min_task_util_for_boost
3734
3735 # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
3736 echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
3737 echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
3738 echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
3739
3740 # Enable conservative pl
3741 echo 1 > /proc/sys/kernel/sched_conservative_pl
3742
3743 echo "0:1248000" > /sys/devices/system/cpu/cpu_boost/input_boost_freq
3744 echo 120 > /sys/devices/system/cpu/cpu_boost/input_boost_ms
3745
3746 # Set Memory parameters
3747 configure_memory_parameters
3748
3749 # Enable bus-dcvs
3750 for device in /sys/devices/platform/soc
3751 do
3752 for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
3753 do
3754 echo "bw_hwmon" > $cpubw/governor
3755 echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones
3756 echo 4 > $cpubw/bw_hwmon/sample_ms
3757 echo 68 > $cpubw/bw_hwmon/io_percent
3758 echo 20 > $cpubw/bw_hwmon/hist_memory
3759 echo 0 > $cpubw/bw_hwmon/hyst_length
3760 echo 80 > $cpubw/bw_hwmon/down_thres
3761 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
3762 echo 250 > $cpubw/bw_hwmon/up_scale
3763 echo 1600 > $cpubw/bw_hwmon/idle_mbps
3764 echo 50 > $cpubw/polling_interval
3765 done
3766
3767 for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
3768 do
3769 echo "bw_hwmon" > $llccbw/governor
3770 echo "1144 1720 2086 2929 3879 5931 6881 8137" > $llccbw/bw_hwmon/mbps_zones
3771 echo 4 > $llccbw/bw_hwmon/sample_ms
3772 echo 68 > $llccbw/bw_hwmon/io_percent
3773 echo 20 > $llccbw/bw_hwmon/hist_memory
3774 echo 0 > $llccbw/bw_hwmon/hyst_length
3775 echo 80 > $llccbw/bw_hwmon/down_thres
3776 echo 0 > $llccbw/bw_hwmon/guard_band_mbps
3777 echo 250 > $llccbw/bw_hwmon/up_scale
3778 echo 1600 > $llccbw/bw_hwmon/idle_mbps
3779 echo 40 > $llccbw/polling_interval
3780 done
3781
3782 for npubw in $device/*npu*-ddr-bw/devfreq/*npu*-ddr-bw
3783 do
3784 echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
3785 echo "bw_hwmon" > $npubw/governor
3786 echo "1144 1720 2086 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones
3787 echo 4 > $npubw/bw_hwmon/sample_ms
3788 echo 80 > $npubw/bw_hwmon/io_percent
3789 echo 20 > $npubw/bw_hwmon/hist_memory
3790 echo 10 > $npubw/bw_hwmon/hyst_length
3791 echo 30 > $npubw/bw_hwmon/down_thres
3792 echo 0 > $npubw/bw_hwmon/guard_band_mbps
3793 echo 250 > $npubw/bw_hwmon/up_scale
3794 echo 0 > $npubw/bw_hwmon/idle_mbps
3795 echo 40 > $npubw/polling_interval
3796 echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
3797 done
3798
3799 for npullccbw in $device/*npu*-llcc-bw/devfreq/*npu*-llcc-bw
3800 do
3801 echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
3802 echo "bw_hwmon" > $npullccbw/governor
3803 echo "2288 4577 7110 9155 12298 14236 16265" > $npullccbw/bw_hwmon/mbps_zones
3804 echo 4 > $npullccbw/bw_hwmon/sample_ms
3805 echo 100 > $npullccbw/bw_hwmon/io_percent
3806 echo 20 > $npullccbw/bw_hwmon/hist_memory
3807 echo 10 > $npullccbw/bw_hwmon/hyst_length
3808 echo 30 > $npullccbw/bw_hwmon/down_thres
3809 echo 0 > $npullccbw/bw_hwmon/guard_band_mbps
3810 echo 250 > $npullccbw/bw_hwmon/up_scale
3811 echo 40 > $npullccbw/polling_interval
3812 echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
3813 done
3814 done
3815 # memlat specific settings are moved to seperate file under
3816 # device/target specific folder
3817 setprop vendor.dcvs.prop 1
3818
3819 # cpuset parameters
3820 echo 0-5 > /dev/cpuset/background/cpus
3821 echo 0-5 > /dev/cpuset/system-background/cpus
3822
3823 # Turn off scheduler boost at the end
3824 echo 0 > /proc/sys/kernel/sched_boost
3825
3826 # Turn off sleep modes
3827 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
3828 ;;
3829 esac
3830esac
3831
3832case "$target" in
3833 "bengal")
3834
3835 if [ -f /sys/devices/soc0/soc_id ]; then
3836 soc_id=`cat /sys/devices/soc0/soc_id`
3837 else
3838 soc_id=`cat /sys/devices/system/soc/soc0/id`
3839 fi
3840
3841 case "$soc_id" in
3842 "417" | "420" | "444" | "445" | "469" | "470" )
3843
3844 # Core control is temporarily disabled till bring up
3845 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
3846 echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
3847 # Core control parameters on big
3848 echo 40 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
3849 echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
3850 echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
3851 echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
3852
3853 # Setting b.L scheduler parameters
3854 echo 67 > /proc/sys/kernel/sched_downmigrate
3855 echo 77 > /proc/sys/kernel/sched_upmigrate
3856 echo 85 > /proc/sys/kernel/sched_group_downmigrate
3857 echo 100 > /proc/sys/kernel/sched_group_upmigrate
3858
3859 # cpuset settings
3860 echo 0-3 > /dev/cpuset/background/cpus
3861 echo 0-3 > /dev/cpuset/system-background/cpus
3862
3863
3864 # configure governor settings for little cluster
3865 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3866 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
3867 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
3868 echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
3869 echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
3870 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rtg_boost_freq
3871
3872 # configure governor settings for big cluster
3873 echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
3874 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us
3875 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us
3876 echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
3877 echo 1056000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
3878 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/rtg_boost_freq
3879
3880 echo "0:1017600" > /sys/devices/system/cpu/cpu_boost/input_boost_freq
3881 echo 80 > /sys/devices/system/cpu/cpu_boost/input_boost_ms
3882
3883 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
3884
3885 # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
3886 echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
3887 echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
3888 echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
3889 echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
3890 echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost
3891 echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost
3892 echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
3893 echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
3894 echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
3895 echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load
3896
3897 # Set Memory parameters
3898 configure_memory_parameters
3899
3900 # Enable bus-dcvs
3901 ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type`
3902 ddr_type4="07"
3903 ddr_type3="05"
3904
3905 for device in /sys/devices/platform/soc
3906 do
3907 for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw
3908 do
3909 echo "bw_hwmon" > $cpubw/governor
3910 echo 50 > $cpubw/polling_interval
3911 echo 762 > $cpubw/min_freq
3912 if [ ${ddr_type:4:2} == $ddr_type4 ]; then
3913 # LPDDR4
3914 echo "2288 3440 4173 5195 5859 7759 10322 11863 13763" > $cpubw/bw_hwmon/mbps_zones
3915 echo 85 > $cpubw/bw_hwmon/io_percent
3916 fi
3917 if [ ${ddr_type:4:2} == $ddr_type3 ]; then
3918 # LPDDR3
3919 echo "1525 3440 5195 5859 7102" > $cpubw/bw_hwmon/mbps_zones
3920 echo 34 > $cpubw/bw_hwmon/io_percent
3921 fi
3922 echo 4 > $cpubw/bw_hwmon/sample_ms
3923 echo 90 > $cpubw/bw_hwmon/decay_rate
3924 echo 190 > $cpubw/bw_hwmon/bw_step
3925 echo 20 > $cpubw/bw_hwmon/hist_memory
3926 echo 0 > $cpubw/bw_hwmon/hyst_length
3927 echo 80 > $cpubw/bw_hwmon/down_thres
3928 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
3929 echo 250 > $cpubw/bw_hwmon/up_scale
3930 echo 1600 > $cpubw/bw_hwmon/idle_mbps
3931 done
3932
3933 done
3934 # memlat specific settings are moved to seperate file under
3935 # device/target specific folder
3936 setprop vendor.dcvs.prop 1
3937
3938 # colcoation v3 disabled
3939 echo 0 > /proc/sys/kernel/sched_min_task_util_for_boost
3940 echo 0 > /proc/sys/kernel/sched_min_task_util_for_colocation
3941
3942 # Turn off scheduler boost at the end
3943 echo 0 > /proc/sys/kernel/sched_boost
3944
3945 # Turn on sleep modes
3946 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
3947
3948 ;;
3949 esac
3950
3951 # Scuba perf/power tunings
3952 case "$soc_id" in
3953 "441" )
3954
3955 # Quad-core device. disable core_ctl
3956 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
3957
3958 # Configure schedutil governor settings
3959 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3960 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
3961 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
3962 echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
3963 echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
3964 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rtg_boost_freq
3965
3966 # sched_load_boost as -6 is equivalent to target load as 85.
3967 echo 0 > /proc/sys/kernel/sched_boost
3968 echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost
3969 echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost
3970 echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost
3971 echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost
3972 echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load
3973
3974 # Set Memory parameters
3975 configure_memory_parameters
3976
3977 # Enable bus-dcvs
3978 ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type`
3979 ddr_type4="07"
3980 ddr_type3="05"
3981
3982 for device in /sys/devices/platform/soc
3983 do
3984 for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw
3985 do
3986 echo "bw_hwmon" > $cpubw/governor
3987 echo 50 > $cpubw/polling_interval
3988 echo 762 > $cpubw/min_freq
3989 if [ ${ddr_type:4:2} == $ddr_type4 ]; then
3990 # LPDDR4
3991 echo "2288 3440 4173 5195 5859 7759 10322 11863 13763" > $cpubw/bw_hwmon/mbps_zones
3992 echo 85 > $cpubw/bw_hwmon/io_percent
3993 fi
3994 if [ ${ddr_type:4:2} == $ddr_type3 ]; then
3995 # LPDDR3
3996 echo "1525 3440 5195 5859 7102" > $cpubw/bw_hwmon/mbps_zones
3997 echo 34 > $cpubw/bw_hwmon/io_percent
3998 fi
3999 echo 4 > $cpubw/bw_hwmon/sample_ms
4000 echo 90 > $cpubw/bw_hwmon/decay_rate
4001 echo 190 > $cpubw/bw_hwmon/bw_step
4002 echo 20 > $cpubw/bw_hwmon/hist_memory
4003 echo 0 > $cpubw/bw_hwmon/hyst_length
4004 echo 80 > $cpubw/bw_hwmon/down_thres
4005 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
4006 echo 250 > $cpubw/bw_hwmon/up_scale
4007 echo 1600 > $cpubw/bw_hwmon/idle_mbps
4008 done
4009
4010 for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat
4011 do
4012 echo "mem_latency" > $memlat/governor
4013 echo 10 > $memlat/polling_interval
4014 echo 400 > $memlat/mem_latency/ratio_ceil
4015 done
4016
4017 for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor*
4018 do
4019 echo "compute" > $latfloor/governor
4020 echo 10 > $latfloor/polling_interval
4021 done
4022 done
4023
4024 # Disable low power modes. Enable it after LPM stable
4025 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
4026 ;;
4027 esac
4028
4029 ;;
4030esac
4031
4032
4033#Apply settings for atoll
4034case "$target" in
4035 "atoll")
4036
4037 # Core control parameters on silver
4038 echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred
4039 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
4040 echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
4041 echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
4042 echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
4043 echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
4044 echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable
4045
4046 # Setting b.L scheduler parameters
4047 # default sched up and down migrate values are 95 and 85
4048 echo 65 > /proc/sys/kernel/sched_downmigrate
4049 echo 71 > /proc/sys/kernel/sched_upmigrate
4050 # default sched up and down migrate values are 100 and 95
4051 echo 85 > /proc/sys/kernel/sched_group_downmigrate
4052 echo 100 > /proc/sys/kernel/sched_group_upmigrate
4053 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
4054
4055 #colocation v3 settings
4056 echo 740000 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz
4057
4058 # configure governor settings for little cluster
4059 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
4060 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
4061 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
4062 echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
4063 echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
4064
4065 # configure governor settings for big cluster
4066 echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
4067 echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us
4068 echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us
4069 echo 1267200 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
4070 echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
4071
4072 # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable.
4073 echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost
4074 echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost
4075 echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load
4076
4077 echo "0:1248000" > /sys/module/cpu_boost/parameters/input_boost_freq
4078 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
4079
4080 # Set Memory parameters
4081 configure_memory_parameters
4082
4083 # Enable bus-dcvs
4084 for device in /sys/devices/platform/soc
4085 do
4086 for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
4087 do
4088 echo "bw_hwmon" > $cpubw/governor
4089 echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones
4090 echo 4 > $cpubw/bw_hwmon/sample_ms
4091 echo 68 > $cpubw/bw_hwmon/io_percent
4092 echo 20 > $cpubw/bw_hwmon/hist_memory
4093 echo 0 > $cpubw/bw_hwmon/hyst_length
4094 echo 80 > $cpubw/bw_hwmon/down_thres
4095 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
4096 echo 250 > $cpubw/bw_hwmon/up_scale
4097 echo 1600 > $cpubw/bw_hwmon/idle_mbps
4098 echo 50 > $cpubw/polling_interval
4099 done
4100
4101 for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
4102 do
4103 echo "bw_hwmon" > $llccbw/governor
4104 echo "1144 1720 2086 2929 3879 5931 6881 8137" > $llccbw/bw_hwmon/mbps_zones
4105 echo 4 > $llccbw/bw_hwmon/sample_ms
4106 echo 68 > $llccbw/bw_hwmon/io_percent
4107 echo 20 > $llccbw/bw_hwmon/hist_memory
4108 echo 0 > $llccbw/bw_hwmon/hyst_length
4109 echo 80 > $llccbw/bw_hwmon/down_thres
4110 echo 0 > $llccbw/bw_hwmon/guard_band_mbps
4111 echo 250 > $llccbw/bw_hwmon/up_scale
4112 echo 1600 > $llccbw/bw_hwmon/idle_mbps
4113 echo 40 > $llccbw/polling_interval
4114 done
4115
4116 for npubw in $device/*npu*-npu-ddr-bw/devfreq/*npu*-npu-ddr-bw
4117 do
4118 echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
4119 echo "bw_hwmon" > $npubw/governor
4120 echo "1144 1720 2086 2929 3879 5931 6881 8137" > $npubw/bw_hwmon/mbps_zones
4121 echo 4 > $npubw/bw_hwmon/sample_ms
4122 echo 80 > $npubw/bw_hwmon/io_percent
4123 echo 20 > $npubw/bw_hwmon/hist_memory
4124 echo 10 > $npubw/bw_hwmon/hyst_length
4125 echo 30 > $npubw/bw_hwmon/down_thres
4126 echo 0 > $npubw/bw_hwmon/guard_band_mbps
4127 echo 250 > $npubw/bw_hwmon/up_scale
4128 echo 0 > $npubw/bw_hwmon/idle_mbps
4129 echo 40 > $npubw/polling_interval
4130 echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
4131 done
4132
4133 done
4134
4135 # memlat specific settings are moved to seperate file under
4136 # device/target specific folder
4137 setprop vendor.dcvs.prop 1
4138
4139 # cpuset parameters
4140 echo 0-5 > /dev/cpuset/background/cpus
4141 echo 0-5 > /dev/cpuset/system-background/cpus
4142
4143 # Turn off scheduler boost at the end
4144 echo 0 > /proc/sys/kernel/sched_boost
4145
4146 # Turn on sleep modes
4147 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
4148 ;;
4149esac
4150
4151
4152case "$target" in
4153 "qcs605")
4154
4155 #Apply settings for qcs605
4156 # Set the default IRQ affinity to the silver cluster. When a
4157 # CPU is isolated/hotplugged, the IRQ affinity is adjusted
4158 # to one of the CPU from the default IRQ affinity mask.
4159 echo 3f > /proc/irq/default_smp_affinity
4160
4161 if [ -f /sys/devices/soc0/soc_id ]; then
4162 soc_id=`cat /sys/devices/soc0/soc_id`
4163 else
4164 soc_id=`cat /sys/devices/system/soc/soc0/id`
4165 fi
4166
4167 if [ -f /sys/devices/soc0/hw_platform ]; then
4168 hw_platform=`cat /sys/devices/soc0/hw_platform`
4169 else
4170 hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
4171 fi
4172
4173 if [ -f /sys/devices/soc0/platform_subtype_id ]; then
4174 platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
4175 fi
4176
4177 case "$soc_id" in
4178 "347" )
4179
4180 # Start Host based Touch processing
4181 case "$hw_platform" in
4182 "Surf" | "RCM" | "QRD" )
4183 start_hbtp
4184 ;;
4185 "MTP" )
4186 if [ $platform_subtype_id != 5 ]; then
4187 start_hbtp
4188 fi
4189 ;;
4190 esac
4191
4192 # Core control parameters on silver
4193 echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
4194 echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres
4195 echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres
4196 echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms
4197 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster
4198 echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres
4199
4200 # Setting b.L scheduler parameters
4201 echo 96 > /proc/sys/kernel/sched_upmigrate
4202 echo 90 > /proc/sys/kernel/sched_downmigrate
4203 echo 140 > /proc/sys/kernel/sched_group_upmigrate
4204 echo 120 > /proc/sys/kernel/sched_group_downmigrate
4205
4206 # configure governor settings for little cluster
4207 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
4208 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us
4209 echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
4210 echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
4211
4212 # configure governor settings for big cluster
4213 echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
4214 echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/rate_limit_us
4215 echo 1344000 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq
4216 echo 825600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq
4217
4218 echo "0:1209600" > /sys/module/cpu_boost/parameters/input_boost_freq
4219 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
4220
4221 # Enable bus-dcvs
4222 for cpubw in /sys/class/devfreq/*qcom,cpubw*
4223 do
4224 echo "bw_hwmon" > $cpubw/governor
4225 echo 50 > $cpubw/polling_interval
4226 echo "1144 1720 2086 2929 3879 5931 6881" > $cpubw/bw_hwmon/mbps_zones
4227 echo 4 > $cpubw/bw_hwmon/sample_ms
4228 echo 68 > $cpubw/bw_hwmon/io_percent
4229 echo 20 > $cpubw/bw_hwmon/hist_memory
4230 echo 0 > $cpubw/bw_hwmon/hyst_length
4231 echo 80 > $cpubw/bw_hwmon/down_thres
4232 echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps
4233 echo 68 > $cpubw/bw_hwmon/low_power_io_percent
4234 echo 20 > $cpubw/bw_hwmon/low_power_delay
4235 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
4236 echo 250 > $cpubw/bw_hwmon/up_scale
4237 echo 1600 > $cpubw/bw_hwmon/idle_mbps
4238 done
4239
4240 #Enable mem_latency governor for DDR scaling
4241 for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
4242 do
4243 echo "mem_latency" > $memlat/governor
4244 echo 10 > $memlat/polling_interval
4245 echo 400 > $memlat/mem_latency/ratio_ceil
4246 done
4247
4248 #Enable mem_latency governor for L3 scaling
4249 for memlat in /sys/class/devfreq/*qcom,l3-cpu*
4250 do
4251 echo "mem_latency" > $memlat/governor
4252 echo 10 > $memlat/polling_interval
4253 echo 400 > $memlat/mem_latency/ratio_ceil
4254 done
4255
4256 echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
4257
4258 # cpuset parameters
4259 echo 0-5 > /dev/cpuset/background/cpus
4260 echo 0-5 > /dev/cpuset/system-background/cpus
4261
4262 # Turn off scheduler boost at the end
4263 echo 0 > /proc/sys/kernel/sched_boost
4264
4265 # Turn on sleep modes.
4266 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
4267 echo 100 > /proc/sys/vm/swappiness
4268 ;;
4269 esac
4270 ;;
4271esac
4272
4273case "$target" in
4274 "apq8084")
4275 echo 4 > /sys/module/lpm_levels/enable_low_power/l2
4276 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
4277 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
4278 echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
4279 echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
4280 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
4281 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
4282 echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled
4283 echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled
4284 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
4285 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
4286 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
4287 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
4288 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
4289 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
4290 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
4291 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
4292 echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled
4293 echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled
4294 echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled
4295 echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled
4296 echo 0 > /sys/module/msm_thermal/core_control/enabled
4297 echo 1 > /sys/devices/system/cpu/cpu1/online
4298 echo 1 > /sys/devices/system/cpu/cpu2/online
4299 echo 1 > /sys/devices/system/cpu/cpu3/online
4300 for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor
4301 do
4302 echo "cpubw_hwmon" > $devfreq_gov
4303 done
4304 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
4305 echo "interactive" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
4306 echo "interactive" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
4307 echo "interactive" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
4308 echo "20000 1400000:40000 1700000:20000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
4309 echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
4310 echo 1497600 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
4311 echo "85 1500000:90 1800000:70" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
4312 echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
4313 echo 20 > /sys/module/cpu_boost/parameters/boost_ms
4314 echo 1728000 > /sys/module/cpu_boost/parameters/sync_threshold
4315 echo 100000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
4316 echo 1497600 > /sys/module/cpu_boost/parameters/input_boost_freq
4317 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
4318 echo 1 > /dev/cpuctl/apps/cpu.notify_on_migrate
4319 echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
4320 echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
4321 echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
4322 echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
4323 echo 1 > /sys/module/msm_thermal/core_control/enabled
4324 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
4325 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
4326 chown -h root.system /sys/devices/system/cpu/mfreq
4327 chmod -h 220 /sys/devices/system/cpu/mfreq
4328 chown -h root.system /sys/devices/system/cpu/cpu1/online
4329 chown -h root.system /sys/devices/system/cpu/cpu2/online
4330 chown -h root.system /sys/devices/system/cpu/cpu3/online
4331 chmod -h 664 /sys/devices/system/cpu/cpu1/online
4332 chmod -h 664 /sys/devices/system/cpu/cpu2/online
4333 chmod -h 664 /sys/devices/system/cpu/cpu3/online
4334 ;;
4335esac
4336
4337case "$target" in
4338 "mpq8092")
4339 echo 4 > /sys/module/lpm_levels/enable_low_power/l2
4340 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled
4341 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled
4342 echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled
4343 echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled
4344 echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled
4345 echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled
4346 echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled
4347 echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled
4348 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled
4349 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled
4350 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled
4351 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled
4352 echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled
4353 echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled
4354 echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled
4355 echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled
4356 echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled
4357 echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled
4358 echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled
4359 echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled
4360 echo 0 > /sys/module/msm_thermal/core_control/enabled
4361 echo 1 > /sys/devices/system/cpu/cpu1/online
4362 echo 1 > /sys/devices/system/cpu/cpu2/online
4363 echo 1 > /sys/devices/system/cpu/cpu3/online
4364 echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
4365 echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
4366 echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
4367 echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
4368 echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
4369 echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
4370 echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
4371 echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
4372 echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
4373 echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
4374 echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq
4375 echo 1 > /sys/module/msm_thermal/core_control/enabled
4376 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
4377 chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
4378 chown -h root.system /sys/devices/system/cpu/mfreq
4379 chmod -h 220 /sys/devices/system/cpu/mfreq
4380 chown -h root.system /sys/devices/system/cpu/cpu1/online
4381 chown -h root.system /sys/devices/system/cpu/cpu2/online
4382 chown -h root.system /sys/devices/system/cpu/cpu3/online
4383 chmod -h 664 /sys/devices/system/cpu/cpu1/online
4384 chmod -h 664 /sys/devices/system/cpu/cpu2/online
4385 chmod -h 664 /sys/devices/system/cpu/cpu3/online
4386 ;;
4387esac
4388
4389case "$target" in
4390 "msm8992")
4391 # disable thermal bcl hotplug to switch governor
4392 echo 0 > /sys/module/msm_thermal/core_control/enabled
4393 echo -n disable > /sys/devices/soc.*/qcom,bcl.*/mode
4394 bcl_hotplug_mask=`cat /sys/devices/soc.*/qcom,bcl.*/hotplug_mask`
4395 echo 0 > /sys/devices/soc.*/qcom,bcl.*/hotplug_mask
4396 echo -n enable > /sys/devices/soc.*/qcom,bcl.*/mode
4397 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
4398 # configure governor settings for little cluster
4399 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
4400 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
4401 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
4402 echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
4403 echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
4404 echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
4405 echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
4406 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
4407 echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
4408 echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
4409 echo 80000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
4410 echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
4411 # online CPU4
4412 echo 1 > /sys/devices/system/cpu/cpu4/online
4413 # configure governor settings for big cluster
4414 echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
4415 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
4416 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
4417 echo 19000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
4418 echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
4419 echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
4420 echo 1536000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
4421 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
4422 echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
4423 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
4424 echo 80000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
4425 echo 384000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
4426 # re-enable thermal and BCL hotplug
4427 echo 1 > /sys/module/msm_thermal/core_control/enabled
4428 echo -n disable > /sys/devices/soc.*/qcom,bcl.*/mode
4429 echo $bcl_hotplug_mask > /sys/devices/soc.*/qcom,bcl.*/hotplug_mask
4430 echo $bcl_soc_hotplug_mask > /sys/devices/soc.*/qcom,bcl.*/hotplug_soc_mask
4431 echo -n enable > /sys/devices/soc.*/qcom,bcl.*/mode
4432 # plugin remaining A57s
4433 echo 1 > /sys/devices/system/cpu/cpu5/online
4434 # input boost configuration
4435 echo 0:1248000 > /sys/module/cpu_boost/parameters/input_boost_freq
4436 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
4437 # Enable task migration fixups in the scheduler
4438 echo 1 > /proc/sys/kernel/sched_migration_fixup
4439 for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor
4440 do
4441 echo "bw_hwmon" > $devfreq_gov
4442 done
4443 #enable rps static configuration
4444 echo 8 > /sys/class/net/rmnet_ipa0/queues/rx-0/rps_cpus
4445 echo 30 > /proc/sys/kernel/sched_small_task
4446 ;;
4447esac
4448
4449case "$target" in
4450 "msm8994")
4451 # ensure at most one A57 is online when thermal hotplug is disabled
4452 echo 0 > /sys/devices/system/cpu/cpu5/online
4453 echo 0 > /sys/devices/system/cpu/cpu6/online
4454 echo 0 > /sys/devices/system/cpu/cpu7/online
4455 # in case CPU4 is online, limit its frequency
4456 echo 960000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
4457 # Limit A57 max freq from msm_perf module in case CPU 4 is offline
4458 echo "4:960000 5:960000 6:960000 7:960000" > /sys/module/msm_performance/parameters/cpu_max_freq
4459 # disable thermal bcl hotplug to switch governor
4460 echo 0 > /sys/module/msm_thermal/core_control/enabled
4461 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
4462 do
4463 echo -n disable > $mode
4464 done
4465 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
4466 do
4467 bcl_hotplug_mask=`cat $hotplug_mask`
4468 echo 0 > $hotplug_mask
4469 done
4470 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
4471 do
4472 bcl_soc_hotplug_mask=`cat $hotplug_soc_mask`
4473 echo 0 > $hotplug_soc_mask
4474 done
4475 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
4476 do
4477 echo -n enable > $mode
4478 done
4479 # configure governor settings for little cluster
4480 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
4481 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
4482 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
4483 echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
4484 echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
4485 echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
4486 echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
4487 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
4488 echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
4489 echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
4490 echo 80000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
4491 echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
4492 # online CPU4
4493 echo 1 > /sys/devices/system/cpu/cpu4/online
4494 # Best effort limiting for first time boot if msm_performance module is absent
4495 echo 960000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
4496 # configure governor settings for big cluster
4497 echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
4498 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
4499 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
4500 echo "19000 1400000:39000 1700000:19000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
4501 echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
4502 echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
4503 echo 1248000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
4504 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
4505 echo "85 1500000:90 1800000:70" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
4506 echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
4507 echo 80000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
4508 echo 384000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
4509 # restore A57's max
4510 cat /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_max_freq > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
4511 # re-enable thermal and BCL hotplug
4512 echo 1 > /sys/module/msm_thermal/core_control/enabled
4513 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
4514 do
4515 echo -n disable > $mode
4516 done
4517 for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask
4518 do
4519 echo $bcl_hotplug_mask > $hotplug_mask
4520 done
4521 for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask
4522 do
4523 echo $bcl_soc_hotplug_mask > $hotplug_soc_mask
4524 done
4525 for mode in /sys/devices/soc.0/qcom,bcl.*/mode
4526 do
4527 echo -n enable > $mode
4528 done
4529 # plugin remaining A57s
4530 echo 1 > /sys/devices/system/cpu/cpu5/online
4531 echo 1 > /sys/devices/system/cpu/cpu6/online
4532 echo 1 > /sys/devices/system/cpu/cpu7/online
4533 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
4534 # Restore CPU 4 max freq from msm_performance
4535 echo "4:4294967295 5:4294967295 6:4294967295 7:4294967295" > /sys/module/msm_performance/parameters/cpu_max_freq
4536 # input boost configuration
4537 echo 0:1344000 > /sys/module/cpu_boost/parameters/input_boost_freq
4538 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
4539 # Setting b.L scheduler parameters
4540 echo 1 > /proc/sys/kernel/sched_migration_fixup
4541 echo 30 > /proc/sys/kernel/sched_small_task
4542 echo 20 > /proc/sys/kernel/sched_mostly_idle_load
4543 echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run
4544 echo 99 > /proc/sys/kernel/sched_upmigrate
4545 echo 85 > /proc/sys/kernel/sched_downmigrate
4546 echo 400000 > /proc/sys/kernel/sched_freq_inc_notify
4547 echo 400000 > /proc/sys/kernel/sched_freq_dec_notify
4548 #enable rps static configuration
4549 echo 8 > /sys/class/net/rmnet_ipa0/queues/rx-0/rps_cpus
4550 for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor
4551 do
4552 echo "bw_hwmon" > $devfreq_gov
4553 done
4554 ;;
4555esac
4556
4557case "$target" in
4558 "msm8996")
4559 # disable thermal bcl hotplug to switch governor
4560 echo 0 > /sys/module/msm_thermal/core_control/enabled
4561 echo -n disable > /sys/devices/soc/soc:qcom,bcl/mode
4562 bcl_hotplug_mask=`cat /sys/devices/soc/soc:qcom,bcl/hotplug_mask`
4563 echo 0 > /sys/devices/soc/soc:qcom,bcl/hotplug_mask
4564 bcl_soc_hotplug_mask=`cat /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask`
4565 echo 0 > /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask
4566 echo -n enable > /sys/devices/soc/soc:qcom,bcl/mode
4567 # set sync wakee policy tunable
4568 echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker
4569 # configure governor settings for little cluster
4570 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
4571 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
4572 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
4573 echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
4574 echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
4575 echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
4576 echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
4577 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
4578 echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
4579 echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
4580 echo 79000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
4581 echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
4582 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
4583 # online CPU2
4584 echo 1 > /sys/devices/system/cpu/cpu2/online
4585 # configure governor settings for big cluster
4586 echo "interactive" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
4587 echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_sched_load
4588 echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_migration_notif
4589 echo "19000 1400000:39000 1700000:19000 2100000:79000" > /sys/devices/system/cpu/cpu2/cpufreq/interactive/above_hispeed_delay
4590 echo 90 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/go_hispeed_load
4591 echo 20000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/timer_rate
4592 echo 1248000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/hispeed_freq
4593 echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/io_is_busy
4594 echo "85 1500000:90 1800000:70 2100000:95" > /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
4595 echo 19000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/min_sample_time
4596 echo 79000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/max_freq_hysteresis
4597 echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq
4598 echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/ignore_hispeed_on_notif
4599 # re-enable thermal and BCL hotplug
4600 echo 1 > /sys/module/msm_thermal/core_control/enabled
4601 echo -n disable > /sys/devices/soc/soc:qcom,bcl/mode
4602 echo $bcl_hotplug_mask > /sys/devices/soc/soc:qcom,bcl/hotplug_mask
4603 echo $bcl_soc_hotplug_mask > /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask
4604 echo -n enable > /sys/devices/soc/soc:qcom,bcl/mode
4605 # input boost configuration
4606 echo "0:1324800 2:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq
4607 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
4608 # Setting b.L scheduler parameters
4609 echo 0 > /proc/sys/kernel/sched_boost
4610 echo 1 > /proc/sys/kernel/sched_migration_fixup
4611 echo 45 > /proc/sys/kernel/sched_downmigrate
4612 echo 45 > /proc/sys/kernel/sched_upmigrate
4613 echo 400000 > /proc/sys/kernel/sched_freq_inc_notify
4614 echo 400000 > /proc/sys/kernel/sched_freq_dec_notify
4615 echo 3 > /proc/sys/kernel/sched_spill_nr_run
4616 echo 100 > /proc/sys/kernel/sched_init_task_load
4617 # Enable bus-dcvs
4618 for cpubw in /sys/class/devfreq/*qcom,cpubw*
4619 do
4620 echo "bw_hwmon" > $cpubw/governor
4621 echo 50 > $cpubw/polling_interval
4622 echo 1525 > $cpubw/min_freq
4623 echo "1525 5195 11863 13763" > $cpubw/bw_hwmon/mbps_zones
4624 echo 4 > $cpubw/bw_hwmon/sample_ms
4625 echo 34 > $cpubw/bw_hwmon/io_percent
4626 echo 20 > $cpubw/bw_hwmon/hist_memory
4627 echo 10 > $cpubw/bw_hwmon/hyst_length
4628 echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps
4629 echo 34 > $cpubw/bw_hwmon/low_power_io_percent
4630 echo 20 > $cpubw/bw_hwmon/low_power_delay
4631 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
4632 echo 250 > $cpubw/bw_hwmon/up_scale
4633 echo 1600 > $cpubw/bw_hwmon/idle_mbps
4634 done
4635
4636 for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
4637 do
4638 echo "mem_latency" > $memlat/governor
4639 echo 10 > $memlat/polling_interval
4640 done
4641 echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
4642
4643 soc_revision=`cat /sys/devices/soc0/revision`
4644 if [ "$soc_revision" == "2.0" ]; then
4645 #Disable suspend for v2.0
4646 echo pwr_dbg > /sys/power/wake_lock
4647 elif [ "$soc_revision" == "2.1" ]; then
4648 # Enable C4.D4.E4.M3 LPM modes
4649 # Disable D3 state
4650 echo 0 > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/idle_enabled
4651 echo 0 > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/idle_enabled
4652 # Disable DEF-FPC mode
4653 echo N > /sys/module/lpm_levels/system/pwr/cpu0/fpc-def/idle_enabled
4654 echo N > /sys/module/lpm_levels/system/pwr/cpu1/fpc-def/idle_enabled
4655 echo N > /sys/module/lpm_levels/system/perf/cpu2/fpc-def/idle_enabled
4656 echo N > /sys/module/lpm_levels/system/perf/cpu3/fpc-def/idle_enabled
4657 else
4658 # Enable all LPMs by default
4659 # This will enable C4, D4, D3, E4 and M3 LPMs
4660 echo N > /sys/module/lpm_levels/parameters/sleep_disabled
4661 fi
4662 echo N > /sys/module/lpm_levels/parameters/sleep_disabled
4663 # Starting io prefetcher service
4664 start iop
4665
4666 # Set Memory parameters
4667 configure_memory_parameters
4668 ;;
4669esac
4670
4671case "$target" in
4672 "sdm845")
4673
4674 # Set the default IRQ affinity to the silver cluster. When a
4675 # CPU is isolated/hotplugged, the IRQ affinity is adjusted
4676 # to one of the CPU from the default IRQ affinity mask.
4677 echo f > /proc/irq/default_smp_affinity
4678
4679 if [ -f /sys/devices/soc0/soc_id ]; then
4680 soc_id=`cat /sys/devices/soc0/soc_id`
4681 else
4682 soc_id=`cat /sys/devices/system/soc/soc0/id`
4683 fi
4684
4685 if [ -f /sys/devices/soc0/hw_platform ]; then
4686 hw_platform=`cat /sys/devices/soc0/hw_platform`
4687 fi
4688
4689 if [ -f /sys/devices/soc0/platform_subtype_id ]; then
4690 platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
4691 fi
4692
4693 case "$soc_id" in
4694 "321" | "341")
4695 # Start Host based Touch processing
4696 case "$hw_platform" in
4697 "QRD" )
4698 case "$platform_subtype_id" in
4699 "32") #QVR845 do nothing
4700 ;;
4701 *)
4702 start_hbtp
4703 ;;
4704 esac
4705 ;;
4706 *)
4707 start_hbtp
4708 ;;
4709 esac
4710 ;;
4711 esac
4712 # Core control parameters
4713 echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
4714 echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
4715 echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
4716 echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
4717 echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster
4718 echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
4719
4720 # Setting b.L scheduler parameters
4721 echo 95 > /proc/sys/kernel/sched_upmigrate
4722 echo 85 > /proc/sys/kernel/sched_downmigrate
4723 echo 100 > /proc/sys/kernel/sched_group_upmigrate
4724 echo 95 > /proc/sys/kernel/sched_group_downmigrate
4725 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
4726
4727 # configure governor settings for little cluster
4728 echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
4729 echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us
4730 echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq
4731 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/pl
4732 echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
4733
4734 # configure governor settings for big cluster
4735 echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
4736 echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/rate_limit_us
4737 echo 1574400 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq
4738 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/pl
4739 echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq
4740 echo 120 > /sys/module/cpu_boost/parameters/input_boost_ms
4741 # Limit the min frequency to 825MHz
4742 echo 825000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
4743
4744 # Enable oom_reaper
4745 echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper
4746
4747 # Enable bus-dcvs
4748 for cpubw in /sys/class/devfreq/*qcom,cpubw*
4749 do
4750 echo "bw_hwmon" > $cpubw/governor
4751 echo 50 > $cpubw/polling_interval
4752 echo "2288 4577 6500 8132 9155 10681" > $cpubw/bw_hwmon/mbps_zones
4753 echo 4 > $cpubw/bw_hwmon/sample_ms
4754 echo 50 > $cpubw/bw_hwmon/io_percent
4755 echo 20 > $cpubw/bw_hwmon/hist_memory
4756 echo 10 > $cpubw/bw_hwmon/hyst_length
4757 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
4758 echo 250 > $cpubw/bw_hwmon/up_scale
4759 echo 1600 > $cpubw/bw_hwmon/idle_mbps
4760 done
4761
4762 for llccbw in /sys/class/devfreq/*qcom,llccbw*
4763 do
4764 echo "bw_hwmon" > $llccbw/governor
4765 echo 50 > $llccbw/polling_interval
4766 echo "1720 2929 3879 5931 6881" > $llccbw/bw_hwmon/mbps_zones
4767 echo 4 > $llccbw/bw_hwmon/sample_ms
4768 echo 80 > $llccbw/bw_hwmon/io_percent
4769 echo 20 > $llccbw/bw_hwmon/hist_memory
4770 echo 10 > $llccbw/bw_hwmon/hyst_length
4771 echo 0 > $llccbw/bw_hwmon/guard_band_mbps
4772 echo 250 > $llccbw/bw_hwmon/up_scale
4773 echo 1600 > $llccbw/bw_hwmon/idle_mbps
4774 done
4775
4776 #Enable mem_latency governor for DDR scaling
4777 for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
4778 do
4779 echo "mem_latency" > $memlat/governor
4780 echo 10 > $memlat/polling_interval
4781 echo 400 > $memlat/mem_latency/ratio_ceil
4782 done
4783
4784 #Enable mem_latency governor for L3 scaling
4785 for memlat in /sys/class/devfreq/*qcom,l3-cpu*
4786 do
4787 echo "mem_latency" > $memlat/governor
4788 echo 10 > $memlat/polling_interval
4789 echo 400 > $memlat/mem_latency/ratio_ceil
4790 done
4791
4792 #Enable userspace governor for L3 cdsp nodes
4793 for l3cdsp in /sys/class/devfreq/*qcom,l3-cdsp*
4794 do
4795 echo "userspace" > $l3cdsp/governor
4796 chown -h system $l3cdsp/userspace/set_freq
4797 done
4798
4799 #Gold L3 ratio ceil
4800 echo 4000 > /sys/class/devfreq/soc:qcom,l3-cpu4/mem_latency/ratio_ceil
4801
4802 echo "compute" > /sys/class/devfreq/soc:qcom,mincpubw/governor
4803 echo 10 > /sys/class/devfreq/soc:qcom,mincpubw/polling_interval
4804
4805 # cpuset parameters
4806 echo 0-3 > /dev/cpuset/background/cpus
4807 echo 0-3 > /dev/cpuset/system-background/cpus
4808
4809 # Turn off scheduler boost at the end
4810 echo 0 > /proc/sys/kernel/sched_boost
4811 # Disable CPU Retention
4812 echo N > /sys/module/lpm_levels/L3/cpu0/ret/idle_enabled
4813 echo N > /sys/module/lpm_levels/L3/cpu1/ret/idle_enabled
4814 echo N > /sys/module/lpm_levels/L3/cpu2/ret/idle_enabled
4815 echo N > /sys/module/lpm_levels/L3/cpu3/ret/idle_enabled
4816 echo N > /sys/module/lpm_levels/L3/cpu4/ret/idle_enabled
4817 echo N > /sys/module/lpm_levels/L3/cpu5/ret/idle_enabled
4818 echo N > /sys/module/lpm_levels/L3/cpu6/ret/idle_enabled
4819 echo N > /sys/module/lpm_levels/L3/cpu7/ret/idle_enabled
4820 echo N > /sys/module/lpm_levels/L3/l3-dyn-ret/idle_enabled
4821 # Turn on sleep modes.
4822 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
4823 echo 100 > /proc/sys/vm/swappiness
4824 echo 120 > /proc/sys/vm/watermark_scale_factor
4825 ;;
4826esac
4827
4828case "$target" in
4829 "msmnile")
4830 # Core control parameters for gold
4831 echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
4832 echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
4833 echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
4834 echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
4835 echo 3 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
4836
4837 # Core control parameters for gold+
4838 echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/min_cpus
4839 echo 60 > /sys/devices/system/cpu/cpu7/core_ctl/busy_up_thres
4840 echo 30 > /sys/devices/system/cpu/cpu7/core_ctl/busy_down_thres
4841 echo 100 > /sys/devices/system/cpu/cpu7/core_ctl/offline_delay_ms
4842 echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/task_thres
4843 # Controls how many more tasks should be eligible to run on gold CPUs
4844 # w.r.t number of gold CPUs available to trigger assist (max number of
4845 # tasks eligible to run on previous cluster minus number of CPUs in
4846 # the previous cluster).
4847 #
4848 # Setting to 1 by default which means there should be at least
4849 # 4 tasks eligible to run on gold cluster (tasks running on gold cores
4850 # plus misfit tasks on silver cores) to trigger assitance from gold+.
4851 echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/nr_prev_assist_thresh
4852
4853 # Disable Core control on silver
4854 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
4855
4856 # Setting b.L scheduler parameters
4857 echo 95 95 > /proc/sys/kernel/sched_upmigrate
4858 echo 85 85 > /proc/sys/kernel/sched_downmigrate
4859 echo 100 > /proc/sys/kernel/sched_group_upmigrate
4860 echo 10 > /proc/sys/kernel/sched_group_downmigrate
4861 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
4862
4863 # cpuset parameters
4864 echo 0-3 > /dev/cpuset/background/cpus
4865 echo 0-3 > /dev/cpuset/system-background/cpus
4866
4867 # Turn off scheduler boost at the end
4868 echo 0 > /proc/sys/kernel/sched_boost
4869
4870 # configure governor settings for silver cluster
4871 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
4872 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us
4873 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
4874 echo 1209600 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
4875 echo 576000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
4876 echo 1 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
4877
4878 # configure governor settings for gold cluster
4879 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
4880 echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us
4881 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
4882 echo 1612800 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/hispeed_freq
4883 echo 1 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/pl
4884
4885 # configure governor settings for gold+ cluster
4886 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor
4887 echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us
4888 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
4889 echo 1612800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
4890 echo 1 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl
4891
4892 # configure input boost settings
4893 echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq
4894 echo 120 > /sys/module/cpu_boost/parameters/input_boost_ms
4895
4896 # Disable wsf, beacause we are using efk.
4897 # wsf Range : 1..1000 So set to bare minimum value 1.
4898 echo 1 > /proc/sys/vm/watermark_scale_factor
4899
4900 echo 0-3 > /dev/cpuset/background/cpus
4901 echo 0-3 > /dev/cpuset/system-background/cpus
4902
4903 # Enable oom_reaper
4904 if [ -f /sys/module/lowmemorykiller/parameters/oom_reaper ]; then
4905 echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper
4906 else
4907 echo 1 > /proc/sys/vm/reap_mem_on_sigkill
4908 fi
4909
4910 # Enable bus-dcvs
4911 for device in /sys/devices/platform/soc
4912 do
4913 for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
4914 do
4915 echo "bw_hwmon" > $cpubw/governor
4916 echo "2288 4577 7110 9155 12298 14236 15258" > $cpubw/bw_hwmon/mbps_zones
4917 echo 4 > $cpubw/bw_hwmon/sample_ms
4918 echo 50 > $cpubw/bw_hwmon/io_percent
4919 echo 20 > $cpubw/bw_hwmon/hist_memory
4920 echo 10 > $cpubw/bw_hwmon/hyst_length
4921 echo 30 > $cpubw/bw_hwmon/down_thres
4922 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
4923 echo 250 > $cpubw/bw_hwmon/up_scale
4924 echo 1600 > $cpubw/bw_hwmon/idle_mbps
4925 echo 14236 > $cpubw/max_freq
4926 echo 40 > $cpubw/polling_interval
4927 done
4928
4929 for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
4930 do
4931 echo "bw_hwmon" > $llccbw/governor
4932 echo "1720 2929 3879 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones
4933 echo 4 > $llccbw/bw_hwmon/sample_ms
4934 echo 80 > $llccbw/bw_hwmon/io_percent
4935 echo 20 > $llccbw/bw_hwmon/hist_memory
4936 echo 10 > $llccbw/bw_hwmon/hyst_length
4937 echo 30 > $llccbw/bw_hwmon/down_thres
4938 echo 0 > $llccbw/bw_hwmon/guard_band_mbps
4939 echo 250 > $llccbw/bw_hwmon/up_scale
4940 echo 1600 > $llccbw/bw_hwmon/idle_mbps
4941 echo 6881 > $llccbw/max_freq
4942 echo 40 > $llccbw/polling_interval
4943 done
4944
4945 for npubw in $device/*npu-npu-ddr-bw/devfreq/*npu-npu-ddr-bw
4946 do
4947 echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
4948 echo "bw_hwmon" > $npubw/governor
4949 echo "1720 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones
4950 echo 4 > $npubw/bw_hwmon/sample_ms
4951 echo 80 > $npubw/bw_hwmon/io_percent
4952 echo 20 > $npubw/bw_hwmon/hist_memory
4953 echo 6 > $npubw/bw_hwmon/hyst_length
4954 echo 30 > $npubw/bw_hwmon/down_thres
4955 echo 0 > $npubw/bw_hwmon/guard_band_mbps
4956 echo 250 > $npubw/bw_hwmon/up_scale
4957 echo 0 > $npubw/bw_hwmon/idle_mbps
4958 echo 40 > $npubw/polling_interval
4959 echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
4960 done
4961 done
4962
4963 # memlat specific settings are moved to seperate file under
4964 # device/target specific folder
4965 setprop vendor.dcvs.prop 1
4966
4967 if [ -f /sys/devices/soc0/hw_platform ]; then
4968 hw_platform=`cat /sys/devices/soc0/hw_platform`
4969 else
4970 hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
4971 fi
4972
4973 if [ -f /sys/devices/soc0/platform_subtype_id ]; then
4974 platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
4975 fi
4976
4977 case "$hw_platform" in
4978 "MTP" | "Surf" | "RCM" )
4979 # Start Host based Touch processing
4980 case "$platform_subtype_id" in
4981 "0" | "1" | "2" | "3" | "4")
4982 start_hbtp
4983 ;;
4984 esac
4985 ;;
4986 "HDK" )
4987 if [ -d /sys/kernel/hbtpsensor ] ; then
4988 start_hbtp
4989 fi
4990 ;;
4991 esac
4992
4993 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
4994 configure_memory_parameters
4995 target_type=`getprop ro.hardware.type`
4996 if [ "$target_type" == "automotive" ]; then
4997 # update frequencies
4998 configure_automotive_sku_parameters
4999 fi
5000
5001 ;;
5002esac
5003
5004case "$target" in
5005 "sdmshrike")
5006 # Core control parameters for gold
5007 echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
5008 echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
5009 echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
5010 echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
5011 echo 3 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
5012
5013 # Core control parameters for gold+
5014 echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/min_cpus
5015 echo 60 > /sys/devices/system/cpu/cpu7/core_ctl/busy_up_thres
5016 echo 30 > /sys/devices/system/cpu/cpu7/core_ctl/busy_down_thres
5017 echo 100 > /sys/devices/system/cpu/cpu7/core_ctl/offline_delay_ms
5018 echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/task_thres
5019 # Controls how many more tasks should be eligible to run on gold CPUs
5020 # w.r.t number of gold CPUs available to trigger assist (max number of
5021 # tasks eligible to run on previous cluster minus number of CPUs in
5022 # the previous cluster).
5023 #
5024 # Setting to 1 by default which means there should be at least
5025 # 4 tasks eligible to run on gold cluster (tasks running on gold cores
5026 # plus misfit tasks on silver cores) to trigger assitance from gold+.
5027 echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/nr_prev_assist_thresh
5028
5029 # Disable Core control on silver
5030 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
5031
5032 # Setting b.L scheduler parameters
5033 echo 95 95 > /proc/sys/kernel/sched_upmigrate
5034 echo 85 85 > /proc/sys/kernel/sched_downmigrate
5035 echo 100 > /proc/sys/kernel/sched_group_upmigrate
5036 echo 10 > /proc/sys/kernel/sched_group_downmigrate
5037 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
5038
5039 # cpuset parameters
5040 echo 0-3 > /dev/cpuset/background/cpus
5041 echo 0-3 > /dev/cpuset/system-background/cpus
5042
5043 # Turn off scheduler boost at the end
5044 echo 0 > /proc/sys/kernel/sched_boost
5045
5046 # configure governor settings for silver cluster
5047 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
5048 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us
5049 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
5050 echo 1209600 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
5051 echo 576000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
5052 echo 1 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
5053
5054 # configure governor settings for gold cluster
5055 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
5056 echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us
5057 echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/down_rate_limit_us
5058 echo 1612800 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/hispeed_freq
5059 echo 1 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/pl
5060
5061 # configure governor settings for gold+ cluster
5062 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor
5063 echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us
5064 echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/down_rate_limit_us
5065 echo 1612800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
5066 echo 1 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl
5067
5068 # configure input boost settings
5069 echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq
5070 echo 120 > /sys/module/cpu_boost/parameters/input_boost_ms
5071
5072 # Disable wsf, beacause we are using efk.
5073 # wsf Range : 1..1000 So set to bare minimum value 1.
5074 echo 1 > /proc/sys/vm/watermark_scale_factor
5075
5076 echo 0-3 > /dev/cpuset/background/cpus
5077 echo 0-3 > /dev/cpuset/system-background/cpus
5078
5079 # Enable oom_reaper
5080 if [ -f /sys/module/lowmemorykiller/parameters/oom_reaper ]; then
5081 echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper
5082 else
5083 echo 1 > /proc/sys/vm/reap_mem_on_sigkill
5084 fi
5085
5086 # Enable bus-dcvs
5087 for device in /sys/devices/platform/soc
5088 do
5089 for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
5090 do
5091 echo "bw_hwmon" > $cpubw/governor
5092 echo 40 > $cpubw/polling_interval
5093 echo "2288 4577 7110 9155 12298 14236 15258" > $cpubw/bw_hwmon/mbps_zones
5094 echo 4 > $cpubw/bw_hwmon/sample_ms
5095 echo 50 > $cpubw/bw_hwmon/io_percent
5096 echo 20 > $cpubw/bw_hwmon/hist_memory
5097 echo 10 > $cpubw/bw_hwmon/hyst_length
5098 echo 30 > $cpubw/bw_hwmon/down_thres
5099 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
5100 echo 250 > $cpubw/bw_hwmon/up_scale
5101 echo 1600 > $cpubw/bw_hwmon/idle_mbps
5102 echo 14236 > $cpubw/max_freq
5103 done
5104
5105 for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
5106 do
5107 echo "bw_hwmon" > $llccbw/governor
5108 echo 40 > $llccbw/polling_interval
5109 echo "1720 2929 3879 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones
5110 echo 4 > $llccbw/bw_hwmon/sample_ms
5111 echo 80 > $llccbw/bw_hwmon/io_percent
5112 echo 20 > $llccbw/bw_hwmon/hist_memory
5113 echo 10 > $llccbw/bw_hwmon/hyst_length
5114 echo 30 > $llccbw/bw_hwmon/down_thres
5115 echo 0 > $llccbw/bw_hwmon/guard_band_mbps
5116 echo 250 > $llccbw/bw_hwmon/up_scale
5117 echo 1600 > $llccbw/bw_hwmon/idle_mbps
5118 echo 6881 > $llccbw/max_freq
5119 done
5120
5121 for npubw in $device/*npu-npu-ddr-bw/devfreq/*npu-npu-ddr-bw
5122 do
5123 echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
5124 echo "bw_hwmon" > $npubw/governor
5125 echo 40 > $npubw/polling_interval
5126 echo "1720 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones
5127 echo 4 > $npubw/bw_hwmon/sample_ms
5128 echo 80 > $npubw/bw_hwmon/io_percent
5129 echo 20 > $npubw/bw_hwmon/hist_memory
5130 echo 6 > $npubw/bw_hwmon/hyst_length
5131 echo 30 > $npubw/bw_hwmon/down_thres
5132 echo 0 > $npubw/bw_hwmon/guard_band_mbps
5133 echo 250 > $npubw/bw_hwmon/up_scale
5134 echo 0 > $npubw/bw_hwmon/idle_mbps
5135 echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
5136 done
5137
5138 #Enable mem_latency governor for L3, LLCC, and DDR scaling
5139 for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat
5140 do
5141 echo "mem_latency" > $memlat/governor
5142 echo 10 > $memlat/polling_interval
5143 echo 400 > $memlat/mem_latency/ratio_ceil
5144 done
5145
5146 #Enable userspace governor for L3 cdsp nodes
5147 for l3cdsp in $device/*cdsp-cdsp-l3-lat/devfreq/*cdsp-cdsp-l3-lat
5148 do
5149 echo "cdspl3" > $l3cdsp/governor
5150 done
5151
5152 #Enable compute governor for gold latfloor
5153 for latfloor in $device/*cpu-ddr-latfloor*/devfreq/*cpu-ddr-latfloor*
5154 do
5155 echo "compute" > $latfloor/governor
5156 echo 10 > $latfloor/polling_interval
5157 done
5158
5159 #Gold L3 ratio ceil
5160 for l3gold in $device/*cpu4-cpu-l3-lat/devfreq/*cpu4-cpu-l3-lat
5161 do
5162 echo 4000 > $l3gold/mem_latency/ratio_ceil
5163 done
5164
5165 #Prime L3 ratio ceil
5166 for l3prime in $device/*cpu7-cpu-l3-lat/devfreq/*cpu7-cpu-l3-lat
5167 do
5168 echo 20000 > $l3prime/mem_latency/ratio_ceil
5169 done
5170 done
5171
5172 if [ -f /sys/devices/soc0/hw_platform ]; then
5173 hw_platform=`cat /sys/devices/soc0/hw_platform`
5174 else
5175 hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
5176 fi
5177
5178 if [ -f /sys/devices/soc0/platform_subtype_id ]; then
5179 platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
5180 fi
5181
5182 case "$hw_platform" in
5183 "MTP" | "Surf" | "RCM" )
5184 # Start Host based Touch processing
5185 case "$platform_subtype_id" in
5186 "0" | "1")
5187 start_hbtp
5188 ;;
5189 esac
5190 ;;
5191 "HDK" )
5192 if [ -d /sys/kernel/hbtpsensor ] ; then
5193 start_hbtp
5194 fi
5195 ;;
5196 esac
5197
5198 #Setting the min and max supported frequencies
5199 reg_val=`cat /sys/devices/platform/soc/780130.qfprom/qfprom0/nvmem | od -An -t d4`
5200 feature_id=$(((reg_val >> 20) & 0xFF))
5201
5202 #Setting the min supported frequencies
5203 echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
5204 echo 1171200 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
5205 echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq
5206 echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/min_freq
5207 echo 1651200000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq
5208 echo 1651200000 > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/max_freq
5209 #setting min gpu freq to 392 MHz
5210 echo 4 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel
5211 if [ $feature_id == 0 ]; then
5212 echo "feature_id is 0 for SA8195AA"
5213
5214 #setting max cpu freq to 2.496GHz
5215 echo 2496000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
5216 #setting max gpu freq to 530 MHz
5217 echo 3 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
5218 elif [ $feature_id == 1 ] || [ $feature_id == 2 ]; then
5219 echo "feature_id is 1 for external SA8195AB"
5220 echo "feature_id is 2 for internal SA8195AB"
5221
5222 #setting max cpu freq to 2.496GHz
5223 echo 2496000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq
5224 #setting max gpu freq to 670 MHz
5225 echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel
5226 elif [ $feature_id == 3 ]; then
5227 echo "feature_id is 3 for external SA8195AC"
5228 else
5229 echo "unknown feature_id value" $feature_id
5230 fi
5231
5232 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
5233 configure_memory_parameters
5234 ;;
5235esac
5236
5237case "$target" in
5238 "kona")
5239 rev=`cat /sys/devices/soc0/revision`
5240 ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type`
5241 ddr_type4="07"
5242 ddr_type5="08"
5243
5244 # Core control parameters for gold
5245 echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
5246 echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
5247 echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
5248 echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
5249 echo 3 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
5250
5251 # Core control parameters for gold+
5252 echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/min_cpus
5253 echo 60 > /sys/devices/system/cpu/cpu7/core_ctl/busy_up_thres
5254 echo 30 > /sys/devices/system/cpu/cpu7/core_ctl/busy_down_thres
5255 echo 100 > /sys/devices/system/cpu/cpu7/core_ctl/offline_delay_ms
5256 echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/task_thres
5257 # Controls how many more tasks should be eligible to run on gold CPUs
5258 # w.r.t number of gold CPUs available to trigger assist (max number of
5259 # tasks eligible to run on previous cluster minus number of CPUs in
5260 # the previous cluster).
5261 #
5262 # Setting to 1 by default which means there should be at least
5263 # 4 tasks eligible to run on gold cluster (tasks running on gold cores
5264 # plus misfit tasks on silver cores) to trigger assitance from gold+.
5265 echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/nr_prev_assist_thresh
5266
5267 # Disable Core control on silver
5268 echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable
5269
5270 # Setting b.L scheduler parameters
5271 echo 95 95 > /proc/sys/kernel/sched_upmigrate
5272 echo 85 85 > /proc/sys/kernel/sched_downmigrate
5273 echo 100 > /proc/sys/kernel/sched_group_upmigrate
5274 echo 85 > /proc/sys/kernel/sched_group_downmigrate
5275 echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks
5276 echo 400000000 > /proc/sys/kernel/sched_coloc_downmigrate_ns
5277
5278 # cpuset parameters
5279 echo 0-3 > /dev/cpuset/background/cpus
5280 echo 0-3 > /dev/cpuset/system-background/cpus
5281
5282 # Turn off scheduler boost at the end
5283 echo 0 > /proc/sys/kernel/sched_boost
5284
5285 # configure governor settings for silver cluster
5286 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
5287 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us
5288 echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us
5289 if [ $rev == "2.0" ] || [ $rev == "2.1" ]; then
5290 echo 1248000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
5291 else
5292 echo 1228800 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq
5293 fi
5294 echo 691200 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
5295 echo 1 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl
5296
5297 # configure input boost settings
5298 echo "0:1324800" > /sys/devices/system/cpu/cpu_boost/input_boost_freq
5299 echo 120 > /sys/devices/system/cpu/cpu_boost/input_boost_ms
5300
5301 # configure governor settings for gold cluster
5302 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
5303 echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/down_rate_limit_us
5304 echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us
5305 echo 1574400 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/hispeed_freq
5306 echo 1 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/pl
5307
5308 # configure governor settings for gold+ cluster
5309 echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor
5310 echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/down_rate_limit_us
5311 echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us
5312 if [ $rev == "2.0" ] || [ $rev == "2.1" ]; then
5313 echo 1632000 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
5314 else
5315 echo 1612800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq
5316 fi
5317 echo 1 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl
5318
5319 # Enable bus-dcvs
5320 for device in /sys/devices/platform/soc
5321 do
5322 for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw
5323 do
5324 echo "bw_hwmon" > $cpubw/governor
5325 echo "4577 7110 9155 12298 14236 15258" > $cpubw/bw_hwmon/mbps_zones
5326 echo 4 > $cpubw/bw_hwmon/sample_ms
5327 echo 50 > $cpubw/bw_hwmon/io_percent
5328 echo 20 > $cpubw/bw_hwmon/hist_memory
5329 echo 10 > $cpubw/bw_hwmon/hyst_length
5330 echo 30 > $cpubw/bw_hwmon/down_thres
5331 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
5332 echo 250 > $cpubw/bw_hwmon/up_scale
5333 echo 1600 > $cpubw/bw_hwmon/idle_mbps
5334 echo 14236 > $cpubw/max_freq
5335 echo 40 > $cpubw/polling_interval
5336 done
5337
5338 for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw
5339 do
5340 echo "bw_hwmon" > $llccbw/governor
5341 if [ ${ddr_type:4:2} == $ddr_type4 ]; then
5342 echo "1720 2086 2929 3879 5161 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones
5343 elif [ ${ddr_type:4:2} == $ddr_type5 ]; then
5344 echo "1720 2086 2929 3879 5931 6881 7980 10437" > $llccbw/bw_hwmon/mbps_zones
5345 fi
5346 echo 4 > $llccbw/bw_hwmon/sample_ms
5347 echo 80 > $llccbw/bw_hwmon/io_percent
5348 echo 20 > $llccbw/bw_hwmon/hist_memory
5349 echo 10 > $llccbw/bw_hwmon/hyst_length
5350 echo 30 > $llccbw/bw_hwmon/down_thres
5351 echo 0 > $llccbw/bw_hwmon/guard_band_mbps
5352 echo 250 > $llccbw/bw_hwmon/up_scale
5353 echo 1600 > $llccbw/bw_hwmon/idle_mbps
5354 echo 6881 > $llccbw/max_freq
5355 echo 40 > $llccbw/polling_interval
5356 done
5357
5358 for npubw in $device/*npu*-ddr-bw/devfreq/*npu*-ddr-bw
5359 do
5360 echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
5361 echo "bw_hwmon" > $npubw/governor
5362 if [ ${ddr_type:4:2} == $ddr_type4 ]; then
5363 echo "1720 2086 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones
5364 elif [ ${ddr_type:4:2} == $ddr_type5 ]; then
5365 echo "1720 2086 2929 3879 5931 6881 7980 10437" > $npubw/bw_hwmon/mbps_zones
5366 fi
5367 echo 4 > $npubw/bw_hwmon/sample_ms
5368 echo 160 > $npubw/bw_hwmon/io_percent
5369 echo 20 > $npubw/bw_hwmon/hist_memory
5370 echo 10 > $npubw/bw_hwmon/hyst_length
5371 echo 30 > $npubw/bw_hwmon/down_thres
5372 echo 0 > $npubw/bw_hwmon/guard_band_mbps
5373 echo 250 > $npubw/bw_hwmon/up_scale
5374 echo 1600 > $npubw/bw_hwmon/idle_mbps
5375 echo 40 > $npubw/polling_interval
5376 echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
5377 done
5378
5379 for npullccbw in $device/*npu*-llcc-bw/devfreq/*npu*-llcc-bw
5380 do
5381 echo 1 > /sys/devices/virtual/npu/msm_npu/pwr
5382 echo "bw_hwmon" > $npullccbw/governor
5383 echo "4577 7110 9155 12298 14236 15258" > $npullccbw/bw_hwmon/mbps_zones
5384 echo 4 > $npullccbw/bw_hwmon/sample_ms
5385 echo 160 > $npullccbw/bw_hwmon/io_percent
5386 echo 20 > $npullccbw/bw_hwmon/hist_memory
5387 echo 10 > $npullccbw/bw_hwmon/hyst_length
5388 echo 30 > $npullccbw/bw_hwmon/down_thres
5389 echo 0 > $npullccbw/bw_hwmon/guard_band_mbps
5390 echo 250 > $npullccbw/bw_hwmon/up_scale
5391 echo 1600 > $npullccbw/bw_hwmon/idle_mbps
5392 echo 40 > $npullccbw/polling_interval
5393 echo 0 > /sys/devices/virtual/npu/msm_npu/pwr
5394 done
5395 done
5396 # memlat specific settings are moved to seperate file under
5397 # device/target specific folder
5398 setprop vendor.dcvs.prop 0
5399 setprop vendor.dcvs.prop 1
5400 echo N > /sys/module/lpm_levels/parameters/sleep_disabled
5401 configure_memory_parameters
5402 ;;
5403esac
5404
5405case "$target" in
5406 "msm8998" | "apq8098_latv")
5407
5408 echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus
5409 echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres
5410 echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres
5411 echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms
5412 echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster
5413 echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres
5414
5415 # Setting b.L scheduler parameters
5416 echo 1 > /proc/sys/kernel/sched_migration_fixup
5417 echo 95 > /proc/sys/kernel/sched_upmigrate
5418 echo 90 > /proc/sys/kernel/sched_downmigrate
5419 echo 100 > /proc/sys/kernel/sched_group_upmigrate
5420 echo 95 > /proc/sys/kernel/sched_group_downmigrate
5421 echo 0 > /proc/sys/kernel/sched_select_prev_cpu_us
5422 echo 400000 > /proc/sys/kernel/sched_freq_inc_notify
5423 echo 400000 > /proc/sys/kernel/sched_freq_dec_notify
5424 echo 5 > /proc/sys/kernel/sched_spill_nr_run
5425 echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill
5426 echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker
5427 start iop
5428
5429 # disable thermal bcl hotplug to switch governor
5430 echo 0 > /sys/module/msm_thermal/core_control/enabled
5431
5432 # online CPU0
5433 echo 1 > /sys/devices/system/cpu/cpu0/online
5434 # configure governor settings for little cluster
5435 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
5436 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
5437 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
5438 echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
5439 echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
5440 echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
5441 echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
5442 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
5443 echo "83 1804800:95" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
5444 echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
5445 echo 79000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
5446 echo 518400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
5447 echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
5448 # online CPU4
5449 echo 1 > /sys/devices/system/cpu/cpu4/online
5450 # configure governor settings for big cluster
5451 echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
5452 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load
5453 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif
5454 echo 19000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay
5455 echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load
5456 echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate
5457 echo 1574400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq
5458 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy
5459 echo "83 1939200:90 2016000:95" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads
5460 echo 19000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time
5461 echo 79000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis
5462 echo 806400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
5463 echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/ignore_hispeed_on_notif
5464
5465 # re-enable thermal and BCL hotplug
5466 echo 1 > /sys/module/msm_thermal/core_control/enabled
5467
5468 # Enable input boost configuration
5469 echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq
5470 echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms
5471 # Enable bus-dcvs
5472 for cpubw in /sys/class/devfreq/*qcom,cpubw*
5473 do
5474 echo "bw_hwmon" > $cpubw/governor
5475 echo 50 > $cpubw/polling_interval
5476 echo 1525 > $cpubw/min_freq
5477 echo "3143 5859 11863 13763" > $cpubw/bw_hwmon/mbps_zones
5478 echo 4 > $cpubw/bw_hwmon/sample_ms
5479 echo 34 > $cpubw/bw_hwmon/io_percent
5480 echo 20 > $cpubw/bw_hwmon/hist_memory
5481 echo 10 > $cpubw/bw_hwmon/hyst_length
5482 echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps
5483 echo 34 > $cpubw/bw_hwmon/low_power_io_percent
5484 echo 20 > $cpubw/bw_hwmon/low_power_delay
5485 echo 0 > $cpubw/bw_hwmon/guard_band_mbps
5486 echo 250 > $cpubw/bw_hwmon/up_scale
5487 echo 1600 > $cpubw/bw_hwmon/idle_mbps
5488 done
5489
5490 for memlat in /sys/class/devfreq/*qcom,memlat-cpu*
5491 do
5492 echo "mem_latency" > $memlat/governor
5493 echo 10 > $memlat/polling_interval
5494 echo 400 > $memlat/mem_latency/ratio_ceil
5495 done
5496 echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor
5497 if [ -f /sys/devices/soc0/soc_id ]; then
5498 soc_id=`cat /sys/devices/soc0/soc_id`
5499 else
5500 soc_id=`cat /sys/devices/system/soc/soc0/id`
5501 fi
5502
5503 if [ -f /sys/devices/soc0/hw_platform ]; then
5504 hw_platform=`cat /sys/devices/soc0/hw_platform`
5505 else
5506 hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform`
5507 fi
5508
5509 if [ -f /sys/devices/soc0/platform_version ]; then
5510 platform_version=`cat /sys/devices/soc0/platform_version`
5511 platform_major_version=$((10#${platform_version}>>16))
5512 fi
5513
5514 if [ -f /sys/devices/soc0/platform_subtype_id ]; then
5515 platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id`
5516 fi
5517
5518 case "$soc_id" in
5519 "292") #msm8998 apq8098_latv
5520 # Start Host based Touch processing
5521 case "$hw_platform" in
5522 "QRD")
5523 case "$platform_subtype_id" in
5524 "0")
5525 start_hbtp
5526 ;;
5527 "16")
5528 if [ $platform_major_version -lt 6 ]; then
5529 start_hbtp
5530 fi
5531 ;;
5532 esac
5533
5534 ;;
5535 esac
5536 ;;
5537 esac
5538
5539 echo N > /sys/module/lpm_levels/system/pwr/cpu0/ret/idle_enabled
5540 echo N > /sys/module/lpm_levels/system/pwr/cpu1/ret/idle_enabled
5541 echo N > /sys/module/lpm_levels/system/pwr/cpu2/ret/idle_enabled
5542 echo N > /sys/module/lpm_levels/system/pwr/cpu3/ret/idle_enabled
5543 echo N > /sys/module/lpm_levels/system/perf/cpu4/ret/idle_enabled
5544 echo N > /sys/module/lpm_levels/system/perf/cpu5/ret/idle_enabled
5545 echo N > /sys/module/lpm_levels/system/perf/cpu6/ret/idle_enabled
5546 echo N > /sys/module/lpm_levels/system/perf/cpu7/ret/idle_enabled
5547 echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled
5548 echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-ret/idle_enabled
5549 echo N > /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled
5550 echo N > /sys/module/lpm_levels/system/perf/perf-l2-ret/idle_enabled
5551 echo N > /sys/module/lpm_levels/parameters/sleep_disabled
5552
5553 echo 0-3 > /dev/cpuset/background/cpus
5554 echo 0-3 > /dev/cpuset/system-background/cpus
5555 echo 0 > /proc/sys/kernel/sched_boost
5556
5557 # Set Memory parameters
5558 configure_memory_parameters
5559 ;;
5560esac
5561
5562case "$target" in
5563 "msm8909")
5564
5565 if [ -f /sys/devices/soc0/soc_id ]; then
5566 soc_id=`cat /sys/devices/soc0/soc_id`
5567 else
5568 soc_id=`cat /sys/devices/system/soc/soc0/id`
5569 fi
5570
5571 # HMP scheduler settings for 8909 similiar to 8917
5572 echo 3 > /proc/sys/kernel/sched_window_stats_policy
5573 echo 3 > /proc/sys/kernel/sched_ravg_hist_size
5574
5575 echo 1 > /proc/sys/kernel/sched_restrict_tasks_spread
5576
5577 echo 20 > /proc/sys/kernel/sched_small_task
5578 echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load
5579 echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load
5580 echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load
5581 echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load
5582
5583 echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run
5584 echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run
5585 echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run
5586 echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run
5587
5588 echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle
5589 echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle
5590 echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle
5591 echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle
5592
5593 # Apply governor settings for 8909
5594
5595 # disable thermal core_control to update scaling_min_freq
5596 echo 0 > /sys/module/msm_thermal/core_control/enabled
5597 echo 1 > /sys/devices/system/cpu/cpu0/online
5598 echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
5599 echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
5600 # enable thermal core_control now
5601 echo 1 > /sys/module/msm_thermal/core_control/enabled
5602
5603 echo "29000 1094400:49000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
5604 echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
5605 echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate
5606 echo 998400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
5607 echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
5608 echo "1 800000:85 998400:90 1094400:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads
5609 echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
5610 echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor
5611
5612 # Bring up all cores online
5613 echo 1 > /sys/devices/system/cpu/cpu1/online
5614 echo 1 > /sys/devices/system/cpu/cpu2/online
5615 echo 1 > /sys/devices/system/cpu/cpu3/online
5616 echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled
5617
5618 for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor
5619 do
5620 echo "bw_hwmon" > $devfreq_gov
5621 for cpu_bimc_bw_step in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/bw_step
5622 do
5623 echo 60 > $cpu_bimc_bw_step
5624 done
5625 for cpu_guard_band_mbps in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/guard_band_mbps
5626 do
5627 echo 30 > $cpu_guard_band_mbps
5628 done
5629 done
5630
5631 for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent
5632 do
5633 echo 40 > $gpu_bimc_io_percent
5634 done
5635 for gpu_bimc_bw_step in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/bw_step
5636 do
5637 echo 60 > $gpu_bimc_bw_step
5638 done
5639 for gpu_bimc_guard_band_mbps in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/guard_band_mbps
5640 do
5641 echo 30 > $gpu_bimc_guard_band_mbps
5642 done
5643
5644 # Set Memory parameters
5645 configure_memory_parameters
5646 restorecon -R /sys/devices/system/cpu
5647 ;;
5648esac
5649
5650case "$target" in
5651 "msm7627_ffa" | "msm7627_surf" | "msm7627_6x")
5652 echo 25000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
5653 ;;
5654esac
5655
5656case "$target" in
5657 "qsd8250_surf" | "qsd8250_ffa" | "qsd8650a_st1x")
5658 echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
5659 ;;
5660esac
5661
5662chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
5663chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
5664chown -h system /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
5665
5666emmc_boot=`getprop vendor.boot.emmc`
5667case "$emmc_boot"
5668 in "true")
5669 chown -h system /sys/devices/platform/rs300000a7.65536/force_sync
5670 chown -h system /sys/devices/platform/rs300000a7.65536/sync_sts
5671 chown -h system /sys/devices/platform/rs300100a7.65536/force_sync
5672 chown -h system /sys/devices/platform/rs300100a7.65536/sync_sts
5673 ;;
5674esac
5675
5676case "$target" in
5677 "msm8960" | "msm8660" | "msm7630_surf")
5678 echo 10 > /sys/devices/platform/msm_sdcc.3/idle_timeout
5679 ;;
5680 "msm7627a")
5681 echo 10 > /sys/devices/platform/msm_sdcc.1/idle_timeout
5682 ;;
5683esac
5684
5685# Post-setup services
5686case "$target" in
5687 "msm8660" | "msm8960" | "msm8226" | "msm8610" | "mpq8092" )
5688 start mpdecision
5689 ;;
5690 "msm8974")
5691 start mpdecision
5692 echo 512 > /sys/block/mmcblk0/bdi/read_ahead_kb
5693 ;;
5694 "msm8909" | "msm8916" | "msm8937" | "msm8952" | "msm8953" | "msm8994" | "msm8992" | "msm8996" | "msm8998" | "sdm660" | "apq8098_latv" | "sdm845" | "sdm710" | "msmnile" | "msmsteppe" | "sm6150" | "kona" | "lito" | "trinket" | "atoll" | "bengal" | "sdmshrike")
5695 setprop vendor.post_boot.parsed 1
5696 ;;
5697 "apq8084")
5698 rm /data/system/perfd/default_values
5699 start mpdecision
5700 echo 512 > /sys/block/mmcblk0/bdi/read_ahead_kb
5701 echo 512 > /sys/block/sda/bdi/read_ahead_kb
5702 echo 512 > /sys/block/sdb/bdi/read_ahead_kb
5703 echo 512 > /sys/block/sdc/bdi/read_ahead_kb
5704 echo 512 > /sys/block/sdd/bdi/read_ahead_kb
5705 echo 512 > /sys/block/sde/bdi/read_ahead_kb
5706 echo 512 > /sys/block/sdf/bdi/read_ahead_kb
5707 echo 512 > /sys/block/sdg/bdi/read_ahead_kb
5708 echo 512 > /sys/block/sdh/bdi/read_ahead_kb
5709 ;;
5710 "msm7627a")
5711 if [ -f /sys/devices/soc0/soc_id ]; then
5712 soc_id=`cat /sys/devices/soc0/soc_id`
5713 else
5714 soc_id=`cat /sys/devices/system/soc/soc0/id`
5715 fi
5716 case "$soc_id" in
5717 "127" | "128" | "129")
5718 start mpdecision
5719 ;;
5720 esac
5721 ;;
5722esac
5723
5724# Enable Power modes and set the CPU Freq Sampling rates
5725case "$target" in
5726 "msm7627a")
5727 start qosmgrd
5728 echo 1 > /sys/module/pm2/modes/cpu0/standalone_power_collapse/idle_enabled
5729 echo 1 > /sys/module/pm2/modes/cpu1/standalone_power_collapse/idle_enabled
5730 echo 1 > /sys/module/pm2/modes/cpu0/standalone_power_collapse/suspend_enabled
5731 echo 1 > /sys/module/pm2/modes/cpu1/standalone_power_collapse/suspend_enabled
5732 #SuspendPC:
5733 echo 1 > /sys/module/pm2/modes/cpu0/power_collapse/suspend_enabled
5734 #IdlePC:
5735 echo 1 > /sys/module/pm2/modes/cpu0/power_collapse/idle_enabled
5736 echo 25000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
5737 ;;
5738esac
5739
5740# Change adj level and min_free_kbytes setting for lowmemory killer to kick in
5741case "$target" in
5742 "msm7627a")
5743 echo 0,1,2,4,9,12 > /sys/module/lowmemorykiller/parameters/adj
5744 echo 5120 > /proc/sys/vm/min_free_kbytes
5745 ;;
5746esac
5747
5748# Install AdrenoTest.apk if not already installed
5749if [ -f /data/prebuilt/AdrenoTest.apk ]; then
5750 if [ ! -d /data/data/com.qualcomm.adrenotest ]; then
5751 pm install /data/prebuilt/AdrenoTest.apk
5752 fi
5753fi
5754
5755# Install SWE_Browser.apk if not already installed
5756if [ -f /data/prebuilt/SWE_AndroidBrowser.apk ]; then
5757 if [ ! -d /data/data/com.android.swe.browser ]; then
5758 pm install /data/prebuilt/SWE_AndroidBrowser.apk
5759 fi
5760fi
5761
5762# Change adj level and min_free_kbytes setting for lowmemory killer to kick in
5763case "$target" in
5764 "msm8660")
5765 start qosmgrd
5766 echo 0,1,2,4,9,12 > /sys/module/lowmemorykiller/parameters/adj
5767 echo 5120 > /proc/sys/vm/min_free_kbytes
5768 ;;
5769esac
5770# Let kernel know our image version/variant/crm_version
5771if [ -f /sys/devices/soc0/select_image ]; then
5772 image_version="10:"
5773 image_version+=`getprop ro.build.id`
5774 image_version+=":"
5775 image_version+=`getprop ro.build.version.incremental`
5776 image_variant=`getprop ro.product.name`
5777 image_variant+="-"
5778 image_variant+=`getprop ro.build.type`
5779 oem_version=`getprop ro.build.version.codename`
5780 echo 10 > /sys/devices/soc0/select_image
5781 echo $image_version > /sys/devices/soc0/image_version
5782 echo $image_variant > /sys/devices/soc0/image_variant
5783 echo $oem_version > /sys/devices/soc0/image_crm_version
5784fi
5785
5786# Change console log level as per console config property
5787console_config=`getprop persist.vendor.console.silent.config`
5788case "$console_config" in
5789 "1")
5790 echo "Enable console config to $console_config"
5791 echo 0 > /proc/sys/kernel/printk
5792 ;;
5793 *)
5794 echo "Enable console config to $console_config"
5795 ;;
5796esac
5797
5798# Parse misc partition path and set property
5799misc_link=$(ls -l /dev/block/bootdevice/by-name/misc)
5800real_path=${misc_link##*>}
5801setprop persist.vendor.mmi.misc_dev_path $real_path