#
# Copyright (C) 2016 The Android Open-Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

import /vendor/etc/init/hw/init.${ro.hardware}.usb.rc

on charger
    write /sys/devices/system/cpu/cpu2/online 0
    write /sys/devices/system/cpu/cpu3/online 0
    write /sys/devices/system/cpu/cpu4/online 0
    write /sys/devices/system/cpu/cpu5/online 0
    write /sys/devices/system/cpu/cpu6/online 0
    write /sys/devices/system/cpu/cpu7/online 0
    wait /dev/block/platform/soc/${ro.boot.bootdevice}
    # Enable UFS powersaving
    write /sys/devices/soc/${ro.boot.bootdevice}/clkscale_enable 1
    write /sys/devices/soc/${ro.boot.bootdevice}/clkgate_enable 1
    write /sys/devices/soc/${ro.boot.bootdevice}/hibern8_on_idle_enable 1
    write /sys/class/typec/port0/port_type sink
    write /sys/module/lpm_levels/parameters/sleep_disabled N

service charger /charger
    class charger
    seclabel u:r:charger:s0

on early-init
    mount debugfs debugfs /sys/kernel/debug
    chmod 0755 /sys/kernel/debug

on init
    # Disable UFS powersaving
    write /sys/devices/soc/${ro.boot.bootdevice}/clkscale_enable 0
    write /sys/devices/soc/${ro.boot.bootdevice}/clkgate_enable 0
    write /sys/devices/soc/${ro.boot.bootdevice}/hibern8_on_idle_enable 0
    write /sys/module/lpm_levels/parameters/sleep_disabled Y

    # Loading kernel modules in background
    start insmod_sh

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

    # disable thermal hotplug for thermal
    write /sys/module/msm_thermal/core_control/enabled 0

    # bring back all cores
    write /sys/devices/system/cpu/cpu0/online 1
    write /sys/devices/system/cpu/cpu1/online 1
    write /sys/devices/system/cpu/cpu2/online 1
    write /sys/devices/system/cpu/cpu3/online 1
    write /sys/devices/system/cpu/cpu4/online 1
    write /sys/devices/system/cpu/cpu5/online 1
    write /sys/devices/system/cpu/cpu6/online 1
    write /sys/devices/system/cpu/cpu7/online 1
    # configure governor settings for little cluster
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "schedutil"
    write /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us 500
    write /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us 20000

    # configure governor settings for big cluster
    write /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor "schedutil"
    write /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us 500
    write /sys/devices/system/cpu/cpufreq/policy4/schedutil/down_rate_limit_us 20000

    # set default schedTune value for foreground/top-app
    write /dev/stune/foreground/schedtune.prefer_idle 1
    write /dev/stune/top-app/schedtune.boost 10
    write /dev/stune/top-app/schedtune.prefer_idle 1

    # Setup cpusets used by the VR services.
    mkdir /dev/cpuset/kernel 0750 root system
    write /dev/cpuset/kernel/cpus 0
    write /dev/cpuset/kernel/mems 0
    chown system system /dev/cpuset/kernel/tasks
    chmod 0660 /dev/cpuset/kernel/tasks

    mkdir /dev/cpuset/system 0750 root system
    write /dev/cpuset/system/cpus 0
    write /dev/cpuset/system/mems 0
    chown system system /dev/cpuset/system/tasks
    chmod 0660 /dev/cpuset/system/tasks

    mkdir /dev/cpuset/system/performance 0750 root system
    write /dev/cpuset/system/performance/cpus 0
    write /dev/cpuset/system/performance/mems 0
    chown system system /dev/cpuset/system/performance/tasks
    chmod 0660 /dev/cpuset/system/performance/tasks

    mkdir /dev/cpuset/system/background 0750 root system
    write /dev/cpuset/system/background/cpus 0
    write /dev/cpuset/system/background/mems 0
    chown system system /dev/cpuset/system/background/tasks
    chmod 0660 /dev/cpuset/system/background/tasks

    mkdir /dev/cpuset/application 0750 root system
    write /dev/cpuset/application/cpus 0
    write /dev/cpuset/application/mems 0
    chown system system /dev/cpuset/application/tasks
    chmod 0660 /dev/cpuset/application/tasks

    mkdir /dev/cpuset/application/performance 0750 root system
    write /dev/cpuset/application/performance/cpus 0
    write /dev/cpuset/application/performance/mems 0
    chown system system /dev/cpuset/application/performance/tasks
    chmod 0660 /dev/cpuset/application/performance/tasks

    mkdir /dev/cpuset/application/background 0750 root system
    write /dev/cpuset/application/background/cpus 0
    write /dev/cpuset/application/background/mems 0
    chown system system /dev/cpuset/application/background/tasks
    chmod 0660 /dev/cpuset/application/background/tasks

    # Create UDS structure for base VR services.
    mkdir /dev/socket/pdx 0775 system system
    mkdir /dev/socket/pdx/system 0775 system system
    mkdir /dev/socket/pdx/system/buffer_hub 0775 system system
    mkdir /dev/socket/pdx/system/performance 0775 system system
    mkdir /dev/socket/pdx/system/vr 0775 system system
    mkdir /dev/socket/pdx/system/vr/display 0775 system system
    mkdir /dev/socket/pdx/system/vr/pose 0775 system system
    mkdir /dev/socket/pdx/system/vr/sensors 0775 system system

    # Disable retention
    write /sys/module/lpm_levels/system/pwr/cpu0/ret/idle_enabled N
    write /sys/module/lpm_levels/system/pwr/cpu1/ret/idle_enabled N
    write /sys/module/lpm_levels/system/pwr/cpu2/ret/idle_enabled N
    write /sys/module/lpm_levels/system/pwr/cpu3/ret/idle_enabled N
    write /sys/module/lpm_levels/system/perf/cpu4/ret/idle_enabled N
    write /sys/module/lpm_levels/system/perf/cpu5/ret/idle_enabled N
    write /sys/module/lpm_levels/system/perf/cpu6/ret/idle_enabled N
    write /sys/module/lpm_levels/system/perf/cpu7/ret/idle_enabled N
    write /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled N
    write /sys/module/lpm_levels/system/pwr/pwr-l2-ret/idle_enabled N
    write /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled N
    write /sys/module/lpm_levels/system/perf/perf-l2-ret/idle_enabled N

    # b/37682684 Enable suspend clock reporting
    write /sys/kernel/debug/clk/debug_suspend 1

    # ZRAM setup
    write /sys/block/zram0/comp_algorithm lz4
    write /proc/sys/vm/page-cluster 0

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.${ro.hardware} --early

    mkdir /persist/data 0700 system system
    mkdir /persist/display 0770 system graphics
    mkdir /persist/rfs 0770 root system
    mkdir /persist/hlos_rfs 0770 root system
    mkdir /persist/elabel 0700 system system
    chmod 0770 /persist/rfs
    chmod 0770 /persist/rfs/shared
    chmod 0770 /persist/rfs/msm
    chmod 0770 /persist/rfs/msm/adsp
    chown system system /persist/rfs/msm/adsp
    chmod 0770 /persist/rfs/msm/mpss
    chown system system /persist/rfs/msm/mpss
    mkdir /persist/rfs/msm/slpi 0770 system system
    chmod 0770 /persist/rfs/mdm
    chmod 0770 /persist/rfs/mdm/adsp
    chown system system /persist/rfs/mdm/adsp
    chmod 0770 /persist/rfs/mdm/mpss
    chown system system /persist/rfs/mdm/mpss
    mkdir /persist/rfs/mdm/slpi 0770 system system
    chmod 0770 /persist/rfs/mdm/sparrow
    chown system system /persist/rfs/mdm/sparrow
    mkdir /persist/rfs/mdm/tn 0770 system system
    chmod 0770 /persist/rfs/apq
    chmod 0770 /persist/rfs/apq/gnss
    chmod 0770 /persist/hlos_rfs
    restorecon_recursive /persist

    # Start HW service manager early
    start hwservicemanager

    # qseecomd needs /dev/block/bootdevice
    # vold needs keymaster that needs qseecomd
    start qseecomd

