# Copyright (c) 2009-2012, 2014-2020, 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 BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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.
#

import /vendor/etc/init/hw/init.qcom.usb.rc
import /vendor/etc/init/hw/init.target.rc
import /vendor/etc/init/hw/init.stnfc.rc

on early-init
  # create symlink for vendor mount points
    symlink /vendor/firmware_mnt /firmware
    symlink /vendor/bt_firmware /bt_firmware
    symlink /vendor/dsp /dsp

  # Change ownership of sysfs power control node
    chown system graphics /sys/class/drm/card0/device/power/control

    #Disable UFS clock scaling
    write /sys/bus/platform/devices/1d84000.ufshc/clkscale_enable 0

    chown root system /dev/kmsg
    chmod 0620 /dev/kmsg

on init

    # Support legacy paths
    symlink /sdcard /mnt/sdcard
    symlink /sdcard /storage/sdcard0

    # Create cgroup mount point for memory
    mkdir /sys/fs/cgroup/memory/bg 0750 root system
    write /sys/fs/cgroup/memory/bg/memory.swappiness 140
    write /sys/fs/cgroup/memory/bg/memory.move_charge_at_immigrate 1
    chown root system /sys/fs/cgroup/memory/bg/tasks
    chmod 0660 /sys/fs/cgroup/memory/bg/tasks

on early-boot
    # set RLIMIT_MEMLOCK to 64MB
    setrlimit 8 67108864 67108864
    # Allow subsystem (modem etc) debugging
    write /sys/kernel/boot_adsp/boot 1
    write /sys/kernel/boot_cdsp/boot 1
    write /sys/devices/virtual/npu/msm_npu/boot 1
    write /sys/devices/virtual/cvp/cvp/boot 1
    exec u:r:vendor_qti_init_shell:s0 -- /vendor/bin/init.qcom.early_boot.sh
    exec u:r:vendor_qti_init_shell:s0 -- /vendor/bin/init.qti.can.sh
    setprop ro.sf.lcd_density ${vendor.display.lcd_density}

    # SSR
    write /sys/bus/msm_subsys/devices/subsys0/restart_level RELATED
    write /sys/bus/msm_subsys/devices/subsys1/restart_level RELATED
    write /sys/bus/msm_subsys/devices/subsys2/restart_level RELATED
    write /sys/bus/msm_subsys/devices/subsys3/restart_level RELATED
    write /sys/bus/msm_subsys/devices/subsys4/restart_level RELATED
    write /sys/bus/msm_subsys/devices/subsys5/restart_level RELATED
    write /sys/bus/msm_subsys/devices/subsys6/restart_level RELATED

    chown system system /mnt/vendor/persist/data/pfm/licenses
    chmod 0775 /mnt/vendor/persist/data/pfm/licenses
    chown system system /mnt/vendor/persist/data/pfm/licenses/store_0
    chmod 0664 /mnt/vendor/persist/data/pfm/licenses/store_0
    chown system system /mnt/vendor/persist/data/pfm/licenses/store_1
    chmod 0664 /mnt/vendor/persist/data/pfm/licenses/store_1
    chown system system /mnt/vendor/persist/data/pfm/licenses/store_2
    chmod 0664 /mnt/vendor/persist/data/pfm/licenses/store_2
    chown system system /mnt/vendor/persist/data/pfm/licenses/store_3
    chmod 0664 /mnt/vendor/persist/data/pfm/licenses/store_3
    chown system system /mnt/vendor/persist/data/pfm/licenses/store_4
    chmod 0664 /mnt/vendor/persist/data/pfm/licenses/store_4

