#
# 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.bullhead.usb.rc
import init.bullhead.diag.rc
import init.bullhead.fp.rc
import init.bullhead.sensorhub.rc
import init.bullhead.ramdump.rc
import init.bullhead.misc.rc

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

on charger
    # disable FPS clk
    write /sys/bus/spi/drivers/fpc1020/spi1.2/clk_enable 0

    # low power governing
    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/cpu0/cpufreq/scaling_governor powersave

    # Disable CPU retention
    write /sys/module/lpm_levels/system/a53/cpu0/retention/idle_enabled 0
    write /sys/module/lpm_levels/system/a53/cpu1/retention/idle_enabled 0
    write /sys/module/lpm_levels/system/a53/cpu2/retention/idle_enabled 0
    write /sys/module/lpm_levels/system/a53/cpu3/retention/idle_enabled 0
    write /sys/module/lpm_levels/system/a57/cpu4/retention/idle_enabled 0
    write /sys/module/lpm_levels/system/a57/cpu5/retention/idle_enabled 0
    # Disable L2 retention
    write /sys/module/lpm_levels/system/a53/a53-l2-retention/idle_enabled 0
    write /sys/module/lpm_levels/system/a57/a57-l2-retention/idle_enabled 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/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

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

    # NXP HAL expects /dev/pn54x
    symlink /dev/pn548 /dev/pn54x

    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.bullhead
    swapon_all ./fstab.bullhead

    restorecon_recursive /persist

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

    # Allow subsystem (modem etc) debugging
    write /sys/module/subsystem_restart/parameters/enable_debug ${persist.sys.ssr.enable_debug}
    write /sys/module/pil_msa/parameters/pbl_mba_boot_timeout_ms ${persist.sys.mba_boot_timeout}
    write /sys/module/pil_msa/parameters/modem_auth_timeout_ms ${persist.sys.modem_auth_timeout}
    write /sys/module/peripheral_loader/parameters/proxy_timeout_ms ${persist.sys.pil_proxy_timeout}

    # 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 root system -- /system/bin/init.bullhead.power.sh

    # update foreground cpuset now that processors are up
    # foreground gets all CPUs except CPU 3
    # CPU 3 is reserved for the top app
    write /dev/cpuset/foreground/cpus 0-2,4-5
    write /dev/cpuset/foreground/boost/cpus 4-5
    write /dev/cpuset/background/cpus 0
    write /dev/cpuset/system-background/cpus 0-2
    write /dev/cpuset/top-app/cpus 0-5

    # 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 /dev/ttyHS0
    chmod 0660 /dev/ttyHS0
    chown bluetooth net_bt /sys/class/rfkill/rfkill0/device/extldo
    chmod 0660 /sys/class/rfkill/rfkill0/device/extldo

    # Fingerprint
    chown system system /sys/bus/spi/drivers/fpc1020/spi1.2/clk_enable
    chown system system /sys/bus/spi/drivers/fpc1020/spi1.2/wakeup_enable
    chown system system /sys/bus/spi/drivers/fpc1020/spi1.2/irq

    # 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

    # Grant permission to modify the color_temp setting
    chown system graphics /sys/class/graphics/fb0/color_temp
    chmod 0664 /sys/class/graphics/fb0/color_temp

    # Allow QMUX daemon to assign port open wait time
    chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait

    #Create QMUX deamon socket area
    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

    # Subsytem Restart
    write /sys/bus/msm_subsys/devices/subsys0/restart_level "related"
    write /sys/bus/msm_subsys/devices/subsys1/restart_level "related"
    write /sys/bus/msm_subsys/devices/subsys2/restart_level "related"
    write /sys/bus/msm_subsys/devices/subsys3/restart_level "related"

    # Subsytem Ramdump collection
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
    write /sys/module/msm_poweroff/parameters/download_mode 0

    # Adjust socket buffer to enlarge TCP receive window for high bandwidth
    write /proc/sys/net/ipv4/tcp_adv_win_scale 1

    # 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

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

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

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

    mkdir /persist/data 0700 system system
    mkdir /persist/data/sfs 0700 system system
    mkdir /persist/data/tz 0700 system system
    mkdir /persist/data/app_g 0700 system system
    mkdir /persist/widevine 0770 drm system

    start qseecomd
    # Busy loop to wait for qseecomd started
    exec - root root system -- /system/bin/init.bullhead.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/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

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

    #Update touch firmware if required
    write /sys/bus/i2c/devices/2-0020/check_fw 1
    write /sys/devices/soc.0/f9924000.i2c/power/control on

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

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

    # NFC: create data/nfc for nv storage
    mkdir /data/nfc 0770 nfc nfc
    mkdir /data/vendor/nfc 0770 nfc nfc
    mkdir /data/nfc/param 0770 nfc nfc

    # use qcril.db to handle Ecc and load MBN
    copy /system/etc/qcril.db /data/misc/radio/qcril.db
    chown radio radio /data/misc/radio/qcril.db
    chmod 0600 /data/misc/radio/qcril.db

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

    # change permission for ldaf
    chown input system /persist/calibration
    chmod 0650 /persist/calibration
    chown input system /persist/calibration/offset
    chmod 0640 /persist/calibration/offset
    chown input system /persist/calibration/xtalk
    chmod 0640 /persist/calibration/xtalk

    #Create directories for Location services
    mkdir /data/misc/location 0770 gps gps
    mkdir /data/misc/location/mq 0770 gps gps
    mkdir /data/misc/location/xtwifi 0770 gps gps
    mkdir /data/misc/location/gpsone_d 0770 system gps

    # Audio
    mkdir /data/misc/audio 0770 audio audio

    # perf daemon
    mkdir /data/misc/perfd 0755 root system
    chmod 2755 /data/misc/perfd
    rm /data/misc/perfd/default_values

    # Subsytem Ramdump collection
    mkdir /data/ramdump 0700 root root

    setprop vold.post_fs_data_done 1

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

