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

    # Busy loop to wait for devices booted by devstart_sh just in case device not ready
    exec - root root system -- /system/bin/init.qcom.devwait.sh

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

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

    # 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
    # Busy loop to wait for qseecomd started
    exec - root root system -- /system/bin/init.angler.qseecomd.sh
    # Start devices by sysfs trigger
    start devstart_sh

on post-fs-data
    # boot time fs tune
    write /sys/block/mmcblk0/queue/iostats 0
    write /sys/block/mmcblk0/queue/scheduler cfq
    write /sys/block/mmcblk0/queue/iosched/slice_idle 0
    write /sys/block/mmcblk0/queue/read_ahead_kb 2048
    write /sys/block/mmcblk0/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

    # 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
    mkdir /data/vendor/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
     #end boot time fs tune
     write /sys/block/mmcblk0/queue/scheduler noop
     write /sys/block/mmcblk0/queue/rq_affinity 0
     write /sys/block/mmcblk0/queue/read_ahead_kb 128
     write /sys/block/mmcblk0/queue/nr_requests 128
     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/mmcblk0/queue/iostats 1

# 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 /charger
    class charger
    group log
    seclabel u:r:charger: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 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 main
    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

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