Home | History | Annotate | Download | only in bullhead
      1 #
      2 # Copyright 2015 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the "License");
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #      http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 #
     16 
     17 import init.bullhead.usb.rc
     18 import init.bullhead.diag.rc
     19 import init.bullhead.fp.rc
     20 import init.bullhead.sensorhub.rc
     21 import init.bullhead.ramdump.rc
     22 import init.bullhead.misc.rc
     23 
     24 on early-init
     25     mount debugfs debugfs /sys/kernel/debug
     26     chown system system /sys/kernel/debug/kgsl/proc
     27 
     28 on charger
     29     # disable FPS clk
     30     write /sys/bus/spi/drivers/fpc1020/spi1.2/clk_enable 0
     31 
     32     # low power governing
     33     write /sys/devices/system/cpu/cpu1/online 0
     34     write /sys/devices/system/cpu/cpu2/online 0
     35     write /sys/devices/system/cpu/cpu3/online 0
     36     write /sys/devices/system/cpu/cpu4/online 0
     37     write /sys/devices/system/cpu/cpu5/online 0
     38     write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor powersave
     39 
     40     # Disable CPU retention
     41     write /sys/module/lpm_levels/system/a53/cpu0/retention/idle_enabled 0
     42     write /sys/module/lpm_levels/system/a53/cpu1/retention/idle_enabled 0
     43     write /sys/module/lpm_levels/system/a53/cpu2/retention/idle_enabled 0
     44     write /sys/module/lpm_levels/system/a53/cpu3/retention/idle_enabled 0
     45     write /sys/module/lpm_levels/system/a57/cpu4/retention/idle_enabled 0
     46     write /sys/module/lpm_levels/system/a57/cpu5/retention/idle_enabled 0
     47     # Disable L2 retention
     48     write /sys/module/lpm_levels/system/a53/a53-l2-retention/idle_enabled 0
     49     write /sys/module/lpm_levels/system/a57/a57-l2-retention/idle_enabled 0
     50 
     51 on property:sys.boot_completed=1
     52     # allow CPUs to go in deeper idle state than C0
     53     write /sys/module/lpm_levels/parameters/sleep_disabled 0
     54 
     55 on init
     56     # Load persistent dm-verity state
     57     verity_load_state
     58 
     59     # Set permissions for persist partition
     60     mkdir /persist 0771 system system
     61     mkdir /firmware 0771 system system
     62 
     63     symlink /sdcard /storage/sdcard0
     64 
     65     # NXP HAL expects /dev/pn54x
     66     symlink /dev/pn548 /dev/pn54x
     67 
     68     write /sys/block/zram0/comp_algorithm lz4
     69     write /sys/block/zram0/max_comp_streams 4
     70 
     71     write /proc/sys/vm/page-cluster 0
     72 
     73 on fs
     74     mount_all ./fstab.bullhead
     75     swapon_all ./fstab.bullhead
     76 
     77     restorecon_recursive /persist
     78 
     79 on early-boot
     80     # set RLIMIT_MEMLOCK to 64MB
     81     setrlimit 8 67108864 67108864
     82 
     83     # Allow subsystem (modem etc) debugging
     84     write /sys/module/subsystem_restart/parameters/enable_debug ${persist.sys.ssr.enable_debug}
     85     write /sys/module/pil_msa/parameters/pbl_mba_boot_timeout_ms ${persist.sys.mba_boot_timeout}
     86     write /sys/module/pil_msa/parameters/modem_auth_timeout_ms ${persist.sys.modem_auth_timeout}
     87     write /sys/module/peripheral_loader/parameters/proxy_timeout_ms ${persist.sys.pil_proxy_timeout}
     88 
     89     # Update dm-verity state and set partition.*.verified properties
     90     verity_update_state
     91 
     92 on boot
     93     # execute script to set initial CPU settings
     94     # don't run as a service to avoid race conditions
     95     exec - root root system -- /system/bin/init.bullhead.power.sh
     96 
     97     # update foreground cpuset now that processors are up
     98     # foreground gets all CPUs except CPU 3
     99     # CPU 3 is reserved for the top app
    100     write /dev/cpuset/foreground/cpus 0-2,4-5
    101     write /dev/cpuset/foreground/boost/cpus 4-5
    102     write /dev/cpuset/background/cpus 0
    103     write /dev/cpuset/system-background/cpus 0-2
    104     write /dev/cpuset/top-app/cpus 0-5
    105 
    106     # Bluetooth
    107     chown bluetooth net_bt /sys/class/rfkill/rfkill0/type
    108     chown bluetooth net_bt /sys/class/rfkill/rfkill0/state
    109     chmod 0660 /sys/class/rfkill/rfkill0/state
    110     chown bluetooth net_bt /dev/ttyHS0
    111     chmod 0660 /dev/ttyHS0
    112     chown bluetooth net_bt /sys/class/rfkill/rfkill0/device/extldo
    113     chmod 0660 /sys/class/rfkill/rfkill0/device/extldo
    114 
    115     # Fingerprint
    116     chown system system /sys/bus/spi/drivers/fpc1020/spi1.2/clk_enable
    117     chown system system /sys/bus/spi/drivers/fpc1020/spi1.2/wakeup_enable
    118     chown system system /sys/bus/spi/drivers/fpc1020/spi1.2/irq
    119 
    120     # create symlink for fb1 as HDMI
    121     symlink /dev/graphics/fb1 /dev/graphics/hdmi
    122 
    123     # setup permissions for fb1 related nodes
    124     chown system graphics /sys/class/graphics/fb1/hpd
    125     chown system graphics /sys/class/graphics/fb1/vendor_name
    126     chown system graphics /sys/class/graphics/fb1/product_description
    127     chmod 0664 /sys/devices/virtual/graphics/fb1/hpd
    128     chmod 0664 /sys/devices/virtual/graphics/fb1/vendor_name
    129     chmod 0664 /sys/devices/virtual/graphics/fb1/product_description
    130 
    131     # Grant permission to modify the color_temp setting
    132     chown system graphics /sys/class/graphics/fb0/color_temp
    133     chmod 0664 /sys/class/graphics/fb0/color_temp
    134 
    135     # Allow QMUX daemon to assign port open wait time
    136     chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait
    137 
    138     #Create QMUX deamon socket area
    139     mkdir /dev/socket/qmux_radio 0770 radio radio
    140     chmod 2770 /dev/socket/qmux_radio
    141     mkdir /dev/socket/qmux_audio 0770 media audio
    142     chmod 2770 /dev/socket/qmux_audio
    143     mkdir /dev/socket/qmux_bluetooth 0770 bluetooth bluetooth
    144     chmod 2770 /dev/socket/qmux_bluetooth
    145     mkdir /dev/socket/qmux_gps 0770 gps gps
    146     chmod 2770 /dev/socket/qmux_gps
    147 
    148     # Subsytem Restart
    149     write /sys/bus/msm_subsys/devices/subsys0/restart_level "related"
    150     write /sys/bus/msm_subsys/devices/subsys1/restart_level "related"
    151     write /sys/bus/msm_subsys/devices/subsys2/restart_level "related"
    152     write /sys/bus/msm_subsys/devices/subsys3/restart_level "related"
    153 
    154     # Subsytem Ramdump collection
    155     write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
    156     write /sys/module/msm_poweroff/parameters/download_mode 0
    157 
    158     # Adjust socket buffer to enlarge TCP receive window for high bandwidth
    159     write /proc/sys/net/ipv4/tcp_adv_win_scale 1
    160 
    161     # Assign TCP buffer thresholds to be ceiling value of technology maximums
    162     # Increased technology maximums should be reflected here.
    163     write /proc/sys/net/core/rmem_max  8388608
    164     write /proc/sys/net/core/wmem_max  8388608
    165 
    166     # Leds
    167     chown system system /sys/class/leds/red/on_off_ms
    168     chown system system /sys/class/leds/green/on_off_ms
    169     chown system system /sys/class/leds/blue/on_off_ms
    170     chown system system /sys/class/leds/red/rgb_start
    171 
    172     write /sys/block/mmcblk0/queue/rq_affinity 0
    173     write /sys/block/mmcblk0/queue/scheduler noop
    174 
    175 on post-fs
    176     symlink /dev/block/platform/soc.0/f9824900.sdhci /dev/block/bootdevice
    177 
    178     mkdir /persist/data 0700 system system
    179     mkdir /persist/data/sfs 0700 system system
    180     mkdir /persist/data/tz 0700 system system
    181     mkdir /persist/data/app_g 0700 system system
    182     mkdir /persist/widevine 0770 drm system
    183 
    184     start qseecomd
    185     exec - root root system -- /system/bin/init.bullhead.qseecomd.sh
    186 
    187 on post-fs-data
    188     # Mark the copy complete flag to not completed
    189     mkdir /data/misc/radio 0770 radio radio
    190     write /data/misc/radio/copy_complete 0
    191     chown radio radio /data/misc/radio/copy_complete
    192     chmod 0660 /data/misc/radio/copy_complete
    193 
    194     write /sys/kernel/boot_adsp/boot 1
    195 
    196     #Update touch firmware if required
    197     write /sys/bus/i2c/devices/2-0020/check_fw 1
    198     write /sys/devices/soc.0/f9924000.i2c/power/control on
    199 
    200     # Create /data/time folder for time-services
    201     mkdir /data/time/ 0700 system system
    202 
    203     # Create the directories used by CnE subsystem
    204     mkdir /data/connectivity 0771 system system
    205 
    206     # NFC: create data/nfc for nv storage
    207     mkdir /data/nfc 0770 nfc nfc
    208     mkdir /data/nfc/param 0770 nfc nfc
    209 
    210     # use qcril.db to handle Ecc and load MBN
    211     copy /system/etc/qcril.db /data/misc/radio/qcril.db
    212     chown radio radio /data/misc/radio/qcril.db
    213     chmod 0600 /data/misc/radio/qcril.db
    214 
    215     # Create folder for mm-qcamera-daemon
    216     mkdir /data/misc/camera 0770 camera camera
    217 
    218     # change permission for ldaf
    219     chown input system /persist/calibration
    220     chmod 0650 /persist/calibration
    221     chown input system /persist/calibration/offset
    222     chmod 0640 /persist/calibration/offset
    223     chown input system /persist/calibration/xtalk
    224     chmod 0640 /persist/calibration/xtalk
    225 
    226     #Create directories for Location services
    227     mkdir /data/misc/location 0770 gps gps
    228     mkdir /data/misc/location/mq 0770 gps gps
    229     mkdir /data/misc/location/xtwifi 0770 gps gps
    230     mkdir /data/misc/location/gpsone_d 0770 system gps
    231 
    232     # Audio
    233     mkdir /data/misc/audio 0770 audio audio
    234 
    235     # perf daemon
    236     mkdir /data/misc/perfd 0755 root system
    237     chmod 2755 /data/misc/perfd
    238     rm /data/misc/perfd/default_values
    239 
    240     # Subsytem Ramdump collection
    241     mkdir /data/ramdump 0700 root root
    242 
    243     setprop vold.post_fs_data_done 1
    244 
    245 service irsc_util /system/bin/irsc_util "/etc/sec_config"
    246     class main
    247     user root
    248     oneshot
    249 
    250 service rmt_storage /system/bin/rmt_storage
    251     class core
    252     user root
    253     group system wakelock
    254 
    255 service start_hci_filter /system/bin/wcnss_filter
    256     class late_start
    257     user bluetooth
    258     group bluetooth system
    259     disabled
    260 
    261 on property:wc_transport.start_hci=true
    262     start start_hci_filter
    263 
    264 on property:wc_transport.start_hci=false
    265     stop start_hci_filter
    266 
    267 # QMUX must be in multiple groups to support external process connections
    268 service qmuxd /system/bin/qmuxd
    269     class main
    270     user radio
    271     group radio audio bluetooth wakelock gps
    272 
    273 service perfd /system/bin/perfd
    274     class main
    275     user root
    276     group system
    277     writepid /dev/cpuset/system-background/tasks
    278 
    279 service qti /system/vendor/bin/qti
    280     class main
    281     user radio
    282     group radio net_raw diag usb net_admin
    283 
    284 service netmgrd /system/bin/netmgrd
    285     class main
    286     group radio system wakelock
    287 
    288 service per_mgr /system/bin/pm-service
    289     class core
    290     user system
    291     group system net_raw
    292 
    293 service per_proxy /system/bin/pm-proxy
    294     class core
    295     user system
    296     group system net_raw
    297     disabled
    298 
    299 on property:init.svc.per_mgr=running
    300     start per_proxy
    301 
    302 on property:sys.shutdown.requested=*
    303     stop per_proxy
    304 
    305 on property:ro.boot.hardware.sku=LGH790
    306     setprop ro.boot.wificountrycode US
    307 
    308 on property:ro.boot.hardware.sku=LGH791
    309     setprop ro.boot.wificountrycode 00
    310 
    311 on property:ro.boot.hardware.sku=LGH791F
    312     setprop ro.boot.wificountrycode 00
    313 
    314 on property:ro.boot.hardware.sku=LGH798
    315     setprop ro.boot.wificountrycode 00
    316 
    317 service thermal-engine /system/bin/thermal-engine
    318     class main
    319     user root
    320     socket thermal-send-client stream 0666 system system
    321     socket thermal-recv-client stream 0660 system system
    322     socket thermal-recv-passive-client stream 0666 system system
    323     group root
    324 
    325 service wpa_supplicant /system/bin/wpa_supplicant \
    326     -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    327     -I/system/etc/wifi/wpa_supplicant_overlay.conf \
    328     -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
    329     #   we will start as root and wpa_supplicant will switch to user wifi
    330     #   after setting up the capabilities required for WEXT
    331     #   user wifi
    332     #   group wifi inet keystore
    333     class main
    334     socket wpa_wlan0 dgram 660 wifi wifi
    335     disabled
    336     oneshot
    337 
    338 service p2p_supplicant /system/bin/wpa_supplicant \
    339     -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
    340     -I/system/etc/wifi/p2p_supplicant_overlay.conf -N \
    341     -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    342     -I/system/etc/wifi/wpa_supplicant_overlay.conf \
    343     -puse_p2p_group_interface=1 \
    344     -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
    345 #   we will start as root and wpa_supplicant will switch to user wifi
    346 #   after setting up the capabilities required for WEXT
    347 #   user wifi
    348 #   group wifi inet keystore
    349     class main
    350     socket wpa_wlan0 dgram 660 wifi wifi
    351     disabled
    352     oneshot
    353 
    354 service loc_launcher /system/bin/loc_launcher
    355     #loc_launcher will start as root and set its uid to gps
    356     class late_start
    357     group gps inet net_raw diag net_admin wifi
    358 
    359 service cnss-daemon /system/bin/cnss-daemon -n -l
    360     class late_start
    361 
    362 service qseecomd /vendor/bin/qseecomd
    363     class core
    364     user root
    365     group root
    366 
    367 service msm_irqbalance /system/bin/msm_irqbalance -f /vendor/etc/msm_irqbalance.conf
    368     socket msm_irqbalance seqpacket 660 root system
    369     class core
    370     user root
    371     group root
    372     writepid /dev/cpuset/system-background/tasks
    373 
    374 service time_daemon /system/bin/time_daemon
    375     class late_start
    376     user root
    377     group root
    378 
    379 service charger /sbin/healthd -c
    380     class charger
    381     critical
    382     seclabel u:r:healthd:s0
    383 
    384 service qcamerasvr /vendor/bin/mm-qcamera-daemon
    385     class late_start
    386     user camera
    387     group camera system inet input graphics
    388     writepid /dev/cpuset/system-background/tasks
    389 
    390 on property:persist.radio.atfwd.start=false
    391     stop atfwd
    392 
    393 service atfwd /system/bin/ATFWD-daemon
    394     class late_start
    395     user system
    396     group system radio
    397 
    398 on property:ro.debuggable=1
    399     start ss_ramdump
    400 
    401 service ss_ramdump /system/bin/subsystem_ramdump
    402     class main
    403     user root
    404     group root system
    405     disabled
    406 
    407 service cnd /system/bin/cnd
    408     class late_start
    409     socket cnd stream 660 root inet
    410     group root wakelock
    411 
    412 service imsqmidaemon /system/bin/imsqmidaemon
    413     class main
    414     user system
    415     socket ims_qmid stream 0660 system radio
    416     group radio net_raw log diag
    417 
    418 service imsdatadaemon /system/bin/imsdatadaemon
    419     class main
    420     user system
    421     socket ims_datad stream 0660 system radio
    422     group system wifi radio inet net_raw log diag net_admin
    423     disabled
    424 
    425 on property:sys.ims.QMI_DAEMON_STATUS=1
    426     start imsdatadaemon
    427 
    428 service bullhead-sh /system/bin/init.bullhead.sh
    429     class late_start
    430     user radio
    431     group system
    432     oneshot
    433 
    434 # bugreport is triggered by holding down volume down, volume up and power
    435 service bugreport /system/bin/dumpstate -d -p -B -z \
    436         -o /data/user_de/0/com.android.shell/files/bugreports/bugreport
    437     class main
    438     disabled
    439     oneshot
    440     keycodes 114 115 116
    441 
    442 service fingerprintd /system/bin/fingerprintd
    443     class late_start
    444     user system
    445     group system input
    446 
    447