| ReStranger | 1b85f70 | 2025-09-30 04:05:06 +0300 | [diff] [blame^] | 1 | #! /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 | |
| 30 | export PATH=/vendor/bin |
| 31 | |
| 32 | # Set platform variables |
| 33 | if [ -f /sys/devices/soc0/hw_platform ]; then |
| 34 | soc_hwplatform=`cat /sys/devices/soc0/hw_platform` 2> /dev/null |
| 35 | else |
| 36 | soc_hwplatform=`cat /sys/devices/system/soc/soc0/hw_platform` 2> /dev/null |
| 37 | fi |
| 38 | if [ -f /sys/devices/soc0/soc_id ]; then |
| 39 | soc_hwid=`cat /sys/devices/soc0/soc_id` 2> /dev/null |
| 40 | else |
| 41 | soc_hwid=`cat /sys/devices/system/soc/soc0/id` 2> /dev/null |
| 42 | fi |
| 43 | if [ -f /sys/devices/soc0/platform_version ]; then |
| 44 | soc_hwver=`cat /sys/devices/soc0/platform_version` 2> /dev/null |
| 45 | else |
| 46 | soc_hwver=`cat /sys/devices/system/soc/soc0/platform_version` 2> /dev/null |
| 47 | fi |
| 48 | |
| 49 | if [ -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 |
| 56 | elif [ -f /sys/class/graphics/fb0/virtual_size ]; then |
| 57 | res=`cat /sys/class/graphics/fb0/virtual_size` 2> /dev/null |
| 58 | fb_width=${res%,*} |
| 59 | fi |
| 60 | |
| 61 | log -t BOOT -p i "MSM target '$1', SoC '$soc_hwplatform', HwID '$soc_hwid', SoC ver '$soc_hwver'" |
| 62 | |
| 63 | #For drm based display driver |
| 64 | vbfile=/sys/module/drm/parameters/vblankoffdelay |
| 65 | if [ -w $vbfile ]; then |
| 66 | echo -1 > $vbfile |
| 67 | else |
| 68 | log -t DRM_BOOT -p w "file: '$vbfile' or perms doesn't exist" |
| 69 | fi |
| 70 | |
| 71 | function 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 | |
| 92 | target=`getprop ro.board.platform` |
| 93 | case "$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 | ;; |
| 402 | esac |
| 403 | |
| 404 | baseband=`getprop ro.baseband` |
| 405 | #enable atfwd daemon all targets except sda, apq, qcs |
| 406 | case "$baseband" in |
| 407 | "apq" | "sda" | "qcs" ) |
| 408 | setprop persist.vendor.radio.atfwd.start false;; |
| 409 | *) |
| 410 | setprop persist.vendor.radio.atfwd.start true;; |
| 411 | esac |
| 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. |
| 417 | set_density_by_fb |
| 418 | |
| 419 | |
| 420 | # set Lilliput LCD density for ADP |
| 421 | product=`getprop ro.board.platform` |
| 422 | |
| 423 | case "$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 | ;; |
| 433 | esac |
| 434 | case "$product" in |
| 435 | "sm6150_au") |
| 436 | setprop vendor.display.lcd_density 160 |
| 437 | ;; |
| 438 | *) |
| 439 | ;; |
| 440 | esac |
| 441 | case "$product" in |
| 442 | "sdmshrike_au") |
| 443 | setprop vendor.display.lcd_density 160 |
| 444 | ;; |
| 445 | *) |
| 446 | ;; |
| 447 | esac |
| 448 | |
| 449 | case "$product" in |
| 450 | "msmnile_gvmq") |
| 451 | setprop vendor.display.lcd_density 160 |
| 452 | ;; |
| 453 | *) |
| 454 | ;; |
| 455 | esac |
| 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 | |
| 461 | function 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 |
| 468 | fb_driver=/sys/class/graphics/fb0 |
| 469 | if [ -e "$fb_driver" ] |
| 470 | then |
| 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 |
| 484 | else |
| 485 | set_perms /sys/devices/virtual/hdcp/msm_hdcp/min_level_change system.graphics 0660 |
| 486 | fi |
| 487 | |
| 488 | # allow system_graphics group to access pmic secure_mode node |
| 489 | set_perms /sys/class/lcd_bias/secure_mode system.graphics 0660 |
| 490 | set_perms /sys/class/leds/wled/secure_mode system.graphics 0660 |
| 491 | |
| 492 | boot_reason=`cat /proc/sys/kernel/boot_reason` |
| 493 | reboot_reason=`getprop ro.boot.alarmboot` |
| 494 | if [ "$boot_reason" = "3" ] || [ "$reboot_reason" = "true" ]; then |
| 495 | setprop ro.vendor.alarm_boot true |
| 496 | else |
| 497 | setprop ro.vendor.alarm_boot false |
| 498 | fi |
| 499 | |
| 500 | # copy GPU frequencies to vendor property |
| 501 | if [ -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" |
| 504 | fi |