#
# 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.boot.hardware.platform}.power.rc
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


on property:init.svc.vendor.charger=running
    # keep one LITTLE and one 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/cpu5/online 0
    write /sys/devices/system/cpu/cpu6/online 0
    write /sys/devices/system/cpu/cpu7/online 0
    # Enable UFS powersaving
    write /sys/devices/platform/soc/${ro.boot.bootdevice}/clkgate_enable 1
    write /sys/devices/platform/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 0
    # Disable sched_boost
    write /proc/sys/kernel/sched_boost 0
    # Enable thermal mitigation
    write /sys/devices/virtual/thermal/tz-by-name/backup-charge/mode enabled
    # Ensure 100% reporting is sticky
    write /sys/class/power_supply/maxfg/offmode_charger 1

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
    # Enable sched_boost
    write /proc/sys/kernel/sched_boost 1
    mount_all /vendor/etc/fstab.persist --early

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

# We need vold early for metadata encryption
on early-fs
    start vold

on init && property:vendor.skip.init=0
    start logd

    # QSEE rpmb listener need symlink for bootdevice
    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 Citadel keymaster (StrongBox) early
    start vendor.citadeld
    start vendor.keymaster-4-1-citadel

    # Boot time fs tune
    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/nr_requests 256
    write /sys/block/sdf/queue/iostats 0
    write /sys/block/sdf/queue/scheduler cfq
    write /sys/block/sdf/queue/iosched/slice_idle 0
    write /sys/block/sdf/queue/nr_requests 256

    # 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

    # Loading kernel modules in background
    start insmod_sh

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

    # 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/cpu4/cpufreq/scaling_governor schedutil
    write /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us 500
    write /sys/devices/system/cpu/cpu4/cpufreq/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

    # set default schedTune value for camera-daemon
    write /dev/stune/camera-daemon/schedtune.prefer_idle 1
    write /dev/stune/camera-daemon/schedtune.boost 0

    # 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

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

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

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

    # Property used by pointing to thermal-engine config file
    setprop vendor.thermal.vr_mode -novr
    setprop vendor.thermal.hw_mode -prod

    # 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
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_drainto_soc
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_recharge_soc
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_recharge_voltage
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_resume_abs_temp
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_resume_soc
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_resume_temp
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_resume_time
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_trigger_temp
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_trigger_time
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_trigger_voltage
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_temp_enable
    chown system system /sys/devices/platform/soc/soc:google,charger/bd_clear
    chown system system /sys/class/power_supply/wireless/device/mitigate_threshold

on late-init
    write /sys/devices/virtual/thermal/tz-by-name/quiet-therm-adc/mode enabled
    chown system system /sys/devices/virtual/thermal/tz-by-name/quiet-therm-monitor/trip_point_0_temp
    chown system system /sys/devices/virtual/thermal/tz-by-name/quiet-therm-monitor/trip_point_0_hyst
    write /sys/devices/virtual/thermal/tz-by-name/fps-therm-adc/mode enabled
    chown system system /sys/devices/virtual/thermal/tz-by-name/fps-therm-monitor/trip_point_0_temp
    chown system system /sys/devices/virtual/thermal/tz-by-name/fps-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 /persist/data 0700 system system
    mkdir /persist/display 0770 system graphics
    mkdir /persist/rfs 0770 root system
    mkdir /persist/hlos_rfs 0770 root system
    chmod 0770 /persist/rfs
    chmod 0770 /persist/rfs/shared
    chmod 0770 /persist/rfs/msm
    chmod 0770 /persist/rfs/msm/adsp
    chmod 0770 /persist/rfs/msm/mpss
    chmod 0770 /persist/rfs/msm/slpi
    chmod 0770 /persist/rfs/mdm
    chmod 0770 /persist/rfs/mdm/adsp
    chmod 0770 /persist/rfs/mdm/mpss
    chmod 0770 /persist/rfs/mdm/slpi
    chmod 0770 /persist/rfs/mdm/tn
    chmod 0770 /persist/rfs/apq
    chmod 0770 /persist/rfs/apq/gnss
    chmod 0770 /persist/hlos_rfs
    # for cycle count backup
    mkdir /persist/battery 0700 system system
    restorecon_recursive /mnt/vendor/persist

