#
# Copyright 2014 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.shamu.usb.rc
import init.shamu.power.rc
import init.shamu.diag.rc

on early-init
    mkdir /firmware 0771 system system
    symlink /data/tombstones /tombstones
    mount debugfs debugfs /sys/kernel/debug
    chown system system /sys/kernel/debug/kgsl/proc

on init
    # Load persistent dm-verity state
    verity_load_state

    mkdir /oem 0550 root root

    # Set permissions for persist partition
    mkdir /persist 0771 system system

    symlink /sdcard /storage/sdcard0

on fs
    mount_all fstab.shamu

    # Keeping following partitions outside fstab file. As user may not have
    # these partition flashed on the device. Failure to mount any partition in fstab file
    # results in failure to launch late-start class.
    wait /dev/block/platform/msm_sdcc.1/by-name/oem
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/oem /oem ro nosuid nodev context=u:object_r:oemfs:s0

    mkdir /fsg 0755 root root
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/mdm1m9kefs3 /fsg ro nosuid nodev barrier=0 context=u:object_r:fsg_file:s0

    restorecon_recursive /persist
    mkdir /persist/data 0700 system system
    mkdir /persist/data/sfs 0700 system system
    mkdir /persist/data/tz 0700 system system
    mkdir /persist/public 0755 system radio
    mkdir /persist/public/hiddenmenu 0775 system radio
    mkdir /persist/public/hiddenmenu/data 0775 system radio

    # 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

    # 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 post-fs-data
    mkdir /tombstones/modem 0771 system system
    mkdir /tombstones/lpass 0771 system system
    mkdir /tombstones/wcnss 0771 system system
    mkdir /tombstones/dsps 0771 system system

    # SENSORS
    #Create directory used by sensor subsystem(dsps)
    mkdir /data/system/sensors
    chmod 0775 /data/system/sensors

    # AKM setting data
    mkdir /data/misc/sensors
    chmod 0775 /data/misc/sensors

    mkdir /persist/sensors
    chmod 0775 /persist/sensors

    mkdir /persist/mdm 0770 radio radio

    #Subsystem RAM-dumps
    mkdir /data/ss-ram-dumps 0750 radio log
    mkdir /data/ss-ram-dumps/bp-dumps 0750 radio log

    # rild files
    mkdir /data/misc/audio_cutback 0770 radio audio

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/kernel/boot_adsp/boot 1

    # Subsytem Restart
    #venus
    write /sys/bus/msm_subsys/devices/subsys0/restart_level "related"
    write /sys/bus/msm_subsys/devices/subsys0/recovery_policy "skip_restart"
    #adsp
    write /sys/bus/msm_subsys/devices/subsys1/restart_level "related"
    write /sys/bus/msm_subsys/devices/subsys1/recovery_policy "skip_restart"
    #vpu
    write /sys/bus/msm_subsys/devices/subsys2/restart_level "related"
    write /sys/bus/msm_subsys/devices/subsys2/recovery_policy "skip_restart"
    #esoc0 (mdm)
    write /sys/bus/msm_subsys/devices/subsys3/restart_level "related"
    write /sys/bus/msm_subsys/devices/subsys3/recovery_policy "skip_restart"

on boot
    chown bluetooth net_bt_stack /sys/module/bluetooth_power/parameters/power
    chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type
    chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state
    chown bluetooth net_bt_stack /proc/bluetooth/sleep/proto
    chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm
    chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite
    chown bluetooth net_bt_stack /sys/module/hci_uart/parameters/ath_lpm
    chown bluetooth net_bt_stack /sys/module/hci_uart/parameters/ath_btwrite
    chown system system /sys/module/sco/parameters/disable_esco
    chown bluetooth net_bt_stack /sys/module/hci_smd/parameters/hcismd_set
    chmod 0660 /sys/module/bluetooth_power/parameters/power
    chmod 0660 /sys/module/hci_smd/parameters/hcismd_set
    chmod 0660 /sys/class/rfkill/rfkill0/state
    chmod 0660 /proc/bluetooth/sleep/proto
    chown bluetooth net_bt_stack /dev/ttyHS0
    chmod 0660 /sys/module/hci_uart/parameters/ath_lpm
    chmod 0660 /sys/module/hci_uart/parameters/ath_btwrite
    chmod 0660 /dev/ttyHS0
    chown bluetooth net_bt_stack /sys/devices/platform/msm_serial_hs.0/clock
    chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock

    # update foreground cpuset now that processors are up
    # reserve CPU 3 for the top app
    write /dev/cpuset/foreground/cpus 0-2
    write /dev/cpuset/foreground/boost/cpus 0-3
    write /dev/cpuset/background/cpus 0
    write /dev/cpuset/system-background/cpus 0-1
    write /dev/cpuset/top-app/cpus 0-3

    chmod 0660 /dev/ttyHS2
    chown bluetooth net_bt_stack /dev/ttyHS2

    #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

    mkdir /dev/socket/mpdecision 2775 root system
    chmod 2775 /dev/socket/mpdecision

    setprop wifi.interface wlan0

    #readable symlinks for video nodes
    mkdir /dev/video
    symlink /dev/video32 /dev/video/venus_dec
    symlink /dev/video33 /dev/video/venus_enc

    setprop ro.telephony.call_ring.multiple false

    chown system system /sys/bus/i2c/devices/1-004a/tsp

    chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state

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

    #port-bridge
    chmod 0660 /dev/smd0
    chown system system /dev/smd0

    #BT DUN port-bridge
    chmod 0660 /dev/smd7
    chown bluetooth net_bt_stack /dev/smd7

    #For bridgemgr daemon to inform the USB driver of the correct transport
    chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport

