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

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

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

    # Support legacy paths
    symlink /sdcard /mnt/sdcard
    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}

    # Adjust parameters for dm-verity device
    write /sys/block/dm-0/queue/read_ahead_kb 2048

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

on boot
    symlink /dev/block/platform/soc.0/f9824900.sdhci /dev/block/bootdevice

    # 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
    write /dev/cpuset/foreground/cpus 0-5
    write /dev/cpuset/foreground/boost/cpus 4-5
    write /dev/cpuset/background/cpus 0
    write /dev/cpuset/system-background/cpus 0-3

    # 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

    # 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

on post-fs-data
    # 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

    write /sys/kernel/boot_adsp/boot 1

    #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

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

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

service start_hci_filter /system/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

service dhcpcd_bt-pan /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service iprenew_bt-pan /system/bin/dhcpcd -n
    disabled
    oneshot

# QMUX must be in multiple groups to support external process connections
service qmuxd /system/bin/qmuxd
    class main
    user radio
    group radio audio bluetooth 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

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

on property:init.svc.wpa_supplicant=stopped
    stop dhcpcd

service wpa_supplicant /system/bin/wpa_supplicant \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/system/etc/wifi/wpa_supplicant_overlay.conf \
    -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 p2p_supplicant /system/bin/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 dhcpcd_wlan0 /system/bin/dhcpcd -aABDKL
    class late_start
    disabled
    oneshot

service dhcpcd_p2p /system/bin/dhcpcd -aABKL
    class late_start
    disabled
    oneshot

service iprenew_wlan0 /system/bin/dhcpcd -n
    class late_start
    disabled
    oneshot

service iprenew_p2p /system/bin/dhcpcd -n
    class late_start
    disabled
    oneshot

service dhcpcd_eth0 /system/bin/dhcpcd -aABDKL
    class late_start
    disabled
    oneshot

service iprenew_eth0 /system/bin/dhcpcd -n
    class late_start
    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 /system/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 /sbin/healthd -c
    class charger
    critical
    seclabel u:r:healthd:s0

service qcamerasvr /system/bin/mm-qcamera-daemon
    class late_start
    user camera
    group camera system inet input graphics

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

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 imscmservice /system/bin/imscmservice
    class main
    user system
    group radio net_raw diag log

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 \
        -o /data/data/com.android.shell/files/bugreports/bugreport
    class main
    disabled
    oneshot
    keycodes 114 115 116

service fingerprintd /system/bin/fingerprintd
    class late_start
    user system
    group system input