on boot
    chown bluetooth bluetooth /sys/module/bluetooth_power/parameters/power
    chown bluetooth net_bt /sys/class/rfkill/rfkill0/type
    chown bluetooth net_bt /sys/class/rfkill/rfkill0/state
    chown bluetooth bluetooth /proc/bluetooth/sleep/proto
    chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_lpm
    chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_btwrite
    chown system system /sys/module/sco/parameters/disable_esco
    chown bluetooth bluetooth /sys/module/hci_smd/parameters/hcismd_set
    chown system system /sys/module/msm_core/parameters/polling_interval
    chown system system /sys/module/msm_core/parameters/disabled
    chown system system /sys/kernel/boot_slpi/ssr
    chmod 0660 /sys/module/bluetooth_power/parameters/power
    chmod 0660 /sys/module/hci_smd/parameters/hcismd_set
    chmod 0660 /sys/class/rfkill/rfkill0/state
    chmod 0660 /proc/bluetooth/sleep/proto
    chown bluetooth net_bt /dev/ttyHS0
    chmod 0660 /sys/module/hci_uart/parameters/ath_lpm
    chmod 0660 /sys/module/hci_uart/parameters/ath_btwrite
    chmod 0660 /dev/ttyHS0
    chown bluetooth bluetooth /sys/devices/platform/msm_serial_hs.0/clock
    chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock

    chmod 0660 /dev/ttyHS2
    chown bluetooth bluetooth /dev/ttyHS2

    chown bluetooth net_bt /sys/class/rfkill/rfkill0/device/extldo
    chmod 0660 /sys/class/rfkill/rfkill0/device/extldo

    # This location is used by QCRIL to host UNIX domain
    # socket files used for internal IPC within QCRIL
    # modules
    mkdir /dev/socket/qmux_radio 0770 radio radio
    chmod 2770 /dev/socket/qmux_radio

    mkdir /persist/drm 0770 system system
    mkdir /persist/bluetooth 0770 bluetooth bluetooth
    mkdir /persist/misc 0770 system system
    mkdir /persist/alarm 0770 system system
    mkdir /mnt/vendor/persist/time 0770 system system
    mkdir /mnt/vendor/persist/secnvm 0770 system system
    mkdir /mnt/vendor/persist/iar_db 0770 system system
    mkdir /mnt/vendor/spunvm 0770 system system

    setprop wifi.interface wlan0

    setprop ro.telephony.call_ring.multiple false

    #Remove SUID bit for iproute2 ip tool
    chmod 0755 /system/bin/ip


    chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state

    setprop net.tcp.2g_init_rwnd 10

    # To prevent out of order acknowledgements from making
    # connection tracking to treat them as not belonging to
    # the connection they belong to.
    # Otherwise, a weird issue happens in which some long
    # connections on high-throughput links get dropped when
    # an ack packet comes out of order
    write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1

    # Set the console loglevel to < KERN_WARN
    # Set the default message loglevel to KERN_INFO
    write /proc/sys/kernel/printk "4 6 1 7"

    # Allow access for CCID command/response timeout configuration
    chown system system /sys/module/ccid_bridge/parameters/bulk_msg_timeout

    # bond0 used by FST Manager
    chown wifi wifi /sys/class/net/bond0/bonding/queue_id

    # Allow access to emmc dload sysfs node
    chown root system /sys/kernel/dload/emmc_dload
    chmod 0660 /sys/kernel/dload/emmc_dload
    chown root system /dev/block/bootdevice/by-name/ramdump
    chmod 0660 /dev/block/bootdevice/by-name/ramdump
    chown root system /sys/kernel/dload/dload_mode
    chmod 0660 /sys/kernel/dload/dload_mode

    chown system system /sys/class/backlight/panel0-backlight/brightness
    chown system system /sys/class/backlight/panel0-backlight/max_brightness
    chown system system /sys/class/backlight/panel1-backlight/brightness
    chown system system /sys/class/backlight/panel1-backlight/max_brightness

    # Allow access to sensors device attributes
    chown system system /sys/class/sensors/MPU6050-accel/enable
    chown system system /sys/class/sensors/MPU6050-accel/poll_delay
    chown system system /sys/class/sensors/MPU6050-gyro/enable
    chown system system /sys/class/sensors/MPU6050-gyro/poll_delay
    chown system system /sys/class/sensors/apds9930-light/enable
    chown system system /sys/class/sensors/apds9930-light/poll_delay
    chown system system /sys/class/sensors/apds9930-proximity/enable
    chown system system /sys/class/sensors/apds9930-proximity/poll_delay

    # Create directory used for display
    # for backward compatibility
    mkdir /persist/display 0770 system graphics
    mkdir /mnt/vendor/persist/display 0770 system graphics

    # Create vpp directory
    mkdir /mnt/vendor/persist/vpp 0770 media media


    # Create hvdcp_opti directory
    mkdir /mnt/vendor/persist/hvdcp_opti 0770 root system

    # limit discard size to 128MB in order to avoid long IO latency
    write /sys/block/sda/queue/discard_max_bytes 134217728

