#
# Copyright (C) 2018 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.boot.hardware.platform}.usb.rc
import /vendor/etc/init/hw/init.${ro.boot.hardware.platform}.diag.rc
import /vendor/etc/init/hw/init.${ro.boot.hardware.platform}.logging.rc
import /vendor/etc/init/hw/init.${ro.boot.hardware.platform}.mpssrfs.rc
import /vendor/etc/init/hw/init.${ro.boot.hardware.platform}.power.rc

service vendor.charger /system/bin/charger
    class charger
    seclabel u:r:charger:s0
    user system
    group system wakelock input
    capabilities SYS_BOOT
    file /dev/kmsg w
    file /sys/fs/pstore/console-ramoops-0 r
    file /sys/fs/pstore/console-ramoops r
    file /proc/last_kmsg r

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

    # Disable EAS
    write /sys/kernel/debug/sched_features NO_ENERGY_AWARE

# Disable VDSO on JAWS boards.
on early-init && property:ro.revision="DEV1.0"
    write /sys/module/vdso/parameters/enable_32 0

# Skip init trigger for charger mode
on early-init && property:ro.boot.mode=charger
    setprop vendor.skip.init 1

on init && property:vendor.skip.init=0
    # Boot time fs tuning
    write /sys/block/sda/queue/iostats 0
    write /sys/block/sda/queue/scheduler cfq
    write /sys/block/sda/queue/iosched/slice_idle 0
    write /sys/block/sda/queue/read_ahead_kb 2048
    write /sys/block/sda/queue/nr_requests 256
    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
    write /sys/block/dm-3/queue/read_ahead_kb 2048
    write /sys/block/dm-4/queue/read_ahead_kb 2048
    write /sys/block/dm-5/queue/read_ahead_kb 2048
    write /sys/block/dm-6/queue/read_ahead_kb 2048
    write /sys/block/dm-7/queue/read_ahead_kb 2048
    write /sys/block/dm-8/queue/read_ahead_kb 2048

    # Disable UFS powersaving
    write /sys/devices/platform/soc/${ro.boot.bootdevice}/clkgate_enable 0
    write /sys/devices/platform/soc/${ro.boot.bootdevice}/hibern8_on_idle_enable 0

    # Disable powersaving
    write /sys/module/lpm_levels/parameters/sleep_disabled 1

    wait /dev/block/platform/soc/${ro.boot.bootdevice}
    symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice

    # start qseecomd early as we mount system/ vendor/ early
    # vold needs keymaster that needs qseecomd
    start vendor.qseecomd
    start keymaster-4-0

    start vendor.citadeld
    start vendor.keymaster-4-1-citadel

    # Loading kernel modules in background
    start insmod_sh

    # 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/cpu0/cpufreq/schedutil/up_rate_limit_us 500
    write /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us 20000

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

    # configure governor settings for big big CPU
    write /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor schedutil
    write /sys/devices/system/cpu/cpu7/cpufreq/schedutil/up_rate_limit_us 500
    write /sys/devices/system/cpu/cpu7/cpufreq/schedutil/down_rate_limit_us 20000

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

    # Some user code relies on ro.boot.hardware.revision
    setprop ro.boot.hardware.revision ${ro.revision}

    # 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

    mkdir /dev/cpuset/camera-daemon
    write /dev/cpuset/camera-daemon/cpus 0-7
    write /dev/cpuset/camera-daemon/mems 0
    chown system system /dev/cpuset/camera-daemon
    chown system system /dev/cpuset/camera-daemon/tasks
    chmod 0664 /dev/cpuset/camera-daemon/tasks

    # create an stune group for camera-specific processes
    mkdir /dev/stune/camera-daemon
    write /dev/stune/camera-daemon/schedtune.prefer_idle 1
    write /dev/stune/camera-daemon/schedtune.boost 0
    chown system system /dev/stune/camera-daemon
    chown system system /dev/stune/camera-daemon/tasks
    chmod 0664 /dev/stune/camera-daemon/tasks

    # Allow PAI targeting per hardware SKU
    setprop ro.oem.key1 ${ro.boot.hardware.sku}

    # Property used by vintf for sku specific manifests
    # Property used by NFC for sku specific configurations
    setprop ro.boot.product.hardware.sku ${ro.boot.hardware.sku}

    # Battery Defender
    chown system system /sys/devices/platform/soc/soc:google,charger/charge_stop_level
    chown system system /sys/devices/platform/soc/soc:google,charger/charge_start_level

