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

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

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

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

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

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

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

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

# 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 /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 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 /sbin/healthd -c
    class charger
    critical
    seclabel u:r:healthd: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 fingerprintd /system/bin/fingerprintd
    class late_start
    user system
    group system input