on late-fs
    # Start devices by sysfs trigger
    start devstart_sh
    # Start services for bootanim
    start surfaceflinger
    start bootanim
    start hwcomposer-2-1
    start configstore-hal
    start gralloc-2-0

    # Mount RW partitions which need run fsck
    mount_all /vendor/etc/fstab.${ro.hardware} --late

    # Required for time_daemon
    mkdir /persist/time 0770 system system

    # Start time daemon early so that the system time can be set early
    start time_daemon

on post-fs
    # set RLIMIT_MEMLOCK to 64MB
    setrlimit 8 67108864 67108864

    chmod 0664 /sys/devices/virtual/graphics/fb0/idle_time
    chown system graphics /sys/devices/virtual/graphics/fb0/idle_time
    write /sys/devices/virtual/graphics/fb0/idle_time 100

    # Wait qseecomd started
    wait_for_prop sys.listeners.registered true

on property:sys.user.0.ce_available=true
    mkdir /data/misc_ce/0/ramoops
    start ramoops_sh

on property:sys.ramoops.decrypted=true
    mount pstore pstore /sys/fs/pstore
    chown system log /sys/fs/pstore/console-ramoops
    chmod 0440 /sys/fs/pstore/console-ramoops
    chown system log /sys/fs/pstore/console-ramoops-0
    chmod 0440 /sys/fs/pstore/console-ramoops-0
    chown system log /sys/fs/pstore/pmsg-ramoops-0
    chmod 0440 /sys/fs/pstore/pmsg-ramoops-0

