-
Notifications
You must be signed in to change notification settings - Fork 2
/
init.qcom.rc
509 lines (416 loc) · 18.8 KB
/
init.qcom.rc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
# Copyright (c) 2009-2013, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of The Linux Foundation nor
# the names of its contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
import init.qcom.power.rc
import init.qcom.usb.rc
on early-init
setprop sys.perf.profile 2
write /sys/block/mmcblk0/queue/scheduler noop
symlink /data/tombstones /tombstones
mkdir /firmware 0771 system system
mkdir /firmware-mdm 0771 system system
mount debugfs debugfs /sys/kernel/debug
chmod 0755 /sys/kernel/debug
on init
export LD_SHIM_LIBS "/system/bin/mm-qcamera-daemon|libshim_camera.so"
# Set permissions for efs partition
mkdir /efs 0771 system radio
symlink /sdcard /storage/sdcard0
symlink /storage/sdcard1 /external_sd
symlink /storage/sdcard1 /mnt/external_sd
on fs
wait /dev/block/platform/${ro.boot.bootdevice}
symlink /dev/block/platform/${ro.boot.bootdevice} /dev/block/bootdevice
mount_all fstab.qcom
chown system radio /dev/block/platform/msm_sdcc.1/by-name
chmod 0775 /dev/block/platform/msm_sdcc.1/by-name
on post-fs-data
# Create directories for tombstone
mkdir /data/tombstones 0771 system system
mkdir /tombstones/modem 0771 system system
mkdir /tombstones/lpass 0771 system system
mkdir /tombstones/wcnss 0771 system system
mkdir /tombstones/dsps 0771 system system
mkdir /tombstones/mdm 0771 system system
mkdir /tombstones/mdm2 0771 system system
# Communicate with mpdecision and thermald
mkdir /dev/socket/mpdecision 2770 root system
# Create directories for audio
mkdir /data/misc/audio 0770 audio audio
# Create directory for CNE
mkdir /data/connectivity 0771 system system
# Create directory for H2K
mkdir /data/misc/radio/hatp 0775 radio system
chmod 0644 /efs/h2k.dat
chown radio radio /efs/h2k.dat
# Create directory for HDCP 2.x
mkdir /data/system/hdcp2 0775 system system
# Create directory for location services
mkdir /data/misc/location 0770 gps gps
mkdir /data/misc/location/mq 0770 gps gps
mkdir /data/misc/location/xtwifi 0770 gps gps
mkdir /data/misc/location/gpsone_d 0770 system gps
mkdir /data/misc/location/quipc 0770 system gps
mkdir /data/misc/location/gsiff 0770 gps gps
# Create directories for NFC
mkdir /data/nfc 0700 nfc nfc
mkdir /data/nfc/param 0700 nfc nfc
# Create directories for WiFi
mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/misc/wifi/sockets 0770 wifi wifi
mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi
mkdir /data/misc/dhcp 0770 dhcp dhcp
chown dhcp dhcp /data/misc/dhcp
mkdir /data/qcks 0771 system system
# WiFi TRP/TIS
write /data/.psm.info 1
chown root system /data/.psm.info
chmod 0660 /data/.psm.info
# WiFi Antena Selection
chown root system /data/.ant.info
chmod 0664 /data/.ant.info
# WiFi Version
write /data/.wifiver.info 0
chown root system /data/.wifiver.info
chmod 0664 /data/.wifiver.info
restorecon /data/.wifiver.info
# WiFi MAC address
mkdir /efs/wifi 0775 radio system
chown system system /efs/wifi/.mac.info
chmod 0664 /efs/wifi/.mac.info
# Create QCN WPA_supplicant symlink for ar6000 wpa_supplicant
mkdir /data/system 0775 system system
rm /data/system/wpa_supplicant
# Create directories for perfd
mkdir /data/misc/perfd 2755 root system
mkdir /data/system/perfd 2770 root system
setprop vold.post_fs_data_done 1
on early-boot
# set RLIMIT_MEMLOCK to 64MB
setrlimit 8 67108864 67108864
setprop qcom.audio.init complete
on boot
#KSM
write /sys/kernel/mm/ksm/pages_to_scan 100
# Configure bluetooth
chmod 0660 /proc/bluetooth/sleep/lpm
chmod 0660 /proc/bluetooth/sleep/btwrite
chmod 0660 /sys/class/rfkill/rfkill0/state
chmod 0660 /dev/ttyHS0
chown bluetooth bluetooth /proc/bluetooth/sleep/lpm
chown bluetooth bluetooth /proc/bluetooth/sleep/btwrite
chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state
chown bluetooth bluetooth /dev/ttyHS0
# Create QMUX daemon socket area
mkdir /dev/socket/qmux_audio 2770 media audio
mkdir /dev/socket/qmux_bluetooth 2770 bluetooth bluetooth
mkdir /dev/socket/qmux_gps 2770 gps gps
mkdir /dev/socket/qmux_radio 2770 radio radio
# Change permissions for fps_level nodes
chown system graphics /sys/class/graphics/fb0/msm_fb_fps_level
chown system graphics /sys/class/graphics/fb1/msm_fb_fps_level
chown system graphics /sys/class/graphics/fb2/msm_fb_fps_level
chmod 0644 /sys/class/graphics/fb0/msm_fb_fps_level
chmod 0400 /sys/class/graphics/fb1/msm_fb_fps_level
chmod 0400 /sys/class/graphics/fb2/msm_fb_fps_level
# YUV to RGB Conversion
chown system graphics /sys/class/graphics/fb0/csc_cfg
chmod 0660 /sys/class/graphics/fb0/csc_cfg
chown system graphics /sys/class/graphics/fb1/hpd
chown system graphics /sys/class/graphics/fb1/vendor_name
chown system graphics /sys/class/graphics/fb1/product_description
chown system graphics /sys/class/graphics/fb1/format_3d
chmod 0664 /sys/class/graphics/fb1/hpd
chmod 0664 /sys/class/graphics/fb1/vendor_name
chmod 0664 /sys/class/graphics/fb1/product_description
chmod 0664 /sys/class/graphics/fb1/format_3d
chmod 0664 /sys/class/graphics/fb1/video_mode
# Create symlink for fb1 as HDMI
symlink /dev/graphics/fb1 /dev/graphics/hdmi
# Inform the USB driver of the correct transport
chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport
# Assign TCP buffer thresholds to be ceiling value of technology maximums
# Increased technology maximums should be reflected here.
write /proc/sys/net/core/rmem_max 8388608
write /proc/sys/net/core/wmem_max 8388608
# To prevent out of order acknowledgements from making
# connection tracking to treat them as not belonging to
# the connection they belong to.
# Otherwise, a weird issue happens in which some long
# connections on high-throughput links get dropped when
# an ack packet comes out of order
write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1
# Initialize MDM modem
write /sys/module/rmnet_usb/parameters/rmnet_data_init 1
chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait
chown system radio /sys/class/sec/switch/usb_sel
chown system radio /sys/class/sec/switch/usb_state
chown system radio /sys/class/sec/switch/uart_sel
chown system radio /sys/class/sec/switch/apo_factory
# GPIO DVS
chown system radio /sys/class/secgpio_check/secgpio_check_all/secgpio_ctrl
# Chown polling nodes as needed from UI running on system server
chown system system /sys/devices/platform/msm_sdcc.1/polling
chown system system /sys/devices/platform/msm_sdcc.2/polling
chown system system /sys/devices/platform/msm_sdcc.3/polling
chown system system /sys/devices/platform/msm_sdcc.4/polling
chmod 0664 /sys/devices/platform/msm_sdcc.1/polling
chmod 0664 /sys/devices/platform/msm_sdcc.2/polling
chmod 0664 /sys/devices/platform/msm_sdcc.3/polling
chmod 0664 /sys/devices/platform/msm_sdcc.4/polling
# Torch
chown system camera /sys/class/leds/torch-sec1/brightness
chmod 0664 /sys/class/leds/torch-sec1/brightness
# Backlight
chown system system /sys/class/leds/button-backlight/brightness
chown system system /sys/class/leds/lcd-backlight/brightness
chown root system /sys/class/leds/button-backlight/max_brightness
chmod 0664 /sys/class/leds/button-backlight/max_brightness
# mDNIe
chown system system /sys/class/mdnie/mdnie/negative
chown system system /sys/class/mdnie/mdnie/accessibility
chown system system /sys/class/mdnie/mdnie/mode
chown system system /sys/class/mdnie/mdnie/outdoor
chown system system /sys/class/mdnie/mdnie/playspeed
chown system system /sys/class/mdnie/mdnie/scenario
chown system system /sys/class/lcd/panel/window_type
chown system radio /sys/class/lcd/panel/power_reduce
chown system radio /sys/class/lcd/panel/siop_enable
chown system radio /sys/class/lcd/panel/temperature
# Dynamic FPS
chown system radio /sys/class/lcd/panel/fps_change
chmod 0664 /sys/class/lcd/panel/fps_change
# Auto-brightness
chown system system /sys/class/backlight/panel/auto_brightness
chmod 0660 /sys/class/backlight/panel/auto_brightness
# Touchscreen & touch keys
chown system radio /sys/class/sec/sec_touchkey/touchkey_firm_update
chown system radio /sys/class/sec/sec_touchkey/touch_sensitivity
chown system radio /sys/class/sec/sec_touchkey/flip_mode
chown system radio /sys/class/sec/sec_touchkey/glove_mode
chown system system /sys/class/sec/sec_touchkey/keypad_enable
chmod 0660 /sys/class/sec/sec_touchkey/keypad_enable
# TCP
chown system system /sys/kernel/ipv4/tcp_wmem_min
chown system system /sys/kernel/ipv4/tcp_wmem_def
chown system system /sys/kernel/ipv4/tcp_wmem_max
chown system system /sys/kernel/ipv4/tcp_rmem_min
chown system system /sys/kernel/ipv4/tcp_rmem_def
chown system system /sys/kernel/ipv4/tcp_rmem_max
# Allow remote updates to SELinux policy
chown system system /sys/fs/selinux/enforce
chown system system /sys/fs/selinux/load
# LEDs
chown system system /sys/class/sec/led/led_r
chown system system /sys/class/sec/led/led_g
chown system system /sys/class/sec/led/led_b
chown system system /sys/class/sec/led/led_pattern
chown system system /sys/class/sec/led/led_blink
chown system system /sys/class/sec/led/led_lowpower
# Accelerometer
chown system radio /sys/class/sensors/accelerometer_sensor/raw_data
chown system radio /sys/class/sensors/accelerometer_sensor/calibration
chown system radio /sys/class/sensors/accelerometer_sensor/reactive_alert
chown system radio /sys/class/sensors/accelerometer_sensor/vendor
chown system radio /sys/class/sensors/accelerometer_sensor/name
# Barometer
chown system radio /sys/class/sensors/barometer_sensor/sea_level_pressure
chown system radio /sys/class/sensors/barometer_sensor/vendor
chown system radio /sys/class/sensors/barometer_sensor/name
chown system radio /sys/class/sensors/barometer_sensor/calibration
chown system radio /sys/class/sensors/barometer_sensor/eeprom_check
# Gesture sensor
chown system radio /sys/class/sensors/gesture_sensor/ir_current
chown system radio /sys/class/sensors/gesture_sensor/selftest
# Gyroscope
chown system radio /sys/class/sensors/gyro_sensor/power_on
chown system radio /sys/class/sensors/gyro_sensor/power_off
chown system radio /sys/class/sensors/gyro_sensor/temperature
chown system radio /sys/class/sensors/gyro_sensor/selftest
chown system radio /sys/class/sensors/gyro_sensor/selftest_dps
chown system radio /sys/class/sensors/gyro_sensor/vendor
chown system radio /sys/class/sensors/gyro_sensor/name
# Light sensor
chown system radio /sys/class/sensors/light_sensor/lux
chown system radio /sys/class/sensors/light_sensor/raw_data
chown system radio /sys/class/sensors/light_sensor/vendor
chown system radio /sys/class/sensors/light_sensor/name
chown system radio /sys/class/sensors/light_sensor/enable
# Magnetometer
chown system radio /sys/class/sensors/magnetic_sensor/raw_data
chown system radio /sys/class/sensors/magnetic_sensor/vendor
chown system radio /sys/class/sensors/magnetic_sensor/name
# Proximity sensor
chown system radio /sys/class/sensors/proximity_sensor/state
chown system radio /sys/class/sensors/proximity_sensor/raw_data
chown system radio /sys/class/sensors/proximity_sensor/prox_avg
chown system radio /sys/class/sensors/proximity_sensor/prox_cal
chown system radio /sys/class/sensors/proximity_sensor/vendor
chown system radio /sys/class/sensors/proximity_sensor/name
chown system radio /sys/class/sensors/proximity_sensor/thresh_high
chown system radio /sys/class/sensors/proximity_sensor/thresh_low
chown system radio /sys/class/sensors/proximity_sensor/barcode_emul_en
chown system radio /sys/class/sensors/proximity_sensor/enable
# Temperature and humidity sensor
chown system radio /sys/class/sensors/temphumidity_sensor/vendor
chown system radio /sys/class/sensors/temphumidity_sensor/name
chown system radio /sys/class/sensors/temphumidity_sensor/engine_ver
chown system radio /sys/class/sensors/temphumidity_sensor/engine_ver2
chown system radio /sys/class/sensors/temphumidity_sensor/cp_thm
chown system radio /sys/class/sensors/temphumidity_sensor/send_accuracy
# Sensor hub
chown system radio /sys/class/sensors/ssp_sensor/enable
chown system radio /sys/class/sensors/ssp_sensor/enable_irq
chown system radio /sys/class/sensors/ssp_sensor/mcu_name
chown system radio /sys/class/sensors/ssp_sensor/mcu_reset
chown system radio /sys/class/sensors/ssp_sensor/mcu_rev
chown system radio /sys/class/sensors/ssp_sensor/mcu_sleep_test
chown system radio /sys/class/sensors/ssp_sensor/mcu_test
chown system radio /sys/class/sensors/ssp_sensor/mcu_update
# Vibrator
chown system system /sys/class/timed_output/vibrator/enable
chown system system /sys/class/timed_output/vibrator/pwm_default
chown system system /sys/class/timed_output/vibrator/pwm_max
chown system system /sys/class/timed_output/vibrator/pwm_min
chown system system /sys/class/timed_output/vibrator/pwm_threshold
chown system system /sys/class/timed_output/vibrator/pwm_value
chmod 0660 /sys/class/timed_output/vibrator/pwm_default
chmod 0660 /sys/class/timed_output/vibrator/pwm_max
chmod 0660 /sys/class/timed_output/vibrator/pwm_min
chmod 0660 /sys/class/timed_output/vibrator/pwm_threshold
chmod 0660 /sys/class/timed_output/vibrator/pwm_value
# Barcode emulation
chown system radio /sys/class/sec/sec_barcode_emul/barcode_led_status
chown system radio /sys/class/sec/sec_barcode_emul/barcode_send
chown system radio /sys/class/sec/sec_barcode_emul/barcode_ver_check
# IR LED
chown system radio /sys/class/sec/sec_ir/ir_send
chown system radio /sys/class/sec/sec_ir/ir_send_result
# RIL fast dormancy
chown system radio /sys/class/sec/bamdmux/waketime
#Set freeze timeout to 2 seconds
write /sys/power/pm_freeze_timeout 2000
# Wifi firmware reload path
chown wifi wifi /sys/module/dhd/parameters/firmware_path
service qcamerasvr /system/vendor/bin/mm-qcamera-daemon
class late_start
user camera
group camera system inet input graphics
service mpdecision /system/vendor/bin/mpdecision --avg_comp
class main
user root
group system readproc wakelock
disabled
service kickstart /system/vendor/bin/qcks -i /firmware-mdm/image/
user root
group radio cache inet misc audio sdcard_rw log system
oneshot
disabled
on property:ro.baseband=mdm
start kickstart
service qseecomd /system/vendor/bin/qseecomd
class late_start
user system
group system
service insthk /system/vendor/bin/insthk
class main
user root
disabled
oneshot
seclabel u:r:insthk_exec:s0
on property:sys.qseecomd.enable=true
start insthk
# Run Kernel and ROM Tunings
service qcom-post-boot /sbin/bb/busybox sh /sbin/ext/busybox.sh
user root
seclabel u:r:init:s0
disabled
oneshot
# Install busybox
service kernel-bb /sbin/ext/bb.sh
class late_start
user root
seclabel u:r:init:s0
oneshot
# LEDify
service ledify /system/vendor/bin/ledify
class late_start
user root
group shell
seclabel u:r:init:s0
oneshot
on property:sys.boot_completed=1
write /sys/module/msm_thermal/core_control/enabled 0
stop mpdecision
start qcom-post-boot
service irsc_util /system/vendor/bin/irsc_util "/system/vendor/etc/sec_config"
class main
user root
oneshot
# QMUX must be in multiple groups to support external process connections
service qmuxd /system/vendor/bin/qmuxd
class main
user root
group radio audio bluetooth gps diag log
service netmgrd /system/vendor/bin/netmgrd
class main
group radio system wakelock
# Adjust socket buffer to enlarge TCP receive window for high bandwidth
# but only if ro.data.large_tcp_window_size property is set.
on property:ro.data.large_tcp_window_size=true
write /proc/sys/net/ipv4/tcp_adv_win_scale 2
service wpa_supplicant /vendor/bin/hw/wpa_supplicant \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
-I/vendor/etc/wifi/wpa_supplicant_overlay.conf -N \
-ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
-I/vendor/etc/wifi/p2p_supplicant_overlay.conf \
-puse_p2p_group_interface=1 -puse_multi_chan_concurrent=1 \
-e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
# we will start as root and wpa_supplicant will switch to user wifi
# after setting up the capabilities required for WEXT
# user wifi
# group wifi inet keystore
class main
socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
service macloader /system/bin/macloader
class main
oneshot
seclabel u:r:macloader_exec:s0
on property:init.svc.macloader=stopped
chown root system /data/.rev
chmod 0664 /data/.rev
service charger /charger
class charger
seclabel u:r:charger:s0
service thermald /system/vendor/bin/thermald
class main
user root
group radio system
# Disable boot timeout for external modems.
on property:persist.sys.mdm.timeout_disable=1
write /sys/module/mdm_common/parameters/disable_boot_timeout 1