on late-init
    chown system system /sys/devices/virtual/thermal/tz-by-name/skin-therm-monitor/trip_point_0_temp
    chown system system /sys/devices/virtual/thermal/tz-by-name/skin-therm-monitor/trip_point_0_hyst
    chown system system /sys/devices/virtual/thermal/tz-by-name/usbc-therm-monitor/trip_point_0_temp
    chown system system /sys/devices/virtual/thermal/tz-by-name/usbc-therm-monitor/trip_point_0_hyst
    chown system system /sys/devices/virtual/thermal/tz-by-name/soc/mode

on fs
    mount_all /vendor/etc/fstab.${ro.boot.hardware.platform} --early

    mkdir /mnt/vendor/persist/audio 0770 media audio
    mkdir /mnt/vendor/persist/data 0700 system system
    mkdir /mnt/vendor/persist/display 0770 system graphics
    mkdir /mnt/vendor/persist/haptics 0770 system system
    mkdir /mnt/vendor/persist/rfs 0770 root system
    mkdir /mnt/vendor/persist/hlos_rfs 0770 root system
    mkdir /mnt/vendor/persist/oslo 0770 system system
    mkdir /mnt/vendor/persist/touch 0770 system system
    chmod 0770 /mnt/vendor/persist/rfs
    chmod 0770 /mnt/vendor/persist/rfs/shared
    chmod 0770 /mnt/vendor/persist/rfs/msm
    chmod 0770 /mnt/vendor/persist/rfs/msm/adsp
    chmod 0770 /mnt/vendor/persist/rfs/msm/mpss
    chmod 0770 /mnt/vendor/persist/rfs/msm/slpi
    chmod 0770 /mnt/vendor/persist/rfs/mdm
    chmod 0770 /mnt/vendor/persist/rfs/mdm/adsp
    chmod 0770 /mnt/vendor/persist/rfs/mdm/mpss
    chmod 0770 /mnt/vendor/persist/rfs/mdm/slpi
    chmod 0770 /mnt/vendor/persist/rfs/mdm/tn
    chmod 0770 /mnt/vendor/persist/rfs/apq
    chmod 0770 /mnt/vendor/persist/rfs/apq/gnss
    chmod 0770 /mnt/vendor/persist/hlos_rfs

    # for cycle count backup
    mkdir /mnt/vendor/persist/battery 0700 system system

    # Set up sensors-related directories and permissions
    chmod 775 /mnt/vendor/persist/sensors
    chmod 664 /mnt/vendor/persist/sensors/sensors_settings
    chmod 775 /mnt/vendor/persist/sensors/registry
    chmod 775 /mnt/vendor/persist/sensors/registry/registry
    chmod 775 /mnt/vendor/persist/sensors/registry/factory_data
    chmod 664 /mnt/vendor/persist/sensors/registry/factory_data/sns_fac_registry
    chmod 664 /mnt/vendor/persist/sensors/registry/registry/sensors_registry

    restorecon_recursive /mnt/vendor/persist

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

    # Wait qseecomd started
    wait_for_prop vendor.sys.listeners.registered true

    # load IPA FWs
    # This must be started when vendor.sys.listeners.registered is true
    write /dev/ipa 1