on property:sys.listeners.registered=true
    # load IPA FWs
    start ipastart_sh

on post-fs-data
    # We can start netd here before in is launched in common init.rc on zygote-start
    start netd

    # b/38048356 Setup debug folders for camera
    mkdir /data/vendor/camera 0770 camera camera

    # b/38496103 Setup debug folders for display
    mkdir /data/vendor/display 0770 system graphics

    # keep that at the end of on post-fs-data
    # Set indication (checked by vold) that we have finished this action
    setprop vold.post_fs_data_done 1

    # Wait until the system time is set
    wait_for_prop sys.time.set true

# zygote need to be started after otapreopt which will be done on post-fs-data
on zygote-start
    # zygote is started in common init.rc
    # and now we can continue to initialize /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 /data/misc/qvop 0660 system system
    mkdir /data/misc/hbtp 0750 system system
    mkdir /data/misc/seemp 0700 system system

    # Create directory for TZ Apps
    mkdir /data/misc/qsee 0770 system system

    mkdir /data/media 0770 media_rw media_rw
    chown media_rw media_rw /data/media

    mkdir /data/vendor/ipa 0770 radio radio
    chown radio radio /data/vendor/ipa

    # Create the directories used by the Wireless subsystem
    mkdir /data/misc/wifi 0770 wifi wifi
    mkdir /data/misc/wifi/sockets 0770 wifi wifi
    mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi
    mkdir /data/misc/dhcp 0770 dhcp dhcp
    chown dhcp dhcp /data/misc/dhcp

    # 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

    # Create directory for hostapd
    mkdir /data/hostapd 0770 system wifi

    # Trigger WLAN driver load
    write /sys/kernel/boot_wlan/boot_wlan 1

    #create port-bridge log dir
    mkdir /data/misc/port_bridge 0770 radio radio
    chmod 0770 /data/misc/port_bridge

    #create netmgr log dir
    mkdir /data/vendor/netmgr 0771 radio radio
    chmod 0771 /data/vendor/netmgr

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

    # Create the directories used by DPM subsystem
    mkdir /data/dpm 0771 system system
    chown system system /data/dpm

    mkdir /data/dpm/nsrm 0771 system system
    chown system system /data/dpm/nsrm

    # 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 used by the DASH client
    mkdir /data/misc/dash 0770 media audio

    # Create directory for radio
    mkdir /data/vendor/radio 0771 system radio

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

    # Create perfd related dirs
    mkdir /data/system/perfd 0770 root system
    chmod 2770 /data/system/perfd

    # Setup sensors-related directories and permissions
    mkdir /persist/sensors 0775
    chown root system /persist/sensors
    write /persist/sensors/sensors_settings 1
    chown root system /persist/sensors/sensors_settings
    chmod 664 /persist/sensors/sensors_settings
    chown root system /persist/sensors/sns.reg
    chmod 664 /persist/sensors/sns.reg

    mkdir /data/vendor/sensors 0770
    chown system system /data/vendor/sensors

    # These files might have been created by root from a prior build - make sure
    # they are accessible to the sensors daemon
    chown system system /data/vendor/sensors/cal.bin
    chown system system /data/vendor/sensors/cal.txt

    # /dev/sensors only supports an ioctl to get the current SLPI timestamp;
    # allow the sensors daemon to perform this as non-root
    chown root system /dev/sensors
    chmod 660 /dev/sensors

    # 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

    # 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

    # 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

    # NFC local data and nfcee xml storage
    mkdir /data/vendor/nfc 0770 nfc nfc

    # b/62837579 elabel directory
    mkdir /data/misc/elabel 0700 system system


