# Copyright (c) 2013-2018, 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

    # Add a cpuset for the camera daemon
    mkdir /dev/cpuset/camera-daemon 0750 cameraserver cameraserver
    write /dev/cpuset/camera-daemon/cpus 0-7
    write /dev/cpuset/camera-daemon/mems 0
    chown cameraserver cameraserver /dev/cpuset/camera-daemon/tasks
    chmod 0660 /dev/cpuset/camera-daemon/tasks
    # chmod node /dev/gpio_rf
    chmod 0644 /dev/gpio_rf

    chown system system /dev/lirc0
    chmod 0660 /dev/lirc0

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
    chown root system /mnt/vendor/persist
    chmod 0771 /mnt/vendor/persist
    mkdir /mnt/vendor/persist/bluetooth 0770 bluetooth bluetooth
    mkdir /mnt/vendor/persist/data 0700 system system
    mkdir /mnt/vendor/persist/stability 0755 system system
    mkdir /mnt/vendor/persist/bms 0700 root system
    mkdir /mnt/vendor/persist/display 0770 system graphics
    mkdir /mnt/vendor/persist/hvdcp_opti 0770 root system
    mkdir /mnt/vendor/persist/secnvm 0770 system system
    mkdir /mnt/vendor/persist/time 0770 system system
    restorecon_recursive /mnt/vendor/persist
    write /sys/kernel/boot_adsp/boot 1
    chmod 0664 /sys/class/thermal/thermal_message/sconfig
    chown system system /sys/class/thermal/thermal_message/sconfig

on post-fs
    start vendor.qseecomd
    exec - system system -- /vendor/bin/init.qti.qseecomd.sh
    write /dev/ipa 1

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
#D2SP has no hbtp feature
#    mkdir /data/vendor/hbtp 0750 system system
#end
    mkdir /vendor/mnt/persist/qti_fp 0700 system system
    mkdir /data/misc/seemp 0700 system system
    mkdir /data/vendor/tloc 0700 system drmrpc

#USB controller configuration
    setprop vendor.usb.rndis.func.name "rndis_bam"
    setprop vendor.usb.rmnet.func.name "rmnet_bam"
    setprop vendor.usb.rmnet.inst.name "rmnet"
    setprop vendor.usb.dpl.inst.name "dpl"
    write /sys/module/usb_f_qcrndis/parameters/rndis_dl_max_xfer_size 15916
    setprop sys.usb.configfs 1
    mkdir /data/vendor/mac_addr 0770 system system
    mkdir /data/vendor/thermal 0771 root system
    mkdir /data/vendor/thermal/config 0771 root system

on boot
    start vendor.rmt_storage
    start rfs_access
    write /dev/cpuset/top-app/cpus 0-7
    write /dev/cpuset/audio-app/cpus 1-2
    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 /vendor/mnt/persist/speccfg/spec
    chmod 0644 /vendor/mnt/persist/speccfg/devicetype
    chmod 0644 /vendor/mnt/persist/speccfg/mbnversion
    chmod 0644 /vendor/mnt/persist/speccfg/.not_triggered
    chmod 0644 /vendor/mnt/persist/speccfg/vendor_ro.prop
    chmod 0644 /vendor/mnt/persist/speccfg/vendor_persist.prop
    chmod 0644 /vendor/mnt/persist/speccfg/submask
    chmod 0644 /vendor/mnt/persist/speccfg/partition
    chown system system /vendor/mnt/persist/speccfg/spec
    chown system system /vendor/mnt/persist/speccfg/devicetype
    chown system system /vendor/mnt/persist/speccfg/mbnversion
    chown system system /vendor/mnt/persist/speccfg/.not_triggered
    chown system system /vendor/mnt/persist/speccfg/vendor_ro.prop
    chown system system /vendor/mnt/persist/speccfg/vendor_persist.prop
    chown system system /vendor/mnt/persist/speccfg/submask
    chown system system /vendor/mnt/persist/speccfg/partition

#spk pa-cal lct-20180914
    chmod 0664 /dev/tiload_node

#Create folder dump yuv images while debugging
    mkdir /data/vendor/camera 0770 camera camera


#USB controller configuration
    setprop vendor.usb.rndis.func.name "rndis_bam"
    setprop vendor.usb.rmnet.func.name "rmnet_bam"
    setprop vendor.usb.rmnet.inst.name "rmnet"
    setprop vendor.usb.dpl.inst.name "dpl"
    write /sys/module/usb_f_qcrndis/parameters/rndis_dl_max_xfer_size 15916
    setprop sys.usb.configfs 1

    # Wifi firmware reload path
    chown wifi wifi /sys/module/wlan/parameters/fwpath

# default country code
    setprop ro.boot.wificountrycode 00

