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

    # Support legacy paths
    symlink /sdcard /mnt/sdcard
    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
    insmod /system/lib/modules/adsprpc.ko
    insmod /system/lib/modules/mhi.ko
    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
    write /dev/cpuset/foreground/cpus 0-3
    write /dev/cpuset/foreground/boost/cpus 0-3
    write /dev/cpuset/background/cpus 0
    write /dev/cpuset/system-background/cpus 0-1

    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
    mkdir /data/misc/bluetooth 0770 bluetooth bluetooth

    # 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

    #Create a folder for SRS to be able to create a usercfg file
    mkdir /data/data/media 0770 media media

    # 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:init.svc.wpa_supplicant=stopped
    stop dhcpcd

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 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 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 sensors /system/bin/sensors.qcom
    class core
    user root
    group root
    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 dhcpcd_wlan0 /system/bin/dhcpcd -ABKLG
    class late_start
    disabled
    oneshot

service dhcpcd_p2p /system/bin/dhcpcd -ABKLG
    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_bt-pan /system/bin/dhcpcd -BKLG
    class late_start
    disabled
    oneshot

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

service dhcpcd_bnep0 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep1 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep2 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep3 /system/bin/dhcpcd -BKLG
    disabled
    oneshot

service dhcpcd_bnep4 /system/bin/dhcpcd -BKLG
    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 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 \
        -o /data/data/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
    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
