# Copyright (c) 2011-2014, 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 "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.
#
#

on early-init
    mkdir /firmware 0771 system system
    symlink /data/tombstones /tombstones

on init
    # Set the property to indicate type of virtual display to 0
    # 0 indicates that virtual display is not a Wifi display and that the
    # session is not exercised through RemoteDisplay in the android framework
    setprop persist.sys.wfd.virtual 0

on post-fs
    export LD_PRELOAD libNimsWrap.so

on fs
    mount_all fstab.qcom

    # Keeping following partitions outside fstab file. As user may not have
    # these partition flashed on the device. Failure to mount any partition in fstab file
    # results in failure to launch late-start class.

    wait /dev/block/platform/msm_sdcc.1/by-name/cache
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/cache /cache nosuid nodev barrier=1

    wait /dev/block/platform/msm_sdcc.1/by-name/persist
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/persist /persist nosuid nodev barrier=1
    restorecon_recursive   /persist
    mkdir /persist/data 0700 system system
    mkdir /persist/data/sfs 0700 system system
    mkdir /persist/data/tz 0700 system system

    wait /dev/block/platform/msm_sdcc.1/by-name/modem
    mount vfat /dev/block/platform/msm_sdcc.1/by-name/modem /firmware ro context=u:object_r:firmware_file:s0,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337

on post-fs-data
    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 /data/usf 0700 system system

on boot
    insmod /system/lib/modules/adsprpc.ko
# access permission for secure touch
    chmod 0660 /sys/devices/f9923000.i2c/i2c-1/1-004a/secure_touch_enable
    chmod 0440 /sys/devices/f9923000.i2c/i2c-1/1-004a/secure_touch
    chown system drmrpc /sys/devices/f9923000.i2c/i2c-1/1-004a/secure_touch_enable
    chown system drmrpc /sys/devices/f9923000.i2c/i2c-1/1-004a/secure_touch
    chmod 0660 /sys/devices/f9924000.i2c/i2c-2/2-004a/secure_touch_enable
    chmod 0440 /sys/devices/f9924000.i2c/i2c-2/2-004a/secure_touch
    chown system drmrpc /sys/devices/f9924000.i2c/i2c-2/2-004a/secure_touch_enable
    chown system drmrpc /sys/devices/f9924000.i2c/i2c-2/2-004a/secure_touch

# Allow usb charging to be disabled persistently
on property:persist.usb.chgdisabled=1
    write /sys/class/power_supply/battery/charging_enabled 0

on property:persist.usb.chgdisabled=0
    write /sys/class/power_supply/battery/charging_enabled 1

# bt_hsic_control
service bt_hsic_control /system/bin/sh /system/etc/hsic.control.bt.sh
    user root
    disabled

on property:bluetooth.hsic_ctrl=load_wlan
    start bt_hsic_control

on property:bluetooth.hsic_ctrl=unbind_hsic
    start bt_hsic_control

#start camera server as daemon
service qcamerasvr /system/bin/mm-qcamera-daemon
    class late_start
    user camera
    group camera system inet input graphics

#start gesture server as daemon
service qgesturesvr /system/bin/mm-gesture-daemon
    class late_start
    user system
    group system camera input graphics net_bt_stack

service qrngd /system/bin/qrngd -f
    class main
    user root
    group root

service qrngp /system/bin/qrngp
    class main
    user root
    group root
    oneshot
    disabled

on property:sys.boot_completed=1
    start qrngp

service qseecomd /system/bin/qseecomd
   class core
   user root
   group root

service mpdecision /system/bin/mpdecision --avg_comp
   class main
   user root
   disabled

service qosmgrd /system/bin/qosmgr /system/etc/qosmgr_rules.xml
   user system
   group system
   disabled

service thermal-engine /system/vendor/bin/thermal-engine
   class main
   user root
   socket thermal-send-client stream 0666 system system
   socket thermal-recv-client stream 0660 system system
   socket thermal-recv-passive-client stream 0666 system system
   group root

service security-check1 /sbin/security_boot_check system
    class core
    oneshot

service security-check2 /sbin/security_boot_check recovery
    class core
    oneshot

service time_daemon /system/bin/time_daemon
   class late_start
   user root
   group root

service adsprpcd /system/bin/adsprpcd
   class main
   user media
   group media

service audiod /system/bin/audiod
   class late_start
   user system
   group system

service usf_tester /system/bin/usf_tester
    user system
    group system inet
    disabled

service usf_epos /system/bin/usf_epos
    class main
    user system
    group system inet
    disabled

service usf_gesture /system/bin/usf_gesture
    user system
    group system inet
    disabled

service usf_sync_gesture /system/bin/usf_sync_gesture
    user system
    group system inet
    disabled

service usf_p2p /system/bin/usf_p2p
    user system
    group system inet
    disabled

service usf_hovering /system/bin/usf_hovering
    user system
    group system inet
    disabled

service usf_proximity /system/bin/usf_proximity
    user system
    group system inet
    disabled

service usf_pairing /system/bin/usf_pairing
    user system
    group system inet
    disabled

service usf_sw_calib /system/bin/usf_sw_calib
    user system
    group system inet
    disabled

service usf-post-boot /system/bin/sh /system/etc/usf_post_boot.sh
    class late_start
    user root
    disabled
    oneshot

on property:init.svc.bootanim=stopped
    start usf-post-boot

service imsqmidaemon /system/bin/imsqmidaemon
    class main
    user system
    socket ims_qmid stream 0660 system radio
    group radio net_raw log qcom_diag

service imsdatadaemon /system/bin/imsdatadaemon
    class main
    user system
    socket ims_datad stream 0660 system radio
    group system wifi radio inet net_raw log qcom_diag net_admin
    disabled

service wcnss-service /system/bin/wcnss_service
    class main
    user system
    group system wifi radio
    oneshot

on property:sys.ims.QMI_DAEMON_STATUS=1
    start imsdatadaemon

service ims_rtp_daemon /system/bin/ims_rtp_daemon
   class main
   user system
   socket ims_rtpd stream 0660 system radio
   group radio net_raw diag qcom_diag log inet
   disabled

service imscmservice /system/bin/imscmservice
   class main
   user system
   group radio net_raw diag qcom_diag log
   disabled

on property:sys.ims.DATA_DAEMON_STATUS=1
   start ims_rtp_daemon
   start imscmservice

service ppd /system/bin/mm-pp-daemon
    class late_start
    disabled
    user system
    socket pps stream 0660 system system
    group system graphics

on property:init.svc.surfaceflinger=stopped
    stop ppd

on property:init.svc.surfaceflinger=running
    start ppd

service nqs /system/bin/nqs
    class late_start
    socket nqs_qsb_comm stream 660 system system
    user system
    group drmrpc

service pfm /system/bin/pfm
    class late_start
    user system
    group system drmrpc mount

service ml_daemon /system/bin/ml_daemon
    class core
    user root
    group root