# msm specific files that need to be created on /data
on post-fs-data
    mkdir /data/vendor/misc 01771 system system

    # Create directory used for dump collection
    mkdir /data/vendor/ssrdump 0770 root system

    # Create directory used by display clients
    mkdir /data/vendor/display 0770 system graphics

    # Change lm related dirs
    mkdir /data/vendor/lm 0700 root root

    # Create directory used by powermodule
    mkdir /data/vendor/pwr 0700 root root

    # Create directory used by media clients
    mkdir /data/vendor/media 0770 mediacodec media

    # Create /data/vendor/tzstorage directory for SFS listener
    mkdir /data/vendor/tzstorage 0770 system system

    # Create directory for apps access via QTEEConnector
    mkdir /data/vendor/qtee 0770 system system

    #Create folder of camera
    mkdir /data/vendor/camera 0770 camera camera


    #Create directory for tftp
    mkdir /data/vendor/tombstones 0771 system system
    mkdir /data/vendor/tombstones/rfs 0771 system system

    mkdir /data/vendor/ramdump 0771 root system
    mkdir /data/vendor/bluetooth 0770 bluetooth bluetooth
    mkdir /data/vendor/ramdump/bluetooth 0770 bluetooth bluetooth

    # Create the directories used by the Wireless subsystem
    mkdir /data/vendor/wifi 0770 wifi wifi
    mkdir /data/vendor/wifi/sockets 0770 wifi wifi
    mkdir /data/vendor/wifi/hostapd 0770 wifi wifi
    mkdir /data/vendor/wifi/hostapd/ctrl 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa_supplicant 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi

    # Create the directories used by CnE subsystem
    mkdir /data/vendor/connectivity 0771 radio radio
    chown radio radio /data/vendor/connectivity

    # Create directory used by audio subsystem
    mkdir /data/vendor/audio 0770 audio audio

    # Create directory for audio delta files
    mkdir /data/vendor/audio/acdbdata 0770 media audio
    mkdir /data/vendor/audio/acdbdata/delta 0770 media audio

    # Create directory for radio
    mkdir /data/vendor/radio 0770 system radio
    rm /data/vendor/radio/shmbus

    # Create directory for modem_config
    mkdir /data/vendor/modem_config 0570 radio root

    # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections
    # We chown/chmod /persist again so because mount is run as root + defaults
    chown root system /persist
    chmod 0771 /persist
    chown system system /persist/WCNSS_qcom_wlan_nv.bin
    chmod 0664 /sys/devices/platform/msm_sdcc.1/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.2/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.3/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.4/polling

    # Chown polling nodes as needed from UI running on system server
    chown system system /sys/devices/platform/msm_sdcc.1/polling
    chown system system /sys/devices/platform/msm_sdcc.2/polling
    chown system system /sys/devices/platform/msm_sdcc.3/polling
    chown system system /sys/devices/platform/msm_sdcc.4/polling

    #Create the symlink to qcn wpa_supplicant folder for ar6000 wpa_supplicant
    #symlink /data/misc/wifi/wpa_supplicant /data/system/wpa_supplicant

    #Create directories for Location services
    mkdir /data/vendor/location 0770 gps gps
    mkdir /data/vendor/location/mq 0770 gps gps
    mkdir /data/vendor/location/xtwifi 0770 gps gps
    mkdir /dev/socket/location 0770 gps gps
    mkdir /dev/socket/location/mq 0770 gps gps
    mkdir /dev/socket/location/xtra 0770 gps gps
    mkdir /dev/socket/location/dgnss 0770 gps gps

    #Create directories for wifihal services
    mkdir /dev/socket/wifihal 0770 wifi wifi
    chmod 2770 /dev/socket/wifihal

    # Create /data/time folder for time-services
    mkdir /data/vendor/time/ 0700 system system

    setprop vold.post_fs_data_done 1

    #Create a folder for SRS to be able to create a usercfg file
    #mkdir /data/data/media 0770 media media

    #Create PERFD deamon related dirs
    mkdir /data/vendor/perfd 0770 root system
    chmod 2770 /data/vendor/perfd
    rm /data/vendor/perfd/default_values

    mkdir /data/vendor/secure_element 0777 system system

    #Create IOP  deamon related dirs
    mkdir /data/vendor/iop 0700 root system

    # Mark the copy complete flag to not completed
    write /data/vendor/radio/copy_complete 0
    chown radio radio /data/vendor/radio/copy_complete
    chmod 0660 /data/vendor/radio/copy_complete

    # copy prebuilt qcril.db files always
    copy /vendor/radio/qcril_database/qcril.db /data/vendor/radio/qcril_prebuilt.db
    chown radio radio /data/vendor/radio/qcril_prebuilt.db
    chmod 0660 /data/vendor/radio/qcril_prebuilt.db
    copy /vendor/radio/qcril_database/qcrilNr.db /data/vendor/radio/qcrilNr_prebuilt.db
    copy /vendor/etc/qcril_database/qcrilNr.db /data/vendor/radio/qcrilNr_prebuilt.db
    chown radio radio /data/vendor/radio/qcrilNr_prebuilt.db
    chmod 0660 /data/vendor/radio/qcrilNr_prebuilt.db

    # File flags for prebuilt ril db file
    write /data/vendor/radio/prebuilt_db_support 1
    chown radio radio /data/vendor/radio/prebuilt_db_support
    chmod 0400 /data/vendor/radio/prebuilt_db_support
    write /data/vendor/radio/db_check_done 0
    chown radio radio /data/vendor/radio/db_check_done
    chmod 0660 /data/vendor/radio/db_check_done

    # qti-logkit data
    mkdir /data/vendor/qti-logkit/ 0771 system system
    mkdir /data/vendor/qti-logkit/shared-privileged/ 2770 system system
    mkdir /data/vendor/qti-logkit/shared-public/ 2770 system diag
    mkdir /data/vendor/qti-logkit/socket-privileged/ 2770 system system
    mkdir /data/vendor/qti-logkit/socket-public/ 2750 system diag
    mkdir /data/vendor/qti-logkit/logdata/ 2750 system shell

    #Create SWAP related dirs
    mkdir /data/vendor/swap 0770 root system
    chmod 2770 /data/vendor/swap

    # set aggressive read ahead for dm-0 and dm-1 during boot up
    write /sys/block/dm-0/queue/read_ahead_kb 2048
    write /sys/block/dm-1/queue/read_ahead_kb 2048
    write /sys/block/dm-2/queue/read_ahead_kb 2048

    # Create vpp directory
    mkdir /data/vendor/vpp 0770 media media

    #Create dir for TUI
    mkdir /data/vendor/tui 0700 system drmrpc