#add for display feature
    chown system system /sys/class/graphics/fb0/msm_fb_ce
    chown system system /sys/class/graphics/fb0/msm_fb_cabc
    chown system system /sys/class/graphics/fb0/msm_fb_srgb
    chown system system /sys/class/graphics/fb0/msm_fb_gamma
    chown system system /sys/class/graphics/fb0/msm_fb_cabc_movie
    chown system system /sys/class/graphics/fb0/msm_fb_cabc_still
    chown system system /sys/class/graphics/fb0/msm_fb_hbm

# XiaomiParts
    chown system system /sys/devices/virtual/timed_output/vibrator/vtg_level
    chmod 0660 /sys/devices/virtual/timed_output/vibrator/vtg_level
    chown system system /sys/module/hall/parameters/hall_toggle
    chmod 0660 /sys/module/hall/parameters/hall_toggle

# KCal
    chown system system /sys/devices/platform/kcal_ctrl.0/kcal_cont
    chown system system /sys/devices/platform/kcal_ctrl.0/kcal_enable
    chown system system /sys/devices/platform/kcal_ctrl.0/kcal_hue
    chown system system /sys/devices/platform/kcal_ctrl.0/kcal_sat
    chown system system /sys/devices/platform/kcal_ctrl.0/kcal_val
    chown system system /sys/devices/platform/kcal_ctrl.0/kcal_min
    chown system system /sys/devices/platform/kcal_ctrl.0/kcal
    chmod 660 /sys/devices/platform/kcal_ctrl.0/kcal_cont
    chmod 660 /sys/devices/platform/kcal_ctrl.0/kcal_enable
    chmod 660 /sys/devices/platform/kcal_ctrl.0/kcal_hue
    chmod 660 /sys/devices/platform/kcal_ctrl.0/kcal_sat
    chmod 660 /sys/devices/platform/kcal_ctrl.0/kcal_val
    chmod 660 /sys/devices/platform/kcal_ctrl.0/kcal_min
    chmod 660 /sys/devices/platform/kcal_ctrl.0/kcal

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

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

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

on property:sys.shutdown.requested=*
    stop vendor.per_proxy
    stop vendor.ims_rtp_daemon


service vendor.qseecomd /vendor/bin/qseecomd
   class core
   user root
   group root

service vendor.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 vendor.time_daemon /system/vendor/bin/time_daemon
   class main
   user system
   group system
   capabilities SYS_TIME
   writepid /dev/cpuset/system-background/tasks

service vendor.adsprpcd /system/vendor/bin/adsprpcd audiopd
   class main
   user media
   group media
   writepid /dev/cpuset/system-background/tasks

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

service vendor.imsqmidaemon /system/vendor/bin/imsqmidaemon
    class main
    user system
    socket ims_qmid stream 0660 system radio
    group radio log diag
    writepid /dev/cpuset/system-background/tasks

# imsdatadaemon starts with root and UID will be downgraded to SYSTEM.
service vendor.imsdatadaemon /system/vendor/bin/imsdatadaemon
    class main
    user system
    socket ims_datad stream 0660 system radio
    group system wifi radio inet log diag
    disabled
    writepid /dev/cpuset/system-background/tasks

service vendor.energy-awareness /system/vendor/bin/energy-awareness
    class main
    user system
    group system
    oneshot
    writepid /dev/cpuset/system-background/tasks

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

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

on property:vold.decrypt=trigger_restart_framework
   start vendor.cnss_diag
   restart vendor.camera-provider-2-4

service vendor.cnss_diag /system/vendor/bin/cnss_diag -q -f -t HELIUM
   class main
   user system
   group system wifi inet sdcard_rw media_rw diag
   oneshot

service vendor.ims_rtp_daemon /system/vendor/bin/ims_rtp_daemon
   class main
   user system
   group radio diag inet log
   writepid /dev/cpuset/system-background/tasks

service vendor.imsrcsservice /system/vendor/bin/imsrcsd
   class main
   user system
   group radio diag inet log wakelock
   writepid /dev/cpuset/system-background/tasks


on property:vendor.ims.DATA_DAEMON_STATUS=1
    restart vendor.ims_rtp_daemon

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

on property:init.svc.hwcomposer-2-1=stopped
    stop vendor.ppd

on property:init.svc.hwcomposer-2-1=running
    start vendor.ppd

on property:init.svc.hwcomposer-2-1=restarting
    stop vendor.ppd

on charger
    load_system_props
    start vendor.qcom-post-boot
    start vendor.hvdcp_opti
    setprop sys.usb.configfs 1
    start vendor.power_off_alarm

    mount tmpfs tmpfs /data
    restorecon_recursive /data

    start vendor.thermal-engine
    start charger

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

service vendor.hvdcp_opti /system/vendor/bin/hvdcp_opti
     class main
     user root
     group system wakelock
     writepid /dev/cpuset/system-background/tasks