# Copyright (c) 2013-2017, 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 /bt_firmware 0771 system system
    mkdir /dsp 0771 media media

on init
    write /dev/stune/foreground/schedtune.sched_boost_no_override 1
    write /dev/stune/top-app/schedtune.sched_boost_no_override 1
    write /dev/stune/schedtune.colocate 0
    write /dev/stune/background/schedtune.colocate 0
    write /dev/stune/system-background/schedtune.colocate 0
    write /dev/stune/foreground/schedtune.colocate 0
    write /dev/stune/top-app/schedtune.colocate 1

on fs
    wait /dev/block/platform/soc/${ro.boot.bootdevice}
    symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice
    mount_all /vendor/etc/fstab.qcom
    swapon_all /vendor/etc/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/persist
    #mount ext4 /dev/block/bootdevice/by-name/persist /persist nosuid nodev noatime barrier=1
    #mkdir /persist/data 0700 system system
    #mkdir /persist/bms 0700 root system
    #restorecon_recursive /persist
    write /sys/kernel/boot_adsp/boot 1

on post-fs
    restorecon_recursive /persist
    exec - root root -- /vendor/bin/init.huaqin.persist.sh
    start qseecomd
    exec - system system -- /vendor/bin/init.qti.qseecomd.sh
    write /dev/ipa 1
    # Update dm-verity state and set partition.*.verified properties
    verity_update_state

on init
    write /sys/module/qpnp_rtc/parameters/poweron_alarm 1

on post-fs-data
    mkdir /data/tombstones/modem 0771 system system
    mkdir /data/tombstones/lpass 0771 system system
    mkdir /data/tombstones/wcnss 0771 system system
    mkdir /data/tombstones/dsps 0771 system system
    mkdir /data/vendor/hbtp 0750 system system
    mkdir /persist/qti_fp 0700 system system
    mkdir /data/misc/seemp 0700 system system
    mkdir /data/misc/tloc 0700 system drmrpc
    mkdir /persist/data 0700 system system
    mkdir /persist/bms 0700 root system
    mkdir /data/thermal 0771 system system
    mkdir /data/thermal/config 0771 system system
    chmod 0664 /sys/class/thermal/thermal_message/sconfig
    chown system system /sys/class/thermal/thermal_message/sconfig
#wangtao 20180227 add battery permission
    chmod 0644 /sys/class/power_supply/battery/charging_enabled
    chmod 0644 /sys/class/power_supply/battery/constant_charge_current_max
    restorecon_recursive /persist

on boot
    start rmt_storage
    start rfs_access
    write /dev/cpuset/top-app/cpus 0-7
    write /dev/cpuset/foreground/cpus 0-7
    write /dev/cpuset/foreground/boost/cpus 0-7
    write /dev/cpuset/background/cpus 0-7
    write /dev/cpuset/system-background/cpus 0-7
    ####Regionalization config and prop files####
    chmod 0644 /persist/speccfg/spec
    chmod 0644 /persist/speccfg/devicetype
    chmod 0644 /persist/speccfg/mbnversion
    chmod 0644 /persist/speccfg/.not_triggered
    chmod 0644 /persist/speccfg/vendor_ro.prop
    chmod 0644 /persist/speccfg/vendor_persist.prop
    chmod 0644 /persist/speccfg/submask
    chmod 0644 /persist/speccfg/partition
    chown system system /persist/speccfg/spec
    chown system system /persist/speccfg/devicetype
    chown system system /persist/speccfg/mbnversion
    chown system system /persist/speccfg/.not_triggered
    chown system system /persist/speccfg/vendor_ro.prop
    chown system system /persist/speccfg/vendor_persist.prop
    chown system system /persist/speccfg/submask
    chown system system /persist/speccfg/partition
    # wangtao open led permisions start
    chown system system /sys/class/leds/red/blink
    # wangtao open led permisions end
    # wendell-20180423 added for fpc fingerprint
    chown system system /sys/devices/soc/soc:fpc1020/compatible_all
    chmod 0664 /sys/devices/soc/soc:fpc1020/compatible_all
    chown system system /sys/devices/soc/soc:fpc1020/irq
    chmod 0660 /sys/devices/soc/soc:fpc1020/irq
    chown system system /sys/devices/soc/soc:fpc1020/hw_reset
    chmod 0660 /sys/devices/platform/soc/soc:fpc1020/hw_reset
    chown system system /sys/devices/soc/soc:fpc1020/wakeup_enable
    chmod 0660 /sys/devices/soc/soc:fpc1020/wakeup_enable
    #MIUI Patch modified for ZQL6019-4 by penghoubing@huaqin.com
    chown system system /sys/devices/soc/soc:fpc1020/fingerdown_wait
    chmod 0660 /sys/devices/soc/soc:fpc1020/fingerdown_wait

    # wendell-20180423 end
    start getpersistlog
    #Load WLAN driver
    insmod /vendor/lib/modules/qca_cld3/qca_cld3_wlan.ko
    setprop wlan.driver.status "ok"
    # Wifi firmware reload path
    chown wifi wifi /sys/module/wlan/parameters/fwpath

