#
# Copyright 2015 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 init.angler.usb.rc
import init.angler.diag.rc
import init.angler.sensorhub.rc

on early-init
    mount debugfs debugfs /sys/kernel/debug
    chown system system /sys/kernel/debug/kgsl/proc

on init
    # Load persistent dm-verity state
    verity_load_state

    # Set permissions for persist partition
    mkdir /persist 0771 system system
    mkdir /firmware 0771 system system

    symlink /sdcard /storage/sdcard0

    # Setup zram options
    write /sys/block/zram0/comp_algorithm lz4
    write /sys/block/zram0/max_comp_streams 4

    write /proc/sys/vm/page-cluster 0

on fs
    mount_all ./fstab.angler
    swapon_all ./fstab.angler

    restorecon_recursive /persist
    mkdir /persist/data/sfs 0700 system system
    mkdir /persist/data/tz 0700 system system

    # Enable rmnet data and aggregation
    setprop persist.rmnet.mux enabled
    setprop persist.rmnet.data.enable true
    setprop persist.data.wda.enable true
    setprop persist.data.df.agg.dl_pkt 10
    setprop persist.data.df.agg.dl_size 4096

on early-boot
    # set RLIMIT_MEMLOCK to 64MB
    setrlimit 8 67108864 67108864

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

on boot
    # execute script to set initial CPU settings
    # don't run as a service to avoid race conditions
    exec - root system -- /system/bin/init.angler.power.sh

    # Enable DEBUG_SUSPEND, DEBUG_EXIT_SUSPEND, and DEBUG_WAKEUP
    write /sys/module/wakelock/parameters/debug_mask 7

    # add a cpuset for the camera daemon
    # we want all the little cores for camera
    mkdir /dev/cpuset/camera-daemon
    write /dev/cpuset/camera-daemon/cpus 0
    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

    # update foreground cpuset now that processors are up
    # reserve CPU 3 for the top app and camera daemon
    write /dev/cpuset/foreground/cpus 0-2,4-7
    write /dev/cpuset/foreground/boost/cpus 4-7
    write /dev/cpuset/background/cpus 0
    write /dev/cpuset/system-background/cpus 0-2
    write /dev/cpuset/top-app/cpus 0-7
    write /dev/cpuset/camera-daemon/cpus 0-3

    # setup permissions for fb0 related nodes
    chown radio radio /sys/class/graphics/fb0/dynamic_dsitiming

    # create symlink for fb1 as HDMI
    symlink /dev/graphics/fb1 /dev/graphics/hdmi

    # setup permissions for fb1 related nodes
    chown system graphics /sys/class/graphics/fb1/hpd
    chown system graphics /sys/class/graphics/fb1/vendor_name
    chown system graphics /sys/class/graphics/fb1/product_description
    chmod 0664 /sys/devices/virtual/graphics/fb1/hpd
    chmod 0664 /sys/devices/virtual/graphics/fb1/vendor_name
    chmod 0664 /sys/devices/virtual/graphics/fb1/product_description

    #Create QMUX deamon socket
    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_gps 0770 gps gps
    chmod 2770 /dev/socket/qmux_gps

    setprop wifi.interface wlan0

    #wifi sar
    chown radio radio /sys/module/wifi_sar/parameters/wifi_tx_power_limit

    #compass compensation
    chown root system /sys/class/power_supply/battery/compass_compensation

    write /sys/bus/platform/drivers/xhci_msm_hsic/unbind msm_hsic_host
    write /sys/module/rmnet_usb/parameters/mux_enabled 1
    write /sys/module/rmnet_usb/parameters/no_fwd_rmnet_links 8
    write /sys/module/rmnet_usb/parameters/no_rmnet_insts_per_dev 17
    write /sys/module/rmnet_usb/parameters/rmnet_data_init 1
    chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait

    # 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

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

    # GPU Tuning
    chown root system /sys/class/kgsl/kgsl-3d0/dispatch/inflight
    chmod 0660 /sys/class/kgsl/kgsl-3d0/dispatch/inflight
    chown root system /sys/class/kgsl/kgsl-3d0/dispatch/inflight_low_latency
    chmod 0660 /sys/class/kgsl/kgsl-3d0/dispatch/inflight_low_latency

    write /sys/block/mmcblk0/queue/rq_affinity 0
    write /sys/block/mmcblk0/queue/scheduler noop

    # Wifi firmware reload path
    chown wifi wifi /sys/module/bcmdhd/parameters/firmware_path

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

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

