# 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.
#
# Changes from Qualcomm Innovation Center are provided under the following license:
# Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
# SPDX-License-Identifier: BSD-3-Clause-Clear
#

import /vendor/etc/init/hw/init.qcom.usb.rc
import /vendor/etc/init/hw/init.target.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

    # Support mount point for vibrator
    chown system system /sys/class/leds/drv26xx_haptic/activate
    chown system system /sys/class/leds/drv26xx_haptic/duration
    chown system system /sys/class/leds/drv26xx_haptic/state
    chown system system /sys/class/leds/drv26xx_haptic/calib
    chown system system /sys/class/leds/drv26xx_haptic/CalBemf
    chown system system /sys/class/leds/drv26xx_haptic/CalComp
    chown system system /sys/class/leds/drv26xx_haptic/CalGain
    chown system system /sys/class/leds/drv26xx_haptic/calib
    chown system system /sys/class/leds/drv26xx_haptic/diag
    chown system system /sys/class/leds/drv26xx_haptic/f0_lsb
    chown system system /sys/class/leds/drv26xx_haptic/f0_msb

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

    chmod 0660 /sys/class/display/panel/bl_fps_func
    chown system system /sys/class/display/panel/bl_fps_func
    chmod 0660 /sys/class/backlight/panel0-backlight/brightness
    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

    chown system system /dev/goodix_fp
    chmod 0660 /dev/goodix_fp

    # 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

    mkdir /data/vendor/goodix 0770 system system
    mkdir /data/vendor/goodix/gf_data 0770 system system
    restorecon /data/vendor/goodix/gf_data
    chmod 0770 /mnt/vendor/persist/goodix

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

on property:persist.sys.dynamic_fps=0
    write /sys/class/display/panel/dynamic_fps 0    
on property:persist.sys.dynamic_fps=1
    write /sys/class/display/panel/dynamic_fps 1
on property:persist.sys.dynamic_fps=2
    write /sys/class/display/panel/dynamic_fps 2

# 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

on property:persist.sys.fts_gesture_mode=0
    write /sys/bus/i2c/devices/3-0038/fts_gesture_mode 0

on property:persist.sys.fts_gesture_mode=1
    write /sys/bus/i2c/devices/3-0038/fts_gesture_mode 1

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