service nqnfcinfo /system/vendor/bin/nqnfcinfo
    class late_start
    group nfc
    user system
    oneshot

service iop /system/vendor/bin/iop
    class main
    user root
    group root
    disabled
    socket iop seqpacket 0666 root system

service qcomsysd /system/vendor/bin/qcom-system-daemon
    class main
    user root
    group root diag oem_2901
    disabled

on property:persist.vendor.qcomsysd.enabled=1
    enable qcomsysd

on property:persist.vendor.qcomsysd.enabled=0
    stop qcomsysd

on property:ro.vendor.iocgrp.config=1
    mkdir /dev/blkio
    mount cgroup none /dev/blkio blkio
    chown system system /dev/blkio
    chown system system /dev/blkio/tasks
    chmod 0664 /dev/blkio/tasks
    mkdir /dev/blkio/bg 0755 system system
    chown system system /dev/blkio/bg/tasks
    chmod 0664 /dev/blkio/bg/tasks
    write /dev/blkio/blkio.weight 1000
    write /dev/blkio/bg/blkio.weight 100

on property:persist.sys.mba_boot_timeout=*
    write /sys/module/pil_msa/parameters/pbl_mba_boot_timeout_ms ${persist.sys.mba_boot_timeout}

on property:persist.sys.modem_auth_timeout=*
    write /sys/module/pil_msa/parameters/modem_auth_timeout_ms ${persist.sys.modem_auth_timeout}

on property:persist.sys.pil_proxy_timeout=*
    write /sys/module/peripheral_loader/parameters/proxy_timeout_ms ${persist.sys.pil_proxy_timeout}

on property:persist.vendor.sys.rawdump_copy=1
    write /sys/kernel/dload/emmc_dload 1

on property:persist.vendor.sys.rawdump_copy=0
    write /sys/kernel/dload/emmc_dload 0