#Peripheral manager
service per_mgr /system/vendor/bin/pm-service
    class core
    user system
    group system
    ioprio rt 4

service per_proxy /system/vendor/bin/pm-proxy
    class core
    user system
    group system
    disabled

on property:init.svc.per_mgr=running
    start per_proxy

on property:sys.powerctl=*
    stop per_proxy

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

## import cne init file
#on post-fs
#    export LD_PRELOAD /vendor/lib/libNimsWrap.so
#
## 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 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 /vendor/bin/qseecomd
   class core
   user root
   group root

#service mpdecision /system/vendor/bin/mpdecision --avg_comp
#   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
   socket thermal-send-rule stream 0660 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/vendor/bin/time_daemon
   class late_start
   user root
   group root

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

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

service hbtp /system/vendor/bin/hbtp_daemon
    class main
    user system
    group system
    disabled

service audiod /system/vendor/bin/audiod
   class late_start
   user system
   group system
#
#service usf_tester /system/vendor/bin/usf_tester
#    user system
#    group system inet
#    disabled
#
#service usf_epos /system/vendor/bin/usf_epos
#    user system
#    group system inet
#    disabled
#
#service usf_gesture /system/vendor/bin/usf_gesture
#    user system
#    group system inet
#    disabled
#

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

#service usf_p2p /system/vendor/bin/usf_p2p
#    user system
#    group system inet
#    disabled
#
#service usf_hovering /system/vendor/bin/usf_hovering
#    user system
#    group system inet
#    disabled
#
#service usf_proximity /system/vendor/bin/usf_proximity
#    user system
#    group system inet
#    disabled
#
#service usf-post-boot /system/vendor/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
#
#
#on boot
#    insmod /system/lib/modules/adsprpc.ko
#    insmod /system/lib/modules/mhi.ko
## access permission for secure touch
#    chmod 0660 /sys/devices/f9966000.i2c/i2c-1/1-004a/secure_touch_enable
#    chmod 0440 /sys/devices/f9966000.i2c/i2c-1/1-004a/secure_touch
#    chmod 0660 /sys/devices/f9966000.i2c/i2c-1/1-0020/secure_touch_enable
#    chmod 0440 /sys/devices/f9966000.i2c/i2c-1/1-0020/secure_touch
#    chown system drmrpc /sys/devices/f9966000.i2c/i2c-1/1-004a/secure_touch_enable
#    chown system drmrpc /sys/devices/f9966000.i2c/i2c-1/1-004a/secure_touch
#    chown system drmrpc /sys/devices/f9966000.i2c/i2c-1/1-0020/secure_touch_enable
#    chown system drmrpc /sys/devices/f9966000.i2c/i2c-1/1-0020/secure_touch
#
#
service imsqmidaemon /system/vendor/bin/imsqmidaemon
    class main
    user system
    socket ims_qmid stream 0660 system radio
    group radio log diag

service imsdatadaemon /system/vendor/bin/imsdatadaemon
    class main
    user system
    socket ims_datad stream 0660 system radio
    group system wifi radio inet log diag
    disabled
#
#service mdm_helper /system/bin/mdm_helper
#    class core
#    onrestart setprop ro.service.mdm_helper_restarted "true"
#    disabled
#
#service mdm_helper_proxy /system/bin/mdm_helper_proxy
#    class core
#    disabled
#
#service mdm_launcher /system/bin/sh /init.mdm.sh
#    class main
#    oneshot
#
#service qcamerasvr /system/bin/mm-qcamera-daemon
#    class late_start
#    user camera
#    group camera system inet input graphics
#
# Stop mdm_helper_proxy in case of shutdown
#on property:sys.shutdown.requested=*
#    stop mdm_helper_proxy
#
# Stop mdm_helper_proxy on APQ target
#on property:ro.radio.noril=yes
#    stop mdm_helper_proxy
#
#on property:persist.airplane.mode.pwr.svg=enabled
#    setprop ro.mdm_helper_proxy_req false
#
#on property:init.svc.ril-daemon=running
#    setprop ro.mdm_helper_proxy_req true
#
## Start mdm_helper_proxy
#on property:ro.mdm_helper_proxy_req=true
#    start mdm_helper_proxy
#
## QCA1530 SoC core detect
#service gnss-detect /system/vendor/bin/gnss.qca1530.sh detect
#   class core
#   oneshot

service energy-awareness /system/vendor/bin/energy-awareness
    class main
    user system
    group system
    oneshot

service mdtpd /system/vendor/bin/mdtpd
    class late_start
    user root
    group system radio drmrpc

service gsort /system/bin/gsort
    user root
    disabled
    oneshot
    seclabel u:r:smartpa:s0
on property:sys.gsort=1
    start gsort