on early-boot
    # wait for devices
    wait_for_prop sys.qcom.devup 1
    # wait for insmod_sh to finish all modules
    wait_for_prop sys.all.modules.ready 1
    # Update dm-verity state and set partition.*.verified properties
    verity_update_state

    # Permission for laser sensor driver
    chown camera camera /sys/class/wahoo_laser/laser/enable_ps_sensor

    # Permission for Vibrator
    chown system system /sys/class/leds/vibrator/device/mode
    chown system system /sys/class/leds/vibrator/device/od_clamp
    chown system system /sys/class/leds/vibrator/device/rtp_input
    chown system system /sys/class/leds/vibrator/device/scale
    chown system system /sys/class/leds/vibrator/device/set_sequencer
    chown system system /sys/class/leds/vibrator/device/autocal_result
    chown system system /sys/class/leds/vibrator/device/ctrl_loop
    chown system system /sys/class/leds/vibrator/device/ol_lra_period
    chown system system /sys/class/leds/vibrator/device/autocal
    chown system system /sys/class/leds/vibrator/device/lp_trigger_effect

    # Permission for LED driver
    chown system system /sys/class/leds/red/on_off_ms
    chown system system /sys/class/leds/green/on_off_ms
    chown system system /sys/class/leds/blue/on_off_ms
    chown system system /sys/class/leds/red/rgb_start
    chown system system /sys/class/leds/green/rgb_start
    chown system system /sys/class/leds/blue/rgb_start
    chown system system /sys/class/graphics/fb0/msm_fb_persist_mode

