# Copyright (c) 2013-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
    mkdir /firmware-modem 0771 system system
    mkdir /system 0777 root root
    symlink /data/tombstones /tombstones

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/bootdevice/by-name/cache
    check_fs /dev/block/bootdevice/by-name/cache ext4
    mount ext4 /dev/block/bootdevice/by-name/cache /cache nosuid nodev noatime noauto_da_alloc,discard,journal_async_commit,errors=panic

    wait /dev/block/bootdevice/by-name/persist
    check_fs /dev/block/bootdevice/by-name/persist ext4
    mount ext4 /dev/block/bootdevice/by-name/persist /persist nosuid nodev noatime noauto_da_alloc,discard,journal_async_commit,errors=panic
    mkdir /persist/data 0700  system system
    restorecon_recursive   /persist

    wait /dev/block/bootdevice/by-name/efs
    check_fs /dev/block/bootdevice/by-name/efs ext4
    mount ext4 /dev/block/bootdevice/by-name/efs /efs nosuid nodev noatime noauto_da_alloc,discard,journal_async_commit,errors=panic
    chown system radio /efs
    chmod 0771 /efs
    rm -rf /efs/dmverity
    restorecon -R /efs
	
on fs_sec_selinux
	
	wait /dev/block/bootdevice/by-name/apnhlos
    mount vfat /dev/block/bootdevice/by-name/apnhlos /firmware ro shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware:s0

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

	
on fs_selinux

    wait /dev/block/bootdevice/by-name/apnhlos
    mount vfat /dev/block/bootdevice/by-name/apnhlos /firmware ro shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337
    
    wait /dev/block/bootdevice/by-name/modem
    mount vfat /dev/block/bootdevice/by-name/modem /firmware-modem ro shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337

	
    #write /sys/kernel/boot_adsp/boot 1

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 /persist/data/sfs 0700 system system
    mkdir /persist/data/tz 0700 system system
    mkdir /data/misc/dts 0770 media audio
#start camera server as daemon
service qcamerasvr /system/bin/mm-qcamera-daemon
    class main
    user camera
    group camera system inet input graphics

#enable zram
on property:ro.config.zram=true
    swapon_all fstab.qcom
#    write /proc/sys/vm/swappiness 100

#start gpu_snapshotd for gpu hang issue debugging
service gpu_snapshotd /system/bin/gpu_snapshotd -s /sys/class/kgsl/kgsl-3d0/snapshot -d /data/log/ -m 0700
    class late_start
    user system
    group system  

# Allow usb charging to be disabled peristently
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

service qrngp /system/bin/qrngp -f
   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 aostlmd /system/bin/aostlmd
#   class late_start
#   user system
#   group system net_raw

#service mpdecision /system/bin/mpdecision --avg_comp
#   user root
#   disabled

service perfd /system/bin/perfd
   class main
   user root
   disabled

service thermal-engine /system/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 time_daemon /system/bin/time_daemon
   class late_start
   user root
   group root

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

on boot
    start rmt_storage
    #load modules at boot
    insmod /system/lib/modules/adsprpc.ko
    insmod /system/lib/modules/ansi_cprng.ko
    insmod /system/lib/modules/core_ctl.ko
    insmod /system/lib/modules/evbug.ko
    insmod /system/lib/modules/gator.ko
    insmod /system/lib/modules/msm-buspm-dev.ko
    insmod /system/lib/modules/spidev.ko
    insmod /system/lib/modules/tcp_htcp.ko
    insmod /system/lib/modules/tcp_westwood.ko
    insmod /system/lib/modules/radio-iris-transport.ko
    insmod /system/lib/modules/pronto/pronto_wlan.ko    
# access permission for secure touch
    chmod 0660 /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0020/secure_touch_enable
    chmod 0440 /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0020/secure_touch
    chmod 0660 /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0070/secure_touch_enable
    chmod 0440 /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0070/secure_touch
    chown system drmrpc /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0020/secure_touch_enable
    chown system drmrpc /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0020/secure_touch
    chown system drmrpc /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0070/secure_touch_enable
    chown system drmrpc /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0070/secure_touch

#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 wcnss-service /system/bin/wcnss_service
    class main
    user system
    group system wifi radio
    oneshot

on charger
    wait /dev/block/bootdevice/by-name/system
    mount ext4 /dev/block/bootdevice/by-name/system /system ro barrier=1
    chown root system /sys/class/power_supply/bms/current_now
    chown root system /sys/class/power_supply/bms/voltage_ocv
    chmod 0664 /sys/class/power_supply/bms/current_now
    chmod 0664 /sys/class/power_supply/bms/voltage_ocv
    start vm_bms
    load_all_props
    start qcom-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

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
   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

# SecEDS
service TvoutService_C /system/bin/bintvoutservice
    class main
    user system
    group graphics
on property:ro.SecEDS.enable=false
    stop TvoutService_C

