blob: f74dcceace23826f879e4809cd675c9990bbdffe [file] [log] [blame]
ReStranger1b85f702025-09-30 04:05:06 +03001#! /vendor/bin/sh
2
3# Copyright (c) 2012-2013,2016,2018-2020 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
30export PATH=/vendor/bin
31
32# Set platform variables
33if [ -f /sys/devices/soc0/hw_platform ]; then
34 soc_hwplatform=`cat /sys/devices/soc0/hw_platform` 2> /dev/null
35else
36 soc_hwplatform=`cat /sys/devices/system/soc/soc0/hw_platform` 2> /dev/null
37fi
38if [ -f /sys/devices/soc0/soc_id ]; then
39 soc_hwid=`cat /sys/devices/soc0/soc_id` 2> /dev/null
40else
41 soc_hwid=`cat /sys/devices/system/soc/soc0/id` 2> /dev/null
42fi
43if [ -f /sys/devices/soc0/platform_version ]; then
44 soc_hwver=`cat /sys/devices/soc0/platform_version` 2> /dev/null
45else
46 soc_hwver=`cat /sys/devices/system/soc/soc0/platform_version` 2> /dev/null
47fi
48
49if [ -f /sys/class/drm/card0-DSI-1/modes ]; then
50 echo "detect" > /sys/class/drm/card0-DSI-1/status
51 mode_file=/sys/class/drm/card0-DSI-1/modes
52 while read line; do
53 fb_width=${line%%x*};
54 break;
55 done < $mode_file
56elif [ -f /sys/class/graphics/fb0/virtual_size ]; then
57 res=`cat /sys/class/graphics/fb0/virtual_size` 2> /dev/null
58 fb_width=${res%,*}
59fi
60
61log -t BOOT -p i "MSM target '$1', SoC '$soc_hwplatform', HwID '$soc_hwid', SoC ver '$soc_hwver'"
62
63#For drm based display driver
64vbfile=/sys/module/drm/parameters/vblankoffdelay
65if [ -w $vbfile ]; then
66 echo -1 > $vbfile
67else
68 log -t DRM_BOOT -p w "file: '$vbfile' or perms doesn't exist"
69fi
70
71function set_density_by_fb() {
72 #put default density based on width
73 if [ -z $fb_width ]; then
74 setprop vendor.display.lcd_density 320
75 else
76 if [ $fb_width -ge 1600 ]; then
77 setprop vendor.display.lcd_density 640
78 elif [ $fb_width -ge 1440 ]; then
79 setprop vendor.display.lcd_density 560
80 elif [ $fb_width -ge 1080 ]; then
81 setprop vendor.display.lcd_density 480
82 elif [ $fb_width -ge 720 ]; then
83 setprop vendor.display.lcd_density 320 #for 720X1280 resolution
84 elif [ $fb_width -ge 480 ]; then
85 setprop vendor.display.lcd_density 240 #for 480X854 QRD resolution
86 else
87 setprop vendor.display.lcd_density 160
88 fi
89 fi
90}
91
92target=`getprop ro.board.platform`
93case "$target" in
94 "msm7630_surf" | "msm7630_1x" | "msm7630_fusion")
95 case "$soc_hwplatform" in
96 "FFA" | "SVLTE_FFA")
97 # linking to surf_keypad_qwerty.kcm.bin instead of surf_keypad_numeric.kcm.bin so that
98 # the UI keyboard works fine.
99 ln -s /system/usr/keychars/surf_keypad_qwerty.kcm.bin /system/usr/keychars/surf_keypad.kcm.bin
100 ;;
101 "Fluid")
102 setprop vendor.display.lcd_density 240
103 setprop qcom.bt.dev_power_class 2
104 ;;
105 *)
106 ln -s /system/usr/keychars/surf_keypad_qwerty.kcm.bin /system/usr/keychars/surf_keypad.kcm.bin
107 ;;
108 esac
109 ;;
110 "sm6150")
111 case "$soc_hwplatform" in
112 "ADP")
113 setprop vendor.display.lcd_density 160
114 ;;
115 esac
116 case "$soc_hwid" in
117 365|366)
118 sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null
119 setprop vendor.media.target.version 1
120 if [ $sku_ver -eq 1 ]; then
121 setprop vendor.media.target.version 2
122 fi
123 ;;
124 355|369|377|384)
125 setprop vendor.chre.enabled 0
126 ;;
127 *)
128 esac
129 ;;
130 "msm8660")
131 case "$soc_hwplatform" in
132 "Fluid")
133 setprop vendor.display.lcd_density 240
134 ;;
135 "Dragon")
136 setprop ro.sound.alsa "WM8903"
137 ;;
138 esac
139 ;;
140
141 "msm8960")
142 # lcd density is write-once. Hence the separate switch case
143 case "$soc_hwplatform" in
144 "Liquid")
145 if [ "$soc_hwver" == "196608" ]; then # version 0x30000 is 3D sku
146 setprop ro.sf.hwrotation 90
147 fi
148
149 setprop vendor.display.lcd_density 160
150 ;;
151 "MTP")
152 setprop vendor.display.lcd_density 240
153 ;;
154 *)
155 case "$soc_hwid" in
156 "109")
157 setprop vendor.display.lcd_density 160
158 ;;
159 *)
160 setprop vendor.display.lcd_density 240
161 ;;
162 esac
163 ;;
164 esac
165
166 #Set up composition type based on the target
167 case "$soc_hwid" in
168 87)
169 #8960
170 setprop debug.composition.type dyn
171 ;;
172 153|154|155|156|157|138)
173 #8064 V2 PRIME | 8930AB | 8630AB | 8230AB | 8030AB | 8960AB
174 setprop debug.composition.type c2d
175 ;;
176 *)
177 esac
178 ;;
179
180 "msm8974")
181 case "$soc_hwplatform" in
182 "Liquid")
183 setprop vendor.display.lcd_density 160
184 # Liquid do not have hardware navigation keys, so enable
185 # Android sw navigation bar
186 setprop ro.hw.nav_keys 0
187 ;;
188 "Dragon")
189 setprop vendor.display.lcd_density 240
190 ;;
191 *)
192 setprop vendor.display.lcd_density 320
193 ;;
194 esac
195 ;;
196
197 "msm8226")
198 case "$soc_hwplatform" in
199 *)
200 setprop vendor.display.lcd_density 320
201 ;;
202 esac
203 ;;
204
205 "msm8610" | "apq8084" | "mpq8092")
206 case "$soc_hwplatform" in
207 *)
208 setprop vendor.display.lcd_density 240
209 ;;
210 esac
211 ;;
212 "apq8084")
213 case "$soc_hwplatform" in
214 "Liquid")
215 setprop vendor.display.lcd_density 320
216 # Liquid do not have hardware navigation keys, so enable
217 # Android sw navigation bar
218 setprop ro.hw.nav_keys 0
219 ;;
220 "SBC")
221 setprop vendor.display.lcd_density 200
222 # SBC do not have hardware navigation keys, so enable
223 # Android sw navigation bar
224 setprop qemu.hw.mainkeys 0
225 ;;
226 *)
227 setprop vendor.display.lcd_density 480
228 ;;
229 esac
230 ;;
231 "msm8996")
232 case "$soc_hwplatform" in
233 "Dragon")
234 setprop vendor.display.lcd_density 240
235 setprop qemu.hw.mainkeys 0
236 ;;
237 "ADP")
238 setprop vendor.display.lcd_density 160
239 setprop qemu.hw.mainkeys 0
240 ;;
241 "SBC")
242 setprop vendor.display.lcd_density 240
243 setprop qemu.hw.mainkeys 0
244 ;;
245 *)
246 setprop vendor.display.lcd_density 560
247 ;;
248 esac
249 ;;
250 "msm8937" | "msm8940")
251 # Set vendor.opengles.version based on chip id.
252 # MSM8937 and MSM8940 variants supports OpenGLES 3.1
253 # 196608 is decimal for 0x30000 to report version 3.0
254 # 196609 is decimal for 0x30001 to report version 3.1
255 # 196610 is decimal for 0x30002 to report version 3.2
256 case "$soc_hwid" in
257 294|295|296|297|298|313|353|354|363|364)
258 setprop vendor.opengles.version 196610
259 if [ $soc_hwid = 354 ]
260 then
261 setprop vendor.media.target.version 1
262 log -t BOOT -p i "SDM429 early_boot prop set for: HwID '$soc_hwid'"
263 fi
264 ;;
265 303|307|308|309|320)
266 # Vulkan is not supported for 8917 variants
267 setprop vendor.opengles.version 196608
268 setprop persist.graphics.vulkan.disable true
269 ;;
270 *)
271 setprop vendor.opengles.version 196608
272 ;;
273 esac
274 ;;
275 "msm8909")
276 case "$soc_hwplatform" in
277 *)
278 setprop persist.graphics.vulkan.disable true
279 ;;
280 esac
281 ;;
282 "msm8998" | "apq8098_latv")
283 case "$soc_hwplatform" in
284 *)
285 setprop vendor.display.lcd_density 560
286 ;;
287 esac
288 ;;
289 "sdm845")
290 case "$soc_hwplatform" in
291 *)
292 if [ $fb_width -le 1600 ]; then
293 setprop vendor.display.lcd_density 560
294 else
295 setprop vendor.display.lcd_density 640
296 fi
297 ;;
298 esac
299 ;;
300 "msmnile")
301 case "$soc_hwplatform" in
302 *)
303 if [ $fb_width -le 1600 ]; then
304 setprop vendor.display.lcd_density 560
305 else
306 setprop vendor.display.lcd_density 640
307 fi
308 ;;
309 esac
310 ;;
311 "kona")
312 case "$soc_hwplatform" in
313 *)
314 if [ $fb_width -le 1600 ]; then
315 setprop vendor.display.lcd_density 560
316 else
317 setprop vendor.display.lcd_density 640
318 fi
319 ;;
320 esac
321 ;;
322 "lito")
323 case "$soc_hwid" in
324 400|440)
325 sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null
326 if [ $sku_ver -eq 1 ]; then
327 setprop vendor.media.target.version 1
328 fi
329 ;;
330 434|459)
331 sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null
332 setprop vendor.media.target.version 2
333 if [ $sku_ver -eq 1 ]; then
334 setprop vendor.media.target.version 3
335 fi
336 ;;
337 esac
338 ;;
339 "bengal")
340 case "$soc_hwid" in
341 441)
342 setprop vendor.fastrpc.disable.cdsprpcd.daemon 1
343 setprop vendor.gralloc.disable_ubwc 1
344
345 # 196609 is decimal for 0x30001 to report version 3.1
346 setprop vendor.opengles.version 196609
347 ;;
348 471)
349 #scuba APQ
350 setprop vendor.gralloc.disable_ubwc 1
351 ;;
352 esac
353 ;;
354 "sdm710" | "msmpeafowl")
355 case "$soc_hwplatform" in
356 *)
357 if [ $fb_width -le 1600 ]; then
358 setprop vendor.display.lcd_density 560
359 else
360 setprop vendor.display.lcd_density 640
361 fi
362
363 sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null
364 if [ $sku_ver -eq 1 ]; then
365 setprop vendor.media.target.version 1
366 fi
367 ;;
368 esac
369 ;;
370 "msm8953")
371 cap_ver = 1
372 if [ -e "/sys/devices/platform/soc/1d00000.qcom,vidc/capability_version" ]; then
373 cap_ver=`cat /sys/devices/platform/soc/1d00000.qcom,vidc/capability_version` 2> /dev/null
374 else
375 cap_ver=`cat /sys/devices/soc/1d00000.qcom,vidc/capability_version` 2> /dev/null
376 fi
377
378 if [ $cap_ver -eq 1 ]; then
379 setprop vendor.media.target.version 1
380 fi
381 ;;
382 #Set property to differentiate SDM660 & SDM455
383 #SOC ID for SDM455 is 385
384 "sdm660")
385 case "$soc_hwplatform" in
386 *)
387 if [ $fb_width -le 1600 ]; then
388 setprop vendor.display.lcd_density 560
389 else
390 setprop vendor.display.lcd_density 640
391 fi
392
393 if [ $soc_hwid -eq 385 ]; then
394 setprop vendor.media.target.version 1
395 fi
396 ;;
397 esac
398 ;;
399 "holi")
400 setprop vendor.media.target_variant "_holi"
401 ;;
402esac
403
404baseband=`getprop ro.baseband`
405#enable atfwd daemon all targets except sda, apq, qcs
406case "$baseband" in
407 "apq" | "sda" | "qcs" )
408 setprop persist.vendor.radio.atfwd.start false;;
409 *)
410 setprop persist.vendor.radio.atfwd.start true;;
411esac
412
413#set default lcd density
414#Since lcd density has read only
415#property, it will not overwrite previous set
416#property if any target is setting forcefully.
417set_density_by_fb
418
419
420# set Lilliput LCD density for ADP
421product=`getprop ro.board.platform`
422
423case "$product" in
424 "msmnile_au")
425 setprop vendor.display.lcd_density 160
426 echo 902400000 > /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/min_freq
427 echo 1612800000 > /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/max_freq
428 echo 902400000 > /sys/class/devfreq/soc:qcom,cpu4-cpu-l3-lat/min_freq
429 echo 1612800000 > /sys/class/devfreq/soc:qcom,cpu4-cpu-l3-lat/max_freq
430 ;;
431 *)
432 ;;
433esac
434case "$product" in
435 "sm6150_au")
436 setprop vendor.display.lcd_density 160
437 ;;
438 *)
439 ;;
440esac
441case "$product" in
442 "sdmshrike_au")
443 setprop vendor.display.lcd_density 160
444 ;;
445 *)
446 ;;
447esac
448
449case "$product" in
450 "msmnile_gvmq")
451 setprop vendor.display.lcd_density 160
452 ;;
453 *)
454 ;;
455esac
456# Setup display nodes & permissions
457# HDMI can be fb1 or fb2
458# Loop through the sysfs nodes and determine
459# the HDMI(dtv panel)
460
461function set_perms() {
462 #Usage set_perms <filename> <ownership> <permission>
463 chown -h $2 $1
464 chmod $3 $1
465}
466
467# check for the type of driver FB or DRM
468fb_driver=/sys/class/graphics/fb0
469if [ -e "$fb_driver" ]
470then
471 # check for mdp caps
472 file=/sys/class/graphics/fb0/mdp/caps
473 if [ -f "$file" ]
474 then
475 setprop vendor.gralloc.disable_ubwc 1
476 cat $file | while read line; do
477 case "$line" in
478 *"ubwc"*)
479 setprop vendor.gralloc.enable_fb_ubwc 1
480 setprop vendor.gralloc.disable_ubwc 0
481 esac
482 done
483 fi
484else
485 set_perms /sys/devices/virtual/hdcp/msm_hdcp/min_level_change system.graphics 0660
486fi
487
488# allow system_graphics group to access pmic secure_mode node
489set_perms /sys/class/lcd_bias/secure_mode system.graphics 0660
490set_perms /sys/class/leds/wled/secure_mode system.graphics 0660
491
492boot_reason=`cat /proc/sys/kernel/boot_reason`
493reboot_reason=`getprop ro.boot.alarmboot`
494if [ "$boot_reason" = "3" ] || [ "$reboot_reason" = "true" ]; then
495 setprop ro.vendor.alarm_boot true
496else
497 setprop ro.vendor.alarm_boot false
498fi
499
500# copy GPU frequencies to vendor property
501if [ -f /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies ]; then
502 gpu_freq=`cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies` 2> /dev/null
503 setprop vendor.gpu.available_frequencies "$gpu_freq"
504fi