#   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

    #To allow interfaces to get v6 address when tethering is enabled
    write /proc/sys/net/ipv6/conf/rmnet0/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet1/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet2/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet3/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet4/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet5/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet6/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet7/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio0/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio1/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio2/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio3/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio4/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio5/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio6/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_sdio7/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_usb0/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_usb1/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_usb2/accept_ra 2
    write /proc/sys/net/ipv6/conf/rmnet_usb3/accept_ra 2

    # To prevent out of order acknowledgements from making
    # connection tracking to treat them as not belonging to
    # the connection they belong to.
    # Otherwise, a weird issue happens in which some long
    # connections on high-throughput links get dropped when
    # an ack packet comes out of order
    write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1

    # Set the console loglevel to < KERN_INFO
    # Set the default message loglevel to KERN_INFO
    # write /proc/sys/kernel/printk "6 6 1 7"

    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

    # Audio DSP permissions
    chown media media /dev/ttyHS3
    chown media media /sys/devices/c55_ctrl/gpio_ap_int/edge
    chown media media /sys/devices/c55_ctrl/gpio_ap_int/value
    chown media media /sys/devices/c55_ctrl/gpio_c55_int/value
    chown media media /sys/devices/c55_ctrl/gpio_core/value
    chown media media /sys/devices/c55_ctrl/gpio_reset/value

# subsystem ramdump collection
on property:persist.sys.qc.sub.rdump.on=*
    write /sys/module/subsystem_restart/parameters/enable_ramdumps ${persist.sys.qc.sub.rdump.on}

# permissions for CapSense firmware update
    chown radio radio /sys/devices/cycapsense_prog.1/cycapsense_fw
    chmod 0220 /sys/devices/cycapsense_prog.1/cycapsense_fw

# msm specific files that need to be created on /data
on post-fs-data

    # Create the directories used by the Wireless subsystem
    mkdir /data/misc/wifi 0770 wifi wifi
    mkdir /data/misc/wifi/sockets 0770 wifi wifi
    mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi
    mkdir /data/misc/dhcp 0770 dhcp dhcp
    chown dhcp dhcp /data/misc/dhcp

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

    mkdir /data/connectivity/nsrm 0771 system system
    chown system system /data/connectivity/nsrm

    # Create directory used by audio subsystem
    mkdir /data/misc/audio 0770 audio audio

    # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections
    # We chown/chmod /persist again so because mount is run as root + defaults
    chown system system /persist
    chmod 0771 /persist
    chmod 0664 /sys/devices/platform/msm_sdcc.1/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.2/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.3/polling
    chmod 0664 /sys/devices/platform/msm_sdcc.4/polling

    # Chown polling nodes as needed from UI running on system server
    chown system system /sys/devices/platform/msm_sdcc.1/polling
    chown system system /sys/devices/platform/msm_sdcc.2/polling
    chown system system /sys/devices/platform/msm_sdcc.3/polling
    chown system system /sys/devices/platform/msm_sdcc.4/polling

    #Create the symlink to qcn wpa_supplicant folder for ar6000 wpa_supplicant
    mkdir /data/system 0775 system system
    #symlink /data/misc/wifi/wpa_supplicant /data/system/wpa_supplicant

    #Create directories for gpsone_daemon services
    mkdir /data/misc/gpsone_d 0770 system gps

    #Create directories for QuIPS
    mkdir /data/misc/quipc 0770 gps system

    #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

    #Create directory from IMS services
    mkdir /data/shared 0755
    chown system system /data/shared

    #Create directory for FOTA
    mkdir /data/fota 0771
    chown system system /data/fota

    #Create directory for hostapd
    mkdir /data/hostapd 0770 system wifi

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

    mkdir /data/audio/ 0770 media audio

    setprop vold.post_fs_data_done 1

    # NFC local data and nfcee xml storage
    mkdir /data/nfc 0770 nfc nfc
    mkdir /data/nfc/param 0770 nfc nfc

    # Audio DSP permissions
    mkdir /data/adspd 0770 media media
    mkdir /data/adspd/1 0770 media media

