init.qcom.early_boot.sh 16 KB

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