service gsorttest /system/bin/gsorttest.sh
    user root
    disabled
    oneshot
    seclabel u:r:smartpa:s0
on property:sys.gsortcheck=1
    start gsorttest

# hq log start
service  getaplog /system/bin/getlog -c
    disabled
    user root
    oneshot
    seclabel u:r:logoem:s0

service  stopaplog /system/bin/getlog -s
    disabled
    user root
    oneshot
    seclabel u:r:logoem:s0

on property:persist.sys.debug.getaplog=1
    restart getaplog
on property:persist.sys.debug.getaplog=0
    start stopaplog

service  getqxdmlog /system/bin/getlog -q
    disabled
    user root
    oneshot
    seclabel u:r:logoem:s0

service  stopqxdmlog /system/bin/getlog -x
    disabled
    user root
    oneshot
    seclabel u:r:logoem:s0

on property:persist.sys.debug.getqxdmlog=1
    restart getqxdmlog
on property:persist.sys.debug.getqxdmlog=0
    start stopqxdmlog

service  cpanrlog  /system/bin/sh /system/etc/cpanrlog.sh
    disabled
    user root
    oneshot
    seclabel u:r:logoem:s0

service  cptomblog  /system/bin/sh /system/etc/cptomblog.sh
    disabled
    user root
    oneshot
    seclabel u:r:logoem:s0
service  gettcpdumplog /system/bin/getlog -t
    disabled
    user root
    oneshot
    seclabel u:r:logoem:s0

service  stoptcpdumplog /system/bin/getlog -p
    disabled
    user root
    oneshot
    seclabel u:r:logoem:s0

service  getpersistlog /system/bin/getpersistlog
    class main
    user root
    oneshot
    seclabel u:r:logoem:s0

on property:sys.boot_completed=1
    start getpersistlog
on property:persist.sys.debug.gettcpdump=1
    restart gettcpdumplog
on property:persist.sys.debug.gettcpdump=0
    start stoptcpdumplog

service getalllog /system/bin/sh /system/etc/getalllog.sh
    disabled
    user root
    oneshot
    seclabel u:r:logoem:s0
on property:persist.sys.debug.getalllog=1
    restart getalllog
on property:persist.sys.debug.getalllog=0
    stop getalllog
# hq log end

service pd_mapper /system/vendor/bin/pd-mapper
     class core

#
## QCA1530 SoC late_start group trigger
#service gnss-init /system/vendor/bin/gnss.qca1530.sh init
#   class late_start
#   oneshot
#
## QCA1530 SoC Service Daemon
#service gnss-svcd /system/vendor/bin/gnss.qca1530.sh start
#   class late_start
#   user root
#   group gps system qcom_diag diag log inet net_raw
#   disabled

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

service ims_rtp_daemon /system/vendor/bin/ims_rtp_daemon
   class main
   user system
   group radio diag inet log
   disabled

service vendor.imsrcsservice /system/vendor/bin/imsrcsd
   class main
   user system
   group radio diag inet log
   disabled

on property:vendor.ims.DATA_DAEMON_STATUS=1
    start ims_rtp_daemon
    start vendor.imsrcsservice


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

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

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

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

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

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

on property:init.svc.zygote=restarting
    stop ppd

on charger
    load_system_props
    start qcom-post-boot
    start hvdcp_opti
    setprop sys.usb.configfs 1
    start power_off_alarm
    # hq log
    setprop debug.charger.on 1

#
#service nqs /system/bin/nqs
#    class late_start
#    socket nqs_qsb_comm stream 660 system system
#    user system
#    group drmrpc
#
#service adsprpcd /system/vendor/bin/adsprpcd
#   class main
#   user media
#   group media
#
##Start picture quality tuning service
#service vqttoolservice /system/bin/vqttoolservice
#    class late_start
#    socket vqtss stream 0660 system system
#    user system
#    group system

service seempd /system/bin/seempd
    class late_start
    user system
    group system sdcard_rw
    socket seempdw dgram 0666 system system

service qfp-daemon /vendor/bin/qfp-daemon
    class late_start
    user system
    group system drmrpc diag input

service tlocd /system/bin/tloc_daemon
    class late_start
    user system
    group drmrpc

service hvdcp_opti /system/vendor/bin/hvdcp_opti
     class main
     user root
     group system wakelock

service smcinvoked /system/bin/smcinvoked
   class main
   user system
   group system

# Add for ZQL5018-103 by Sven to set max charge current
on property:sys.incall=true
    write /sys/class/power_supply/battery/constant_charge_current_max 500000

on property:sys.incall=false
    write /sys/class/power_supply/battery/constant_charge_current_max 2000000

#add for displayfeature
service openad /system/vendor/bin/displayf_bin s 1
    user root
    oneshot
    disabled

on property:sys.hq.ad=1
    start openad

service closead /system/vendor/bin/displayf_bin s 0
    user root
    oneshot
    disabled

on property:sys.hq.ad=0
    start closead