on late-fs
    start devstart_sh

    # Start services for bootanim
    start vendor.power-hal-1-3
    start surfaceflinger
    start bootanim
    start vendor.hwcomposer-2-3
    start vendor.configstore-hal
    start vendor.qti.hardware.display.allocator
    start vendor.light-1-0

    # Wait for hwservicemanager ready since fsck might be triggered in mount_all --late
    # In such case, init won't responce the property_set from hwservicemanager and then
    # cause services for bootanim not running.
    wait_for_prop hwservicemanager.ready true

    # 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

    # 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

    # Write build info to kdebuginfo.
    write /sys/module/kdebuginfo/parameters/build_info "${ro.product.name}-${ro.build.type} ${ro.build.version.incremental}"

on post-fs
    # Disable sched autogroup
    write /proc/sys/kernel/sched_autogroup_enabled 0

    # 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

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

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

    # Setup folder for modem fdr
    mkdir /data/vendor/modem_fdr 0700 root system

    # Resume-on-Reboot after we have the data dir and keymaster
    mkdir /data/vendor/rebootescrow 0770 hsm hsm
    start vendor.rebootescrow-citadel

    # 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 vendor.qcom.time.set true

    # 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
    start ipastart_sh

    mkdir /data/vendor/nnhal 0700 system system

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

    chown system system /persist/WCNSS_qcom_wlan_nv.bin

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

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

    # Create netmgr recovery folder
    mkdir /data/vendor/netmgr/recovery 0700 radio radio
    chmod 0770 /data/vendor/netmgr/recovery
    write /data/vendor/netmgr/recovery/recovery_info ""
    chown radio radio /data/vendor/netmgr/recovery/recovery_info

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

    # Set up sensors-related directories and permissions
    chmod 775 /persist/sensors
    chmod 664 /persist/sensors/sensors_settings
    chown root system /persist/sensors/registry
    chmod 775 /persist/sensors/registry
    chown root system /persist/sensors/registry/registry
    chmod 775 /persist/sensors/registry/registry

    chown system root /persist/sensors/sensors_settings
    chown root root /persist/sensors/registry/registry/sensors_settings

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

    # Restore SeLinux Context for preventing temp.json with
    # incorrect security context
    restorecon /mnt/vendor/persist/sensors/registry/temp.json

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

    chmod 770 /persist/haptics
    chmod 440 /persist/haptics/cs40l20.cal
    chown system system /persist/haptics
    chown system system /persist/haptics/cs40l20.cal

    # 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

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

    # Secure Element directory for loader service functionality
    mkdir /data/vendor/secure_element 0770 secure_element secure_element