service rmt_storage /system/bin/rmt_storage
    class core
    user root
    group system wakelock

service start_hci_filter /vendor/bin/wcnss_filter
    class late_start
    user bluetooth
    group bluetooth system
    disabled

on property:wc_transport.start_hci=true
    start start_hci_filter

on property:wc_transport.start_hci=false
    stop start_hci_filter

# QMUX must be in multiple groups to support external process connections
service qmuxd /system/bin/qmuxd
    class main
    user radio
    group radio audio bluetooth wakelock gps

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

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

service netmgrd /system/bin/netmgrd
    class main
    group radio system wakelock

service per_mgr /system/bin/pm-service
    class core
    user system
    group system net_raw

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

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

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

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

on property:ro.boot.hardware.sku=LGH791
    setprop ro.boot.wificountrycode 00

on property:ro.boot.hardware.sku=LGH791F
    setprop ro.boot.wificountrycode 00

on property:ro.boot.hardware.sku=LGH798
    setprop ro.boot.wificountrycode 00

service thermal-engine /system/bin/thermal-engine
    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
    group root

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

service loc_launcher /system/bin/loc_launcher
    #loc_launcher will start as root and set its uid to gps
    class late_start
    group gps inet net_raw diag net_admin wifi

service cnss-daemon /system/bin/cnss-daemon -n -l
    class late_start

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

service msm_irqbalance /system/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 time_daemon /system/bin/time_daemon
    class late_start
    user root
    group root

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

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

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

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

on property:ro.debuggable=1
    start ss_ramdump

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

service cnd /system/bin/cnd
    class late_start
    socket cnd stream 660 root inet
    group root wakelock

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

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
    disabled

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

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

# bugreport is triggered by holding down volume down, volume up and power
service bugreport /system/bin/dumpstate -d -p -B -z \
        -o /data/user_de/0/com.android.shell/files/bugreports/bugreport
    class main
    disabled
    oneshot
    keycodes 114 115 116

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