on late-fs
    # Start services for bootanim
    #start color_init
    #wait_for_prop vendor.display.native_display_primaries_ready 1
    #setprop ro.surface_flinger.display_primary_red ${vendor.display.primary_red}
    #setprop ro.surface_flinger.display_primary_green ${vendor.display.primary_green}
    #setprop ro.surface_flinger.display_primary_blue ${vendor.display.primary_blue}
    #setprop ro.surface_flinger.display_primary_white ${vendor.display.primary_white}
    # Permission for hwcomposer
    chown system system /sys/devices/platform/soc/soc:qcom,dsi-display-primary/gamma
    start surfaceflinger
    start bootanim
    start vendor.qti.hardware.display.composer
    start vendor.configstore-hal
    start vendor.qti.hardware.display.allocator
    start vendor.light-1-1

    # Wait for keymaster HALs (TEE and StrongBox)
    exec_start wait_for_strongbox


    # Mount RW partitions which need run fsck
    mount_all /vendor/etc/fstab.${ro.boot.hardware.platform} --late
    # Boot time fs tune
    write /sys/block/dm-9/queue/read_ahead_kb 2048

    # Required for time_daemon
    mkdir /mnt/vendor/persist/time 0770 system system
    chown system system /mnt/vendor/persist/time/ats_1
    chown system system /mnt/vendor/persist/time/ats_2
    chown system system /mnt/vendor/persist/time/ats_3
    chown system system /mnt/vendor/persist/time/ats_4
    chown system system /mnt/vendor/persist/time/ats_5
    chown system system /mnt/vendor/persist/time/ats_6
    chown system system /mnt/vendor/persist/time/ats_7
    chown system system /mnt/vendor/persist/time/ats_8
    chown system system /mnt/vendor/persist/time/ats_9
    chown system system /mnt/vendor/persist/time/ats_10
    chown system system /mnt/vendor/persist/time/ats_11
    chown system system /mnt/vendor/persist/time/ats_12
    chown system system /mnt/vendor/persist/time/ats_13
    chown system system /mnt/vendor/persist/time/ats_14
    chown system system /mnt/vendor/persist/time/ats_15
    chown system system /mnt/vendor/persist/time/ats_16

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

    # Init sensor specific services
    start init-sensors-sh

    # turn off vblank irq immediately after turning off
    write /sys/module/drm/parameters/vblankoffdelay -1

on post-fs-data
    mkdir /vendor/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/vendor/hbtp 0750 system system
    mkdir /data/vendor/tloc 0700 system drmrpc
    mkdir /data/vendor/nnhal 0700 system system
    mkdir /data/vendor/time 0770 system system
    mkdir /data/vendor/modem_fdr 0700 root system
    mkdir /data/vendor/display 0770 system graphics
    mkdir /data/vendor/camera 0770 system system
    mkdir /data/vendor/rebootescrow 0770 hsm hsm
    start vendor.rebootescrow-citadel

on zygote-start
    # zygote is started in common init.rc
    # and now we can continue initialize /data/
    mkdir /data/vendor/ipa 0770 radio radio
    chown radio radio /data/vendor/ipa

    # Create the directories used by the Wireless subsystem
    mkdir /data/vendor/wifi 0771 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 for radio
    mkdir /data/vendor/radio 0773 system radio
    mkdir /data/vendor/modem_stat 0771 system radio
    write /data/vendor/modem_stat/debug.txt ""
    chown system radio /data/vendor/modem_stat/debug.txt
    chmod 0664 /data/vendor/modem_stat/debug.txt

    # 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
    mkdir /dev/socket/location 0770 gps gps
    mkdir /dev/socket/location/mq 0770 gps gps
    mkdir /dev/socket/location/xtra 0770 gps gps