on early-boot
    # wait for devices
    wait_for_prop vendor.qcom.devup 1

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

    write /sys/kernel/boot_adsp/boot 1
    write /sys/kernel/boot_cdsp/boot 1

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

    # Permission for rainbow sensor
    chown cameraserver camera /sys/devices/platform/soc/ac4a000.qcom,cci/ac4a000.qcom,cci:qcom,rainbow@20/rainbow_enable
    chmod 0660 /sys/devices/platform/soc/ac4a000.qcom,cci/ac4a000.qcom,cci:qcom,rainbow@20/rainbow_enable
    chown cameraserver camera /sys/devices/platform/soc/ac4a000.qcom,cci/ac4a000.qcom,cci:qcom,rainbow@20/rainbow_read_byte
    chmod 0660 /sys/devices/platform/soc/ac4a000.qcom,cci/ac4a000.qcom,cci:qcom,rainbow@20/rainbow_read_byte
    chown cameraserver camera /sys/devices/platform/soc/ac4a000.qcom,cci/ac4a000.qcom,cci:qcom,rainbow@20/rainbow_write_byte
    chmod 0660 /sys/devices/platform/soc/ac4a000.qcom,cci/ac4a000.qcom,cci:qcom,rainbow@20/rainbow_write_byte
    chown cameraserver camera /dev/vd6281
    chmod 0660 /dev/vd6281

    # Permission for Vibrator
    chown system system /sys/class/leds/vibrator/device/comp_enable
    chown system system /sys/class/leds/vibrator/device/cp_dig_scale
    chown system system /sys/class/leds/vibrator/device/cp_trigger_index
    chown system system /sys/class/leds/vibrator/device/cp_trigger_queue
    chown system system /sys/class/leds/vibrator/device/dig_scale
    chown system system /sys/class/leds/vibrator/device/f0_stored
    chown system system /sys/class/leds/vibrator/device/heartbeat
    chown system system /sys/class/leds/vibrator/device/num_waves
    chown system system /sys/class/leds/vibrator/device/redc_stored
    chown system system /sys/class/leds/vibrator/device/standby_timeout

    # 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/backlight/panel0-backlight/brightness
    chown system system /sys/class/backlight/panel0-backlight/vr_mode
    chown system system /sys/class/backlight/panel0-backlight/hbm_mode

    # Permission for Wireless charger
    chown system system /sys/devices/platform/soc/a88000.i2c/i2c-0/0-0061/rxdata
    chown system system /sys/devices/platform/soc/a88000.i2c/i2c-0/0-0061/txdata
    chown system system /sys/devices/platform/soc/a88000.i2c/i2c-0/0-0061/txlen
    chown system system /sys/devices/platform/soc/a88000.i2c/i2c-0/0-0061/ccreset
    chown system system /sys/devices/platform/soc/a88000.i2c/i2c-0/0-0061/status
    chown system system /sys/devices/platform/soc/a88000.i2c/i2c-0/0-0061/version
    chown system system /sys/class/power_supply/wireless/capacity

    # FG cycle counts read from dumpstate + backup restore from health HAL
    chown system system /sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/cycle_counts_bins
    chown system system /sys/devices/platform/soc/a90000.i2c/i2c-4/4-0036/power_supply/maxfg/cycle_counts_bins

    # HardwareInfo needs to be able to read CC bins
    chmod 644 /sys/devices/platform/soc/c440000.qcom,spmi/spmi-0/spmi0-02/c440000.qcom,spmi:qcom,pmi8998@2:qpnp,fg/cycle_counts_bins
    chmod 644 /sys/devices/platform/soc/a90000.i2c/i2c-4/4-0036/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/1d84000.ufshc/slowio_read_cnt
    chown system system /sys/devices/platform/soc/1d84000.ufshc/slowio_write_cnt
    chown system system /sys/devices/platform/soc/1d84000.ufshc/slowio_unmap_cnt
    chown system system /sys/devices/platform/soc/1d84000.ufshc/slowio_sync_cnt
    chown system system /sys/devices/platform/soc/soc:qcom,wcd-dsp-mgr/wdsp_stat


    # Permission for Health Storage HAL
    chown system system /sys/devices/platform/soc/1d84000.ufshc/manual_gc

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

    # 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

    # 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

    # default country code
    setprop ro.boot.wificountrycode 00

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

    # Default enable uicc_se
    setprop persist.vendor.radio.uicc_se_enabled true

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

# reset thermal-engine when changed profile
on property:vendor.thermal.vr_mode=*
    restart vendor.thermal-engine