on boot
    mkdir /dev/socket/qmux_radio 0770 radio radio
    chmod 2770 /dev/socket/qmux_radio
    mkdir /dev/socket/qmux_audio 0770 media audio
    chmod 2770 /dev/socket/qmux_audio
    mkdir /dev/socket/qmux_bluetooth 0770 bluetooth bluetooth
    chmod 2770 /dev/socket/qmux_bluetooth
    mkdir /dev/socket/qmux_gps 0770 gps gps
    chmod 2770 /dev/socket/qmux_gps

    # Create NETMGR daemon socket area
    mkdir /dev/socket/netmgr 0750 radio radio

    setprop wifi.interface wlan0

    # Define TCP buffer sizes for various networks
    # ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
    setprop net.tcp.buffersize.wifi    524288,2097152,4194304,262144,524288,1048576

    # Assign TCP buffer thresholds to be ceiling value of technology maximums
    # Increased technology maximums should be reflected here.
    write /proc/sys/net/core/rmem_max  8388608
    write /proc/sys/net/core/wmem_max  8388608

    # Update DVR cpusets to boot-time values.
    write /dev/cpuset/kernel/cpus 0-7
    write /dev/cpuset/system/cpus 0-7
    write /dev/cpuset/system/performance/cpus 0-7
    write /dev/cpuset/system/background/cpus 0-7
    write /dev/cpuset/system/cpus 0-7
    write /dev/cpuset/application/cpus 0-7
    write /dev/cpuset/application/performance/cpus 0-7
    write /dev/cpuset/application/background/cpus 0-7
    write /dev/cpuset/application/cpus 0-7

    # Bluetooth
    chown bluetooth net_bt /sys/class/rfkill/rfkill0/type
    chown bluetooth net_bt /sys/class/rfkill/rfkill0/state
    chmod 0660 /sys/class/rfkill/rfkill0/state
    chown bluetooth net_bt /sys/class/rfkill/rfkill0/device/extldo
    chmod 0660 /sys/class/rfkill/rfkill0/device/extldo

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

    # Allow system to write to cycle_count_id to iterate and get stats
    chown system system /sys/class/power_supply/bms/cycle_count_id
    chmod 0666 /sys/class/power_supply/bms/cycle_count_id

    # default country code
    setprop ro.boot.wificountrycode 00

    # Encrypted ramoops
    umount /sys/fs/pstore
    chmod 770 /dev/access-ramoops
    chown system system /dev/access-ramoops
    chmod 770 /dev/access-metadata
    chown system system /dev/access-metadata

    # Make the ftm4 command node writeable from dumpstate
    chown system system /sys/devices/virtual/input/ftm4_touch/cmd

    # ftm4 VR mode
    chown system system /sys/devices/virtual/input/ftm4_touch/vrmode

service init-elabel-sh /system/bin/init.elabel.sh
    class late_start
    user system
    group system
    oneshot

service init-radio-sh /vendor/bin/init.radio.sh
    class late_start
    user radio
    group root radio
    oneshot

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

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

service thermal-engine /vendor/bin/thermal-engine -c ${sys.qcom.thermalcfg:-/vendor/etc/thermal-engine.conf}
   class main
   user root
   group root system
   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

service msm_irqbalance /vendor/bin/msm_irqbalance -f /vendor/etc/msm_irqbalance.conf
    socket msm_irqbalance seqpacket 660 root system
    class core
    user root
    group root
    writepid /dev/cpuset/system-background/tasks

on property:persist.sys.ssr.restart_level=*
    start ssr_setup

service ssr_setup /vendor/bin/ssr_setup
    oneshot
    disabled

service ssr_diag /vendor/bin/ssr_diag
    class late_start
    user system
    group system
    disabled

service per_mgr /vendor/bin/pm-service
    class core
    user system
    group system
    ioprio rt 4
    shutdown critical

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

on property:sys.post_boot.parsed=1
    start perfd

on property:sys.boot_completed=1
    # Enable power setting and set sys.post_boot.parsed to 1
    # to start perfd
    start power_sh

    # Enable UFS powersaving
    write /sys/devices/soc/${ro.boot.bootdevice}/clkscale_enable 1
    write /sys/devices/soc/${ro.boot.bootdevice}/clkgate_enable 1
    write /sys/devices/soc/${ro.boot.bootdevice}/hibern8_on_idle_enable 1
    write /sys/module/lpm_levels/parameters/sleep_disabled N

    # Enable ZRAM on boot_complete
    swapon_all /vendor/etc/fstab.${ro.hardware}

    # Setup final cpuset
    write /dev/cpuset/top-app/cpus 0-7
    write /dev/cpuset/foreground/cpus 0-3,6-7
    write /dev/cpuset/background/cpus 0-1
    write /dev/cpuset/system-background/cpus 0-3

    # Update DVR cpusets to runtime values.
    write /dev/cpuset/kernel/cpus 2,3
    write /dev/cpuset/system/performance/cpus 6-7
    write /dev/cpuset/system/background/cpus 0-1
    write /dev/cpuset/system/cpus 0-1,6-7
    write /dev/cpuset/application/performance/cpus 4-5
    write /dev/cpuset/application/background/cpus 0-1
    write /dev/cpuset/application/cpus 0-1,4-5

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

on shutdown
    stop per_proxy
    # Disable subsystem restart
    write /sys/module/subsystem_restart/parameters/disable_restart_work 0x9889deed