on early-boot
    # Change owner for sensors-related directories
    chown root system /mnt/vendor/persist/sensors/registry
    chown root system /mnt/vendor/persist/sensors/registry/registry
    chown system root /mnt/vendor/persist/sensors/sensors_settings
    chown root root /mnt/vendor/persist/sensors/registry/registry/sensors_settings

    # Set up sensors-related data directories and permissions
    mkdir /data/vendor/sensors 0770
    chown system system /data/vendor/sensors
    mkdir /data/vendor/sensors/log 0770
    chown system system /data/vendor/sensors/log

    # Change owner for sensors factory calibrated registries directory
    chown system system /mnt/vendor/persist/sensors/registry/factory_data
    chown system system /mnt/vendor/persist/sensors/registry/factory_data/sns_fac_registry
    restorecon_recursive /mnt/vendor/persist/sensors/registry/factory_data

    chmod 770 /mnt/vendor/persist/audio
    chmod 660 /mnt/vendor/persist/audio/audio.cal
    chown media audio /mnt/vendor/persist/audio
    chown audioserver audio /mnt/vendor/persist/audio/audio.cal

    # Set up haptics-related directories and permissions
    chmod 770 /mnt/vendor/persist/haptics
    chmod 440 /mnt/vendor/persist/haptics/drv2624.cal
    chown system system /mnt/vendor/persist/haptics
    chown system system /mnt/vendor/persist/haptics/drv2624.cal

    # Set up oslo-related directories and permissions
    chmod 770 /mnt/vendor/persist/oslo
    chmod 660 /mnt/vendor/persist/oslo/oslo.cal
    chown system system /mnt/vendor/persist/oslo
    chown system system /mnt/vendor/persist/oslo/oslo.cal

    # Set up touch directories and permissions
    chmod 770 /mnt/vendor/persist/touch
    chown system system /mnt/vendor/persist/touch

    # Permission for lights driver
    chown system system /sys/class/backlight/panel0-backlight/brightness
    chown system system /sys/class/backlight/panel0-backlight/vr_mode
    chown system system /sys/class/backlight/panel0-backlight/hbm_mode
    chown system system /sys/class/backlight/panel0-backlight/als_table

    # Wait for insmod_sh to finish all modules
    wait_for_prop vendor.all.modules.ready 1

    # Update dm-verity state and set partition.*.verified properties
    verity_update_state

    # Wait for insmod_sh to finish all boot devices
    wait_for_prop vendor.all.devices.ready 1

    # 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
    chown system system /sys/class/leds/vibrator/device/lra_wave_shape
    write /sys/class/leds/vibrator/trigger transient

    # Permission for rainbow sensor
    chown system system /sys/devices/platform/soc/994000.i2c/i2c-3/3-0020/rainbow_enable
    chmod 0660 /sys/devices/platform/soc/994000.i2c/i2c-3/3-0020/rainbow_enable
    chown system system /sys/devices/platform/soc/994000.i2c/i2c-3/3-0020/rainbow_read_byte
    chmod 0660 /sys/devices/platform/soc/994000.i2c/i2c-3/3-0020/rainbow_read_byte
    chown system system /sys/devices/platform/soc/994000.i2c/i2c-3/3-0020/rainbow_write_byte
    chmod 0660 /sys/devices/platform/soc/994000.i2c/i2c-3/3-0020/rainbow_write_byte
    chown system system /dev/vd6281
    chmod 0660 /dev/vd6281
    chown system system /mnt/vendor/persist/camera/rals_fac_test
    chmod 0660 /mnt/vendor/persist/camera/rals_fac_test

    # Permission for Athletico
    chown system system /dev/sensor_tunnel
    chmod 0660 /dev/sensor_tunnel

    # FG cycle count read from dumpstate + backup restore from health HAL (and pixelstats)
    chown system system /sys/class/power_supply/maxfg/cycle_counts_bins

    # Permission for Pixelstats
    chown system system /sys/class/misc/msm_cirrus_playback/resistance_left_right
    chown system system /sys/devices/platform/soc/${ro.boot.bootdevice}/slowio_read_cnt
    chown system system /sys/devices/platform/soc/${ro.boot.bootdevice}/slowio_write_cnt
    chown system system /sys/devices/platform/soc/${ro.boot.bootdevice}/slowio_unmap_cnt
    chown system system /sys/devices/platform/soc/${ro.boot.bootdevice}/slowio_sync_cnt

    # Permission for Health Storage HAL
    chown system system /sys/devices/platform/soc/${ro.boot.bootdevice}/manual_gc

    # Permissions for reading display native color gamut
    chown system graphics /mnt/vendor/persist/display/native_gamut.csv