on property:sys.boot_completed=1
    write /dev/kmsg "Boot completed "
    #Enable UFS clock scaling back
    write /sys/bus/platform/devices/1d84000.ufshc/clkscale_enable 1
    #Reset read ahead for dm-0 and dm-1 to 512kb
    write /sys/block/dm-0/queue/read_ahead_kb 512
    write /sys/block/dm-1/queue/read_ahead_kb 512
    #WDSP FW boot sysfs node used by STHAL
    chown media audio /sys/kernel/wdsp0/boot
    chown media audio /sys/kernel/wcd_cpe0/fw_name
    #Reinit lmkd to reconfigure lmkd properties
    setprop lmkd.reinit 1

# corefile limit
on property:persist.debug.trace=1
    mkdir /data/core 0777 root root
    write /proc/sys/kernel/core_pattern "/data/core/%E.%p.%e"

on property:vendor.media.target.version=*
    setprop vendor.sys.media.target.version ${vendor.media.target.version}

on property:vendor.netflix.bsp_rev=*
    setprop ro.netflix.bsp_rev ${vendor.netflix.bsp_rev}

on property:vendor.media.target_variant=*
    setprop ro.media.xml_variant.codecs ${vendor.media.target_variant}
    setprop ro.media.xml_variant.codecs_performance ${vendor.media.target_variant}

service qcom-c_main-sh /vendor/bin/init.class_main.sh
    class main
    user root
    group root system
    oneshot

on property:vold.decrypt=trigger_restart_framework
    start qcom-c_main-sh
    start wcnss-service

service vendor.qrtr-ns /vendor/bin/qrtr-ns -f
    class core
    user vendor_qrtr
    group vendor_qrtr
    capabilities NET_BIND_SERVICE

service irsc_util /vendor/bin/irsc_util "/vendor/etc/sec_config"
    class core
    user root
    oneshot

service qmiproxy /system/bin/qmiproxy
    class main
    user radio
    group radio diag
    disabled

# Data Migration
service vendor.move_wifi_data /system/bin/move_wifi_data.sh
    class main
    user  wifi
    group wifi
    disabled
    oneshot

service ptt_socket_app /system/vendor/bin/ptt_socket_app -d
    class main
    user wifi
    group wifi system inet net_admin
    capabilities NET_ADMIN
    oneshot

service ptt_ffbm /system/vendor/bin/ptt_socket_app -f -d
    user root
    group root
    disabled
    oneshot

service wifi_ftmd /system/vendor/bin/wifi_ftmd
    user system
    group system inet net_admin
    socket wififtmd_server dgram 0660 system system
    disabled
    oneshot

on property:vendor.wifi.ftmd.load=true
    insmod /system/lib/modules/pronto/pronto_wlan.ko con_mode=5

service cnss-daemon /system/vendor/bin/cnss-daemon -n -l
    class late_start
    user system
    group system inet net_admin wifi
    capabilities NET_ADMIN

on property:sys.shutdown.requested=*
    write /sys/kernel/shutdown_wlan/shutdown 1
    stop cnss-daemon

service ssgqmigd /vendor/bin/ssgqmigd
    class late_start
    user radio
    group radio gps system
    socket ssgqmig seqpacket 0660 radio inet

service mlid /vendor/bin/mlid
    class late_start
    user gps
    group gps
    socket mlid stream 0666 gps gps

service loc_launcher /system/vendor/bin/loc_launcher
    class late_start
    user gps
    group gps

on property:persist.sys.xtra-daemon.enabled=*
    restart loc_launcher

service qcom-sh /vendor/bin/init.qcom.sh
    class late_start
    user root
    group root system radio
    oneshot
# Remove since is deprecated but throws AVC denial.
# service crashdata-sh /vendor/bin/init.qcom.crashdata.sh
#    class late_start
#    user root
#    oneshot

service qcom-post-boot /vendor/bin/init.qcom.post_boot.sh
    class late_start
    user root
    group root system wakelock graphics
    disabled
    oneshot

on property:sys.boot_completed=1
    start qcom-post-boot

on property:ro.vendor.ril.mbn_copy_completed=1
    write /data/vendor/radio/copy_complete 1

service qvop-daemon /vendor/bin/qvop-daemon
    class late_start
    user system
    group system drmrpc

service hostapd_fst /vendor/bin/hw/hostapd -dd -g /data/vendor/wifi/hostapd/global
    class main
    capabilities NET_ADMIN NET_RAW
    user wifi
    group wifi
    disabled
    oneshot