service qseecomd /vendor/bin/qseecomd
   class core
   user root
   group root
   shutdown critical

service time_daemon /vendor/bin/time_daemon
   class core
   user root
   group root

service ss_ramdump /vendor/bin/subsystem_ramdump
    class main
    user root
    group root system
    disabled

on property:persist.sys.ssr.enable_ramdumps=1
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
    mkdir /data/vendor/ssrdump 761 root system
    mkdir /data/vendor/ramdump 771 root system
    mkdir /data/vendor/ramdump/bluetooth 771 root system
    start ss_ramdump

on property:persist.sys.ssr.enable_ramdumps=0
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 0

service sensors /vendor/bin/sensors.qcom
    class core
    user system
    group system
    # Grants the ability for this daemon to bind IPC router ports so it can
    # register QMI services
    capabilities NET_BIND_SERVICE

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

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

service rmt_storage /vendor/bin/rmt_storage
    class core
    user root
    ioprio rt 0
    shutdown critical

service tftp_server /vendor/bin/tftp_server
   class core
   user root
   group root system

service wpa_supplicant /vendor/bin/hw/wpa_supplicant \
    -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
    -I/vendor/etc/wifi/p2p_supplicant_overlay.conf -N \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/vendor/etc/wifi/wpa_supplicant_overlay.conf \
    -O/data/misc/wifi/sockets -puse_p2p_group_interface=1 -dd \
    -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
    #   we will start as root and wpa_supplicant will switch to user wifi
    #   after setting up the capabilities required for WEXT
    #   user wifi
    #   group wifi inet keystore
    class main
    socket wpa_wlan0 dgram 660 wifi wifi
    disabled
    oneshot

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

service imsqmidaemon /vendor/bin/imsqmidaemon
   class main
   user system
   socket ims_qmid stream 0660 system radio
   group radio log diag

service imsdatadaemon /vendor/bin/imsdatadaemon
   class main
   user system
   socket ims_datad stream 0660 system radio
   group system wifi radio inet log
   disabled

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

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

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

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

service qmuxd /vendor/bin/qmuxd
   class main
   user root
   group radio audio bluetooth gps nfc qcom_diag

#TODO evaluate group system once b/62571088 is resolved
service cnd /vendor/bin/cnd
   class main
   user system
   group inet system wifi radio wakelock

service netmgrd /vendor/bin/netmgrd
    class main
    user root
    group root wifi wakelock radio inet

service port-bridge /vendor/bin/port-bridge
    class main
    user radio
    group radio system inet
    oneshot

service ipacm /vendor/bin/ipacm
    class main
    user radio
    group radio inet

service qti /vendor/bin/qti
    class main
    user radio
    group radio net_raw diag usb net_admin

on property:wc_transport.start_hci=true
    start hci_filter

on property:wc_transport.start_hci=false
    stop hci_filter

service hci_filter /vendor/bin/wcnss_filter
    class late_start
    user bluetooth
    group bluetooth diag system wakelock
    disabled

service loc_launcher /vendor/bin/loc_launcher
    class late_start
    group gps inet diag wifi

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

service atfwd /vendor/bin/ATFWD-daemon
    class late_start
    user system
    group system radio
    disabled

on property:persist.radio.atfwd.start=true
    start atfwd

on property:persist.radio.atfwd.start=false
    stop atfwd

# bugreport is triggered by holding down volume down, volume up and power
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

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

service power_sh /vendor/bin/init.power.sh
    class main
    user root
    group root system
    disabled
    oneshot

service devstart_sh /vendor/bin/init.qcom.devstart.sh
    class main
    user root
    group root system
    disabled
    oneshot

service ipastart_sh /vendor/bin/init.qcom.ipastart.sh
    class main
    user system
    group net_admin
    disabled
    oneshot

service insmod_sh /vendor/bin/init.insmod.sh
    class main
    user root
    group root system
    disabled
    oneshot

service ramoops_sh /system/bin/init.ramoops.sh
    class main
    user root
    group root system
    disabled
    oneshot