on boot
    # 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

    setprop wifi.interface wlan0

    chown system system /sys/kernel/hbtp/display_pwr

    start init-modem-sh

    start rfs_access

    # default country code
    setprop ro.boot.wificountrycode 00

    # WLAN debug access
    chown system system /d/icnss/stats

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

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

on property:init.svc.vendor.charger=running
    stop vendor.qseecomd
    stop keymaster-4-0

    setprop sys.usb.configfs 1
    setprop vendor.setup.power 1

    # keep one little and one big without big+
    write /sys/devices/system/cpu/cpu1/online 0
    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/cpu7/online 0

on property:sys.boot_completed=1
    setprop vendor.setup.power 1

    # Runtime fs tuning
    write /sys/block/sda/queue/read_ahead_kb 128
    write /sys/block/sda/queue/nr_requests 128
    write /sys/block/sda/queue/iostats 1
    write /sys/block/dm-0/queue/read_ahead_kb 128
    write /sys/block/dm-1/queue/read_ahead_kb 128
    write /sys/block/dm-2/queue/read_ahead_kb 128
    write /sys/block/dm-3/queue/read_ahead_kb 128
    write /sys/block/dm-4/queue/read_ahead_kb 128
    write /sys/block/dm-5/queue/read_ahead_kb 128
    write /sys/block/dm-6/queue/read_ahead_kb 128
    write /sys/block/dm-7/queue/read_ahead_kb 128
    write /sys/block/dm-8/queue/read_ahead_kb 128
    write /sys/block/dm-9/queue/read_ahead_kb 128

    # Block layer tuning: discard chunk size up to 128MB
    # Otherwise, contiguous discards can be merged
    write /sys/block/sda/queue/discard_max_bytes 134217728

    # Back to default VM settings
    write /proc/sys/vm/dirty_expire_centisecs 3000
    write /proc/sys/vm/dirty_background_ratio 10

    # Enable ZRAM on boot_complete
    swapon_all /vendor/etc/fstab.${ro.boot.hardware.platform}
    write /proc/sys/vm/swappiness 100

    # Setup runtime cpusets
    write /dev/cpuset/top-app/cpus 0-7
    write /dev/cpuset/foreground/cpus 0-6
    write /dev/cpuset/background/cpus 4-5
    write /dev/cpuset/system-background/cpus 2-5
    write /dev/cpuset/restricted/cpus 2-5

    # Setup runtime blkio
    # value for group_idle is us
    write /dev/blkio/blkio.weight 1000
    write /dev/blkio/background/blkio.weight 200
    write /dev/blkio/blkio.group_idle 2000
    write /dev/blkio/background/blkio.group_idle 0

    # HardwareInfo needs to be able to read display info
    chmod 444 /sys/devices/platform/soc/soc:qcom,dsi-display-primary/panel_info/panel0/serial_number
    chmod 444 /sys/devices/platform/soc/soc:qcom,dsi-display-primary/panel_info/panel0/panel_vendor_name
    chmod 444 /sys/devices/platform/soc/soc:qcom,dsi-display-primary/panel_info/panel0/panel_extinfo

    # Maxim FG dump for dumpstate
    chown system system /sys/kernel/debug/regmap/1-0036/registers
    chown system system /sys/kernel/debug/regmap/1-000b/registers
    chown system system /sys/kernel/debug/google_battery/cycle_count_bins
    chown system system /sys/kernel/debug/google_battery/ssoc_gdf
    chown system system /sys/kernel/debug/google_battery/ssoc_rls
    chown system system /sys/kernel/debug/google_battery/ssoc_uic
    chown system system /sys/kernel/debug/google_battery/ssoc_uicurve
    chown system system /sys/kernel/debug/google_charger/pps_op_ua
    chown system system /sys/kernel/debug/google_charger/pps_out_uv

    # Permission for wireless charging
    chown system system /sys/class/power_supply/wireless/capacity
    chmod 0660 /sys/class/power_supply/wireless/capacity
    chown system system /sys/devices/platform/soc/98c000.i2c/i2c-1/1-003b/rtx
    chmod 0660 /sys/devices/platform/soc/98c000.i2c/i2c-1/1-003b/rtx

    # Permission for Athletico
    chown system system /dev/iaxxx-module-celldrv
    chmod 0660 /dev/iaxxx-module-celldrv

    # Permission for bootloader logs
    chown root log /proc/bldrlog
    chmod 0444 /proc/bldrlog

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

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

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

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

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