on post-fs
    symlink /dev/block/platform/soc.0/f9824900.sdhci /dev/block/bootdevice

    start qseecomd
    exec - root root system -- /system/bin/init.angler.qseecomd.sh

on post-fs-data
    write /sys/kernel/boot_adsp/boot 1

    # Ecc_Handler qcril.db
    mkdir /data/misc/radio 0770 system radio

    setprop vold.post_fs_data_done 1

    mkdir /data/misc/qsee 0770 system system
    mkdir /data/fpc 0700 system system

    #Create folder for mm-qcamera-daemon
    mkdir /data/misc/camera 0770 camera camera

    #Create folder for display calibration data
    mkdir /data/misc/display 0770 system graphics

    # Create /data/time folder for time-services
    mkdir /data/time/ 0700 system system
    mkdir /data/audio/ 0770 media audio

    # Create folder for perf daemon
    mkdir /data/misc/perfd 0755 root system
    chmod 2755 /data/misc/perfd
    mkdir /data/system/perfd 0770 root system
    rm /data/system/perfd/default_values
    chmod 2770 /data/system/perfd
    setprop ro.min_freq_0 384000
    setprop ro.min_freq_4 384000

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

    #Create directory from IMS services
    mkdir /data/shared 0755
    chown system system /data/shared

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

    # Configure bluetooth
    chmod 0660 /proc/bluetooth/sleep/lpm
    chmod 0660 /proc/bluetooth/sleep/btwrite
    chmod 0660 /sys/class/rfkill/rfkill0/state
    chmod 0660 /dev/ttyHS0
    chown bluetooth bluetooth /proc/bluetooth/sleep/lpm
    chown bluetooth bluetooth /proc/bluetooth/sleep/btwrite
    chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state
    chown bluetooth bluetooth /dev/ttyHS0

    # Create nfc local data
    mkdir /data/nfc 0770 nfc nfc

    #modify access for speaker calibdata
    chown system system /persist/audio/speaker_calibdata.bin
    chmod 0444 /persist/audio/speaker_calibdata.bin

    #modify access for laser calibration data
    chmod 0710 /persist/data
    chmod 0440 /persist/data/st_offset
    chmod 0440 /persist/data/st_xtalk

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

    chown system system /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
    chmod 0660 /sys/class/kgsl/kgsl-3d0/devfreq/max_freq
    chown system system /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
    chmod 0660 /sys/class/kgsl/kgsl-3d0/devfreq/min_freq
    chown system system /sys/class/devfreq/qcom,gpubw.70/min_freq
    chmod 0660 /sys/class/devfreq/qcom,gpubw.70/min_freq
    chown system system /sys/devices/system/cpu/cpu4/online
    chmod 0660 /sys/devices/system/cpu/cpu4/online
    chown system system /sys/devices/system/cpu/cpu5/online
    chmod 0660 /sys/devices/system/cpu/cpu5/online
    chown system system /sys/devices/system/cpu/cpu6/online
    chmod 0660 /sys/devices/system/cpu/cpu6/online
    chown system system /sys/devices/system/cpu/cpu7/online
    chmod 0660 /sys/devices/system/cpu/cpu7/online
on charger
   #set cpu4,5 online first, or they can't get into low power consumption mode
   write /sys/devices/system/cpu/cpu4/online 1
   write /sys/devices/system/cpu/cpu5/online 1
   #low power governing
   write /sys/devices/soc.0/qcom,bcl.60/mode disable
   write /sys/devices/soc.0/qcom,bcl.60/hotplug_mask 0
   write /sys/devices/soc.0/qcom,bcl.60/hotplug_soc_mask 0
   write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive
   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/cpu6/online 0
   write /sys/devices/system/cpu/cpu7/online 0

on property:sys.boot_completed=1
     #allow CPUs to go in deeper idle state than C0
     write /sys/module/lpm_levels/parameters/sleep_disabled 0

# Search the laser device under /dev/input, then create symlink
service InputEventFind /vendor/bin/InputEventFind
    class main
    oneshot

service ssr_setup /system/bin/ssr_setup
    oneshot
    disabled

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

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

on property:persist.sys.ssr.enable_ramdumps=1
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
    start ss_ramdump

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

service charger /sbin/healthd -c
    class charger
    group log
    seclabel u:r:healthd:s0
    writepid /dev/cpuset/system-background/tasks

service per_mgr /vendor/bin/pm-service
    class core
    user root
    group system net_raw
    writepid /dev/cpuset/system-background/tasks

service per_proxy /vendor/bin/pm-proxy
    class core
    user root
    group system net_raw
    writepid /dev/cpuset/system-background/tasks
    disabled

