import init.flounder.usb.rc
import init.flounder_svelte.rc

on early-init
    mount debugfs /sys/kernel/debug /sys/kernel/debug mode=755

on init
    # Load persistent dm-verity state
    verity_load_state

    start watchdogd

    symlink /sdcard /storage/sdcard0

    write /sys/block/zram0/comp_algorithm lz4
    write /sys/block/zram0/max_comp_streams 2

    # Swap in only 1 page at a time
    write /proc/sys/vm/page-cluster 0

on post-fs
    # turn off nvmap page pool b/29389829
    write /sys/module/nvmap_pp/parameters/pool_size 0
    write /sys/module/nvmap_pp/parameters/enable_page_pools 0

    write /sys/power/gpu_power_on 1
    write /sys/module/input_cfboost/parameters/gpu_wakeup 1
    # Turn on swap
    swapon_all /fstab.flounder

on post-fs-data
    # Now that are booted all the way and out of mount panics, ensure that we panic on later errors.
    # This is a hack to work around the fact that we can't recover from all errors that would lead to a panic
    # during the initial mount (http://b/17382778), yet we need to panic on emmc errors (http://b/17640053)
    # For a remount only the flags and the target mount point are relevant.
    mount dummy dummy /data remount nosuid nodev noatime rw seclabel,background_gc=on,user_xattr,acl,errors=panic

    # Previously files in /data/nvcam are owned by media, change the owner to cameraserver so it
    # can be accessed by Camera HAL in cameraserver.
    chown cameraserver camera /data/nvcam/factory_copy_0.bin
    chown cameraserver camera /data/nvcam/nvcam_cache_0.bin
    chown cameraserver camera /data/nvcam/nvcam_cache_1.bin
    mkdir /data/nvcam 0700 cameraserver camera

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

    # secure os storage
    mkdir /data/ss 0700 system system

    # for GPS files
    mkdir /data/gps 0770 gps system

    # modem init
    mkdir /data/qcks 0770 system system
    mkdir /data/efs 0771 system system
    mkdir /data/qcks/mdm 0770 system system

    setprop vold.post_fs_data_done 1

on boot
  # bluetooth
    # change back to bluetooth from system
    chown bluetooth net_bt_stack /data/misc/bluetooth

    # power down interface
    write /sys/class/rfkill/rfkill0/state 0

    # keep verity metadata in cache a lot longer (tablet profile)
    write /sys/module/dm_bufio/parameters/max_age_seconds 86400

    write /sys/module/tegra3_emc/parameters/emc_enable 0
    #write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 1000000
    #write /sys/module/cpu_tegra/parameters/cpu_user_cap 700000
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive
    write /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor interactive
    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 510000
    write /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq 510000
    #write /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed 700000
    #write /sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed 700000
    #write /sys/devices/system/cpu/cpufreq/interactive/boost_factor 2
    #write /sys/devices/system/cpu/cpufreq/interactive/sustain_load 80
    write /sys/devices/system/cpu/cpuquiet/tegra_cpuquiet/enable 0

    restorecon_recursive /sys/devices/system/cpu/cpufreq/interactive
    chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_rate
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_rate
    chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_slack
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_slack
    chown system system /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/min_sample_time
    chown system system /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq
    chown system system /sys/devices/system/cpu/cpufreq/interactive/target_loads
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/target_loads
    chown system system /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load
    chown system system /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay
    chown system system /sys/devices/system/cpu/cpufreq/interactive/boost
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/boost
    chown system system /sys/devices/system/cpu/cpufreq/interactive/boostpulse
    chown system system /sys/devices/system/cpu/cpufreq/interactive/input_boost
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/input_boost
    chown system system /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration
    chown system system /sys/devices/system/cpu/cpufreq/interactive/io_is_busy
    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/io_is_busy

    # Enable CC4
    write /sys/devices/system/cpu/cpu0/cpuidle/state1/disabled 0
    write /sys/devices/system/cpu/cpu1/cpuidle/state1/disabled 0

    # b/13568411: make lazy vfree flush thresholds match flush_tlb_range
    write /proc/sys/vm/lazy_vfree_tlb_flush_all_threshold 524288

    chmod 0444 /sys/kernel/debug/bq2419x-regs

    write /proc/sys/net/core/rmem_max 1048576
    write /proc/sys/net/core/wmem_max 1048576