service battery_monitor /system/bin/battery_monitor
    user system
    group system
    disabled

service vendor.ril-daemon2 /vendor/bin/hw/rild -c 2
    class main
    user radio
    disabled
    group radio cache inet misc audio sdcard_r sdcard_rw diag oem_2901 log
    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW

service vendor.ril-daemon3 /vendor/bin/hw/rild -c 3
    class main
    user radio
    disabled
    group radio cache inet misc audio sdcard_r sdcard_rw diag oem_2901 log
    capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW

service profiler_daemon /system/bin/profiler_daemon
    class late_start
    user root
    group root
    disabled

service diag_mdlog_start /system/vendor/bin/diag_mdlog
    class late_start
    user shell
    group system oem_2901 sdcard_rw sdcard_r media_rw
    disabled
    oneshot

service diag_mdlog_stop /system/vendor/bin/diag_mdlog -k
    class late_start
    user shell
    group system oem_2901 sdcard_rw sdcard_r media_rw
    disabled
    oneshot

service qlogd /system/xbin/qlogd
    socket qlogd stream 0662 system system
    class main
    disabled
on property:persist.sys.qlogd=1
    start qlogd
on property:persist.sys.qlogd=0
    stop qlogd

service vm_bms /vendor/bin/vm_bms
    user root
    group root
    disabled

service vendor.msm_irqbalance /vendor/bin/msm_irqbalance -f /system/vendor/etc/msm_irqbalance.conf
    class core
    user root
    group root
    disabled

service vendor.msm_irqbal_lb /vendor/bin/msm_irqbalance -f /system/vendor/etc/msm_irqbalance_little_big.conf
    class core
    user root
    group root
    disabled

service vendor.msm_irqbl_sdm630 /vendor/bin/msm_irqbalance -f /system/vendor/etc/msm_irqbalance_sdm630.conf
    class core
    user root
    group root
    disabled

# service for USERDEBUG
service vendor.LKCore-dbg /vendor/bin/LKCore
    class late_start
    oneshot
    disabled
    user root
    group root system log diag net_raw

# service for USER
service vendor.LKCore-rel /vendor/bin/LKCore
    class late_start
    oneshot
    disabled
    user system
    group system log diag

service qseeproxydaemon /system/vendor/bin/qseeproxydaemon
    class late_start
    user system
    group system

service esepmdaemon /system/vendor/bin/esepmdaemon
    class core
    user system
    group nfc

on charger
    setprop persist.sys.usb.config mass_storage
    start qcom-post-boot

#add poweroffhandler
service poweroffhandler /system/vendor/bin/poweroffhandler
    class core
    user media
    group graphics audio
    disabled
    oneshot

service time_daemon /vendor/bin/time_daemon
    class main
    user system
    group system
    capabilities SYS_TIME

# Set vendor-ril lib path based on Meta version
on property:vendor.rild.libpath=*
    setprop rild.libpath ${vendor.rild.libpath}

on property:ro.vendor.radio.noril=*
    setprop ro.radio.noril ${ro.vendor.radio.noril}

service vendor.power_off_alarm /vendor/bin/power_off_alarm
    class core
    group system
    disabled
    oneshot

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

service chre /vendor/bin/chre
    class late_start
    user system
    group system
    socket chre seqpacket 0660 root system
    shutdown critical

on property:vendor.chre.enabled=0
   stop chre

service bugreport /system/bin/dumpstate -d -p -B -z -o /data/user_de/0/com.android.shell/files/bugreports/bugreport
    class main
    disabled
    oneshot
    keycodes 114 115 116

#Set GPU Opengles version
on property:vendor.opengles.version=*
    setprop ro.opengles.version ${vendor.opengles.version}

#Set gpu available frequencies property
on property:vendor.gpu.available_frequencies=*
    setprop ro.vendor.gpu.available_frequencies ${vendor.gpu.available_frequencies}

service vendor.audio-hal /vendor/bin/hw/android.hardware.audio.service
    override
    class hal
    user audioserver
    # media gid needed for /data/misc/media (tee)
    group audio camera drmrpc inet media mediadrm net_bt net_bt_admin net_bw_acct oem_2901 wakelock
    capabilities BLOCK_SUSPEND
    ioprio rt 4
    task_profiles ProcessCapacityHigh HighPerformance
    onrestart restart audioserver