service rmt_storage /vendor/bin/rmt_storage
    class core
    user root
    group system wakelock
    writepid /dev/cpuset/system-background/tasks

service qseecomd /vendor/bin/qseecomd
    class core
    user root
    group root
    writepid /dev/cpuset/system-background/tasks

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

service thermal-engine /vendor/bin/thermal-engine
    class main
    user root
    socket thermal-send-client stream 0660 system system
    socket thermal-recv-client stream 0660 system system
    socket thermal-recv-passive-client stream 0660 system system
    group root radio system
    writepid /dev/cpuset/system-background/tasks

# QMUX must be in multiple groups to support external process connections
service qmuxd /vendor/bin/qmuxd
    class main
    user radio
    group radio audio bluetooth wakelock gps
    writepid /dev/cpuset/system-background/tasks

service perfd /vendor/bin/perfd
    class main
    user root
    group system
    writepid /dev/cpuset/system-background/tasks

service netmgrd /vendor/bin/netmgrd
    class main
    group radio system wakelock
    writepid /dev/cpuset/system-background/tasks

service qti /vendor/bin/qti
    class main
    user radio
    group radio net_raw usb net_admin
    writepid /dev/cpuset/system-background/tasks

service time_daemon /vendor/bin/time_daemon
    class late_start
    user root
    group root
    writepid /dev/cpuset/system-background/tasks

service loc_launcher /vendor/bin/loc_launcher
    class late_start
    group gps inet net_raw net_admin wifi
    writepid /dev/cpuset/system-background/tasks

# 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

# start camera server as daemon
service qcamerasvr /vendor/bin/mm-qcamera-daemon
    class late_start
    user camera
    group camera system inet input graphics
    writepid /dev/cpuset/camera-daemon/tasks

service fingerprintd /system/bin/fingerprintd
    class late_start
    user system
    group input
    writepid /dev/cpuset/system-background/tasks

service wpa_supplicant /vendor/bin/hw/wpa_supplicant \
        -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
        -I/system/etc/wifi/p2p_supplicant_overlay.conf \
        -O/data/misc/wifi/sockets \
        -m/data/misc/wifi/p2p_supplicant.conf \
        -puse_p2p_group_interface=1p2p_device=1 \
        -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
    class main
    socket wpa_wlan0 dgram 660 wifi wifi
    disabled
    oneshot

service imsqmidaemon /system/bin/imsqmidaemon
    class main
    user system
    socket ims_qmid stream 0660 system radio
    group radio net_raw log diag
    writepid /dev/cpuset/system-background/tasks

service imsdatadaemon /system/bin/imsdatadaemon
    class main
    user system
    socket ims_datad stream 0660 system radio
    group system wifi radio inet net_raw log diag net_admin
    writepid /dev/cpuset/system-background/tasks
    disabled

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

service imscmservice /system/bin/imscmservice
    class main
    user system
    group radio net_raw diag diag log
    writepid /dev/cpuset/system-background/tasks

service cnd /vendor/bin/cnd
    class late_start
    socket cnd stream 660 root inet
    group root wakelock
    writepid /dev/cpuset/system-background/tasks

on property:ro.boot.hardware.revision=ANGLER-V1
    write /sys/module/bcmdhd/parameters/nvram_path \
	      /system/etc/wifi/bcmdhd-pme.cal

on property:ro.boot.hardware.revision=ANGLER-V2
    write /sys/module/bcmdhd/parameters/nvram_path \
	      /system/etc/wifi/bcmdhd-pme.cal

on property:ro.boot.wifi_cal=2
	write /sys/module/bcmdhd/parameters/nvram_path \
		  /system/etc/wifi/bcmdhd-low.cal

on property:ro.boot.wifi_cal=3
	write /sys/module/bcmdhd/parameters/nvram_path \
		  /system/etc/wifi/bcmdhd-high.cal

on property:ro.boot.hardware.sku=H1511
    setprop ro.boot.wificountrycode US

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

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

service oem_qmi_server /vendor/bin/oem_qmi_server
    class main
    user root
    group system radio

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

#start atfwd as daemon
service atfwd /vendor/bin/ATFWD-daemon
    class late_start
    user system
    group system radio

service ppd /system/bin/mm-pp-daemon
    class late_start
    user system
    socket pps stream 0660 system system
    group system graphics

on property:init.svc.surfaceflinger=stopped
    stop ppd

service diag_test_server /vendor/bin/diag_test_server
    class core
    user root
    disabled

on property:ro.boot.mode=hw-factory
    start diag_test_server