service vendor.thermal-engine /vendor/bin/thermal-engine -c /vendor/etc/thermal-engine-${ro.hardware}.conf
   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 init-sensors-sh /vendor/bin/init.sensors.sh
    class main
    user root
    group root system
    disabled
    oneshot

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

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

service vendor.cdsprpcd /vendor/bin/cdsprpcd
   class main
   user system
   group system

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

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

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

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

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

service cnd /vendor/bin/cnd
   class main
   user system
   group system wifi inet radio wakelock net_admin

service wait_for_strongbox /vendor/bin/hw/wait_for_strongbox
    user root
    group root system
    priority -20
    ioprio rt 0

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

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 tftp_server /vendor/bin/tftp_server
   class core
   user root
   group root system

service modem_svc /vendor/bin/modem_svc -q
   class core
   user root
   group system
   capabilities NET_BIND_SERVICE

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

service vendor.ssr_setup /vendor/bin/ssr_setup
    oneshot
    disabled

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

on post-fs-data && property:persist.vendor.sys.ssr.enable_ramdumps=1 && property:vendor.skip.init=0
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
    mkdir /data/vendor/wifidump 771 root system
    mkdir /data/vendor/ramdump 771 root system
    mkdir /data/vendor/ssrdump 771 root system
    mkdir /data/vendor/ssrlog  771 root system
    start vendor.ss_ramdump

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

on property:init.svc.vendor.qti.hardware.display.composer=stopped
    stop ppd

on property:init.svc.vendor.qti.hardware.display.composer=running
    start ppd

# charger driver exposes now finer grain control, map demo mode to those properties
# NOTE: demo mode can only be exit wiping data (which reset the persist properties)
on property:sys.retaildemo.enabled=1
    setprop persist.vendor.charge.stop.level 35
    setprop persist.vendor.charge.start.level 30

service insmod_sh /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.${ro.hardware}.cfg
    class main
    user root
    group root system
    disabled
    oneshot

service vendor.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

service pd_mapper /vendor/bin/pd-mapper
     class core
     user system
     group system
     capabilities NET_BIND_SERVICE

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

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

# bugreport is triggered by holding down volume down, volume up and power
service bugreport /system/bin/dumpstate -d -p -z
    class main
    disabled
    oneshot
    keycodes 114 115 116

# DSDS feature
# Set to Dual-sim mode based on CDT setting
on property:ro.boot.hardware.dsds=1
    setprop persist.radio.multisim.config dsds

# Restart 1st qcrild after SIM config changed
on property:vendor.radio.sim_num.switch=1to2 && property:persist.radio.multisim.config=dsds
    restart vendor.qcrild

on property:vendor.radio.sim_num.switch=2to1 && property:persist.radio.multisim.config=
    restart vendor.qcrild

# Enable 2nd qcrild when the property set to dsds
on property:persist.radio.multisim.config=dsds
    start vendor.qcrild2

# Stop 2nd qcrild when the property set to empty string
on property:persist.radio.multisim.config=
    stop vendor.qcrild2

# For Japan radio builds, always enforce camera shutter sound
# Since this property is read by the audio server in system service,
# it should be written by the system init.
on property:ro.boot.hardware.radio.subtype=1
    setprop audio.camerasound.force true