service vendor.thermal-engine /vendor/bin/thermal-engine -c /vendor/etc/thermal-engine-${ro.hardware}${vendor.thermal.vr_mode}${vendor.thermal.hw_mode}.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

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

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

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

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:sys.boot_completed=1
    # Set the default IRQ affinity to the silver cluster.
    write /proc/irq/default_smp_affinity f

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

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

    # Setup final 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

    # Setup final cpuset
    write /dev/cpuset/top-app/cpus 0-7
    write /dev/cpuset/foreground/boost/cpus 0-3,6-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
    write /dev/cpuset/restricted/cpus 0-3

    # Runtime fs tuning: as we have init boottime setting and kernel patch setting
    # We should adjust the setting upon boot_complete
    # for runtime performance
    write /sys/block/sda/queue/nr_requests 128
    write /sys/block/sda/queue/iostats 1
    write /sys/block/sdf/queue/nr_requests 128
    write /sys/block/sdf/queue/iostats 1

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

    # QCOM FG SRAM dump for dumpstate
    chown system system /d/fg/sram/data
    chown system system /d/fg/sram/count
    chown system system /d/fg/sram/address

    # Maxim FG dump for dumpstate
    chown system system /d/regmap/4-0036/registers
    chown system system /d/regmap/4-000b/registers

    # UFS health
    chmod 755 /sys/kernel/debug/ufshcd0
    chmod 644 /sys/kernel/debug/ufshcd0/show_hba
    chmod 644 /sys/kernel/debug/ufshcd0/stats/err_stats
    chmod 644 /sys/kernel/debug/ufshcd0/stats/io_stats
    chmod 644 /sys/kernel/debug/ufshcd0/stats/req_stats

    # Disable sched_boost
    write /proc/sys/kernel/sched_boost 0

    # Enable PowerHAL hint processing
    setprop vendor.powerhal.init 1

    start per_proxy

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

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

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

on property:persist.vendor.sys.ssr.enable_ramdumps=1
    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  775 root system
    start ss_ramdump

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

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

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

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 modem_svc /vendor/bin/modem_svc -q
   class core
   user root
   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 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 main
   user system
   group radio diag inet log
   disabled

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

service cnd /vendor/bin/cnd
   class main
   user radio
   group system wifi inet 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 loc_launcher /vendor/bin/loc_launcher
    class late_start
    group gps inet diag wifi

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

# 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

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 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 ppd /vendor/bin/mm-pp-dpps
    class late_start
    user graphics
    group graphics
    socket pps stream 0660 system system
    disabled

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

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

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

on property:ro.boot.mode=sota
    setprop ro.boot.sota enabled

on property:ro.boot.hardware.sku=G013B
    start vendor.secure_element_hal_service_1_1
on property:ro.boot.hardware.sku=G013D
    start vendor.secure_element_hal_service_1_1

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

# 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

on property:sys.boot_completed=1 && property:ro.boot.mode=firstboot
    start init-firstboot-sh

service init-firstboot-sh /vendor/bin/init.firstboot.sh
    user nobody
    disabled
    oneshot

# init-fingerprint-sh is for stopping fps_hal after init retry fail serval times
# It keeps running until max init retry or fps_hal running successfully
# vendor.fps_hal restarts until max init retry times
#
# /vendor/bin/init.fingerprint.sh [max_init_retry_times]
service init-fingerprint-sh /vendor/bin/init.fingerprint.sh 10
    group root
    user root
    disabled
    oneshot

on property:sys.boot_completed=1
    start init-fingerprint-sh

on property:vendor.fps.init.succeed=true && property:init.svc.vendor.fps_hal=stopped
    start init-fingerprint-sh

on boot && property:persist.radio.multisim.config=dsds && property:persist.vendor.radio.multisim_switch_support=true
    start vendor.qcrild2

# Disable DSDS if multisim_switch_support is not enabled
on boot && property:persist.radio.multisim.config=dsds && property:persist.vendor.radio.multisim_switch_support=false
    setprop persist.radio.multisim.config ""
    stop vendor.qcrild2

# Write the dark theme magic to /misc partition.
service vendor.theme_set /vendor/bin/misc_writer --set-dark-theme
    disabled
    oneshot

# Set dark boot flag when the device is provisioned.
on property:persist.sys.device_provisioned=1
    start vendor.theme_set

on init && property:ro.boot.slot_successful=no
    write /sys/module/msm_poweroff/parameters/warm_reset 1

# Set or clear the warm reset flag upon the change of system property. The flag itself is set
# by writing a sysfs file; and the file will be read by kernel.
on property:ota.warm_reset=1
    write /sys/module/msm_poweroff/parameters/warm_reset 1

on property:ota.warm_reset=0
    write /sys/module/msm_poweroff/parameters/warm_reset 0