on fs
    mount_all /fstab.flounder
    # Update dm-verity state and set partition.*.verified properties
    verity_update_state

on verity-logging
    exec u:r:slideshow:s0 -- /sbin/slideshow warning/verity_red_1 warning/verity_red_2

service battery_charger /charger
    class charger
    seclabel u:r:healthd:s0

# Set watchdog timer to 30 seconds and pet it every 10 seconds to get a 20 second margin
service watchdogd /sbin/watchdogd 10 20
    class core
    disabled
    seclabel u:r:watchdogd:s0

# on userdebug and eng builds, enable kgdb on the serial console
on property:ro.debuggable=1
    write /sys/module/kgdboc/parameters/kgdboc ttyFIQ0
    write /sys/module/fiq_debugger/parameters/kgdb_enable 1

# for loading correct gps hal share libraries
on property:ro.boot.baseband=N/A
    setprop ro.hardware.gps bcm47521
    enable gpsd

on property:ro.boot.baseband=US
    write /sys/module/bcmdhd/parameters/nvram_path /system/etc/wifi/bcmdhd_lte.cal

on property:ro.boot.baseband=ROW
    write /sys/module/bcmdhd/parameters/nvram_path /system/etc/wifi/bcmdhd_lte.cal

on property:ro.baseband=unknown
    setprop ro.hardware.gps bcm47521
    enable gpsd

# for telephony function
on property:ro.boot.baseband=N/A
    setprop ro.radio.noril true
    stop ril-daemon

on property:ro.hw.ks.ready=1
    start ril-daemon

on property:ro.boot.baseband=ROW
    stop ril-daemon
    setprop persist.radio.apm_sim_not_pwdn 1
    enable kickstart
    mkdir /dev/socket/qmux_radio 0770 radio radio
    chmod 2770 /dev/socket/qmux_radio
    setprop ro.baseband.arch mdm
    enable qmuxd
    enable netmgrd
    setprop rild.libpath /vendor/lib64/libril-qc-qmi-1.so
    setprop rild.libargs "-e wwan0"
    setprop persist.radio.snapshot_enabled 1

on property:ro.boot.baseband=US
    stop ril-daemon
    setprop persist.radio.apm_sim_not_pwdn 1
    enable kickstart
    mkdir /dev/socket/qmux_radio 0770 radio radio
    chmod 2770 /dev/socket/qmux_radio
    setprop ro.baseband.arch mdm
    enable qmuxd
    enable netmgrd
    setprop rild.libpath /vendor/lib64/libril-qc-qmi-1.so
    setprop rild.libargs "-e wwan0"
    setprop persist.radio.snapshot_enabled 1

on property:audio_hal.period_size=128
    write /sys/devices/system/cpu/cpufreq/interactive/rt_priority 1

# 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 late_start
    disabled
    oneshot
    keycodes 114 115 116

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

service gpsd /system/bin/glgps -c /system/etc/gpsconfig.xml
    class late_start
    disabled
    user gps
    socket gps seqpacket 0660 gps system
    group system wakelock inet sdcard_rw sdcard_r

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
    class late_start
    socket wpa_wlan0 dgram 660 wifi wifi
    disabled
    oneshot

service kickstart /vendor/bin/qcks -i /vendor/firmware/mdm/image/ -r /data/qcks/mdm/
    class late_start
    disabled
    user system
    group system wakelock
    oneshot

service qmuxd /vendor/bin/qmuxd
    class late_start
    disabled
    user system
    group system wakelock radio

service netmgrd /vendor/bin/netmgrd
    class late_start
    disabled
    group system radio

service tlk_daemon /vendor/bin/tlk_daemon --storagedir /data/ss
    class main
    group system