on property:bluetooth.isEnabled=true
    start btwlancoex
    write /sys/class/bluetooth/hci0/idle_timeout 7000

on property:ro.bluetooth.ftm_enabled=true
    start ftmd

on property:persist.env.fastdorm.enabled=true
    setprop persist.radio.data_no_toggle 1

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

service mdm_helper /system/bin/mdm_helper
    user root
    group root system wakelock radio
    class core
    onrestart setprop ro.service.mdm_helper_restarted "true"

service tcmd /system/bin/tcmd_mini
    class core
    user radio
    group radio net_raw net_admin
    disabled

service bridgemgrd /system/bin/bridgemgrd
    class late_start
    user radio
    group radio

# 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 netmgrd /system/bin/netmgrd
    class main
    group radio

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

service imsdatadaemon /system/bin/imsdatadaemon
    class main
    user root
    socket ims_datad stream 0660 system radio
    group system wifi radio inet log readproc
    disabled

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

service ims_rtp_daemon /system/bin/ims_rtp_daemon
    class main
    user root
    socket ims_rtpd stream 0660 system radio
    group system radio inet log
    disabled

on property:sys.ims.DATA_DAEMON_STATUS=1
   start ims_rtp_daemon

service sensors /system/bin/sensors.qcom
    class core
    user root
    group root wakelock
    writepid /dev/cpuset/system-background/tasks

on property:ro.use_data_netmgrd=false
    # netmgr not supported on specific target
    stop netmgrd

# Adjust socket buffer to enlarge TCP receive window for high bandwidth
# but only if ro.data.large_tcp_window_size property is set.
on property:ro.data.large_tcp_window_size=true
    write /proc/sys/net/ipv4/tcp_adv_win_scale  2

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
#   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 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 adspd /system/bin/adspd /dev/ttyHS3
   class main
   socket adspdsock stream 0660 media media
   user media
   group media input

on property:sys.boot_completed=1
    start qcom-post-boot

on property:ro.debuggable=1
    start ss_ramdump

on property:ro.data.large_tcp_window_size=true
    # Adjust socket buffer to enlarge TCP receive window for high bandwidth (e.g. DO-RevB)
    write /proc/sys/net/ipv4/tcp_adv_win_scale  2

on charger
    write /sys/class/leds/lcd-backlight/brightness 100
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system ro barrier=1
    start thermal-engine

service charger /charger
    class charger
    group log
    seclabel u:r:healthd:s0

# Allow usb charging to be disabled peristently
on property:persist.usb.chgdisabled=1
    write /sys/class/power_supply/battery/charging_enabled 0

on property:persist.usb.chgdisabled=0
    write /sys/class/power_supply/battery/charging_enabled 1

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

service mpdecision /system/bin/mpdecision --avg_comp
   class main
   user root
   group root readproc
   writepid /dev/cpuset/system-background/tasks

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

service thermal-engine /system/bin/thermal-engine
   class main
   user root
   group root

service time_daemon /system/bin/time_daemon
   class late_start
   user root
   group root

on property:init.svc.bootanim=stopped
    start usf-post-boot

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

service bdAddrLoader /system/bin/bdAddrLoader -p ro.boot.btmacaddr -s -x
    class main
    user bluetooth
    group system bluetooth
    oneshot

on property:vold.decrypt=trigger_reset_main
    stop gnss-svcd

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

# When QCA1530 is known not to present
on property:persist.qca1530=no
   stop gnss-svcd
   stop gnss-detect
   write /sys/kernel/qca1530/chip_state 0

on property:init.svc.surfaceflinger=stopped
    stop ppd

service mmi-touch-sh /system/bin/init.mmi.touch.sh atmel
    class main
    user root
    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 mdm_helper_proxy /system/bin/mdm_helper_proxy
    class core
    user system
    group system wakelock
    disabled

# Stop mdm_helper_proxy in case of shutdown
on property:sys.shutdown.requested=*
    stop mdm_helper_proxy

# Start mdm_helper_proxy after RIL.
on property:ro.mdm_helper_proxy_req=true
    start mdm_helper_proxy

on property:init.svc.ril-daemon=running
    setprop ro.mdm_helper_proxy_req true

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

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