# Copyright (c) 2009-2012, 2014-2015, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the name of The Linux Foundation nor
#       the names of its contributors may be used to endorse or promote
#       products derived from this software without specific prior written
#       permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#

import init.qcom.usb.rc
import init.target.rc

on early-init
    mount debugfs debugfs /sys/kernel/debug
    write /sys/block/mmcblk0/queue/scheduler noop
# additionaly for init.trace.rc
# Allow shell group to enable tgid prints
    chown root shell /sys/kernel/debug/tracing/options/print-tgid
    chmod 0664 /sys/kernel/debug/tracing/options/print-tgid

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

    mkdir /preload 0771 system system
    # See storage config details at http://source.android.com/tech/storage/
    mkdir /mnt/shell/emulated 0700 shell shell
    mkdir /storage/emulated 0555 root root
    mkdir /mnt/media_rw/sdcard1 0700 media_rw media_rw
    mkdir /mnt/media_rw/usbotg 0700 media_rw media_rw
    mkdir /mnt/media_rw/uicc0 0700 media_rw media_rw
    mkdir /mnt/media_rw/uicc1 0700 media_rw media_rw
    mkdir /storage/sdcard1 0700 root root
    mkdir /storage/uicc0 0700 root root
    mkdir /storage/uicc1 0700 root root
    mkdir /storage/usbotg 0700 root root

    export EXTERNAL_STORAGE /storage/emulated/legacy
    export SECONDARY_STORAGE /storage/sdcard1
    export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
    export EMULATED_STORAGE_TARGET /storage/emulated

    # Support legacy paths
    symlink /storage/emulated/legacy /sdcard
    symlink /storage/emulated/legacy /mnt/sdcard
    symlink /storage/emulated/legacy /storage/sdcard0
    symlink /mnt/shell/emulated/0 /storage/emulated/legacy

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

on boot
    chown bluetooth bluetooth /sys/module/bluetooth_power/parameters/power
    chown bluetooth bluetooth /sys/class/rfkill/rfkill0/type
    chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state
    chown bluetooth bluetooth /proc/bluetooth/sleep/proto
    chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_lpm
    chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_btwrite
    chown system system /sys/module/sco/parameters/disable_esco
    chown bluetooth bluetooth /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 bluetooth /sys/devices/platform/msm_serial_hs.0/clock
    chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock

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

    chown bluetooth bluetooth /sys/class/rfkill/rfkill0/device/extldo
    chmod 0660 /sys/class/rfkill/rfkill0/device/extldo

    # for BT MAC address
    mkdir /efs/bluetooth 0775 radio system
    # if already exist
    chown radio system /efs/bluetooth
    chmod 0775 /efs/bluetooth

    #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

    setprop wifi.interface wlan0

    chown system system /proc/sched_orig_load_balance_enable
    chmod 0660 /proc/sched_orig_load_balance_enable

#   Define TCP buffer sizes for various networks
#   ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
    setprop net.tcp.buffersize.wifi    524288,2097152,4194304,262144,524288,1048576


    setprop ro.telephony.call_ring.multiple false

    #Remove SUID bit for iproute2 ip tool
    chmod 0755 /system/bin/ip


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

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

#   Define TCP buffer sizes for various networks
#   ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
    setprop net.tcp.buffersize.default 4096,87380,524288,4096,16384,110208
    setprop net.tcp.buffersize.lte     2097152,4194304,8388608,262144,524288,1048576
    setprop net.tcp.buffersize.umts    4094,87380,110208,4096,16384,110208
    setprop net.tcp.buffersize.hspa    4094,87380,1220608,4096,16384,1220608
    setprop net.tcp.buffersize.hsupa   4094,87380,1220608,4096,16384,1220608
    setprop net.tcp.buffersize.hsdpa   4094,87380,1220608,4096,16384,1220608
    setprop net.tcp.buffersize.hspap   4094,87380,1220608,4096,16384,1220608
    setprop net.tcp.buffersize.edge    4093,26280,35040,4096,16384,35040
    setprop net.tcp.buffersize.gprs    4092,8760,11680,4096,8760,11680
    setprop net.tcp.buffersize.evdo    4094,87380,524288,4096,16384,262144

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

    # Allow access for CCID command/response timeout configuration
    chown system system /sys/module/ccid_bridge/parameters/bulk_msg_timeout

# msm specific files that need to be created on /data
on post-fs-data
    # Create directory for TZ Apps
    mkdir /data/misc/qsee 0770 system system

    # we will remap this as /mnt/sdcard with the sdcard fuse tool
    mkdir /data/misc/camera 0770 camera camera

    mkdir /data/media 0770 media_rw media_rw
    chown media_rw media_rw /data/media

    mkdir /data/misc/ipa 0700 net_admin net_admin

    mkdir /data/misc/bluetooth 0770 bluetooth bluetooth

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

    # for WIFI MAC address
    mkdir /efs/wifi 0775 radio system
    chown system wifi /efs/wifi/.mac.info
    chmod 0660 /efs/wifi/.mac.info
    chmod 0660 /efs/wifi/.mac.cob

    # for WIFI Version
    write /data/.wifiver.info 0
    chown system root /data/.wifiver.info
    chmod 0666 /data/.wifiver.info
    # Create the directories used by CnE subsystem
    mkdir /data/connectivity 0771 system system
    chown system system /data/connectivity

    # Create the directories used by DPM subsystem
    mkdir /data/dpm 0771 system system
    chown system system /data/dpm

    mkdir /data/dpm/fdMgr 0771 system system
    chown system system /data/dpm/fdMgr

    mkdir /data/dpm/nsrm 0771 system system
    chown system system /data/dpm/nsrm

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

    # Create directory used by the DASH client
    mkdir /data/misc/dash 0770 media audio

    # Create directory used by display clients
    mkdir /data/misc/display 0770 system graphics

    # 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 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
    mkdir /data/misc/location/quipc 0770 gps system
    mkdir /data/misc/location/gsiff 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

    #Create folder for mm-qcamera-daemon
    mkdir /data/camera 0770 media camera

    #Create PERFD deamon related dirs
    mkdir /data/misc/perfd 0755 root system
    chmod 2755 /data/misc/perfd
    mkdir /data/system/perfd 0770 root system
    chmod 2770 /data/system/perfd

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

    # DCT(Display Clock Tunning)	- Interface 2.0
    chown radio system /sys/class/dct/dct_node/data
    chown radio system /sys/class/dct/dct_node/state
    chown radio system /sys/class/dct/dct_node/log
    chown radio system /sys/class/dct/dct_node/enabled
    chown radio system /sys/class/dct/dct_node/interface
    chown radio system /sys/class/dct/dct_node/libname
    chown radio system /sys/class/dct/dct_node/tunned

#service qcomsysd /system/bin/qcom-system-daemon
#    class main
#    user root
#    group root qcom_diag

service ssr_setup /system/bin/ssr_setup
    oneshot
    disabled

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

on property:persist.sys.ssr.restart_level=*
    start ssr_setup

on property:persist.sys.ssr.enable_ramdumps=1
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 1
    start ss_ramdump

on property:persist.sys.ssr.enable_ramdumps=0
    write /sys/module/subsystem_restart/parameters/enable_ramdumps 0

on property:sys.boot_completed=1
    write /dev/kmsg "Boot completed "

on property:persist.radio.atfwd.start=false
    stop atfwd

# corefile limit and ETB enabling
on property:persist.debug.trace=1
    mkdir /data/core 0777 root root
    write /proc/sys/kernel/core_pattern "/data/core/%E.%p.%e"
    write /sys/devices/system/cpu/cpu1/online 1
    write /sys/devices/system/cpu/cpu2/online 1
    write /sys/devices/system/cpu/cpu3/online 1
    write /sys/bus/coresight/devices/coresight-etm0/enable 0
    write /sys/bus/coresight/devices/coresight-etm1/enable 0
    write /sys/bus/coresight/devices/coresight-etm2/enable 0
    write /sys/bus/coresight/devices/coresight-etm3/enable 0
    write /sys/bus/coresight/devices/coresight-etm0/reset 1
    write /sys/bus/coresight/devices/coresight-etm1/reset 1
    write /sys/bus/coresight/devices/coresight-etm2/reset 1
    write /sys/bus/coresight/devices/coresight-etm3/reset 1
    write /sys/bus/coresight/devices/coresight-etm0/enable 1
    write /sys/bus/coresight/devices/coresight-etm1/enable 1
    write /sys/bus/coresight/devices/coresight-etm2/enable 1
    write /sys/bus/coresight/devices/coresight-etm3/enable 1
    write /sys/module/coresight_event/parameters/event_abort_enable 1

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:bluetooth.sap.status=running
    start bt-sap

on property:bluetooth.sap.status=stopped
    stop bt-sap

on property:bluetooth.dun.status=running
    start bt-dun

on property:bluetooth.dun.status=stopped
    stop bt-dun

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

on property:bluetooth.startbtsnoop=true
    start btsnoop

on property:bluetooth.startbtsnoop=false
    stop btsnoop

service qcom-c_core-sh /system/bin/sh /init.qcom.class_core.sh
    class core
    user root
    oneshot

service qcom-c_main-sh /system/bin/sh /init.class_main.sh
    class main
    user root
    oneshot

on property:vold.decrypt=trigger_restart_framework
    start qcom-c_main-sh
    start config_bluetooth
    start wcnss-service

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 rmt_storage /system/bin/rmt_storage
    class core
    user root
    disabled

service rfs_access /system/bin/rfs_access
   class core
   user root
   group system net_raw

on property:wc_transport.start_hci=true
    start start_hci_filter

on property:wc_transport.start_hci=false
    stop start_hci_filter

service config_bluetooth /system/bin/sh /system/etc/init.qcom.bt.sh "onboot"
    class core
    user root
    oneshot

service hciattach /system/bin/sh /system/etc/init.qcom.bt.sh
    class late_start
    user bluetooth
    group bluetooth net_bt_admin net_bt_stack
    disabled
    oneshot

on property:bluetooth.hciattach=true
    start hciattach

on property:bluetooth.hciattach=false
    setprop bluetooth.status off

service hciattach_ath3k /system/bin/sh /system/etc/init.ath3k.bt.sh
     class late_start
     user bluetooth
     group system bluetooth net_bt_admin misc
     disabled
     oneshot

service bt-dun /system/bin/dun-server /dev/smd7 /dev/rfcomm0
    class late_start
    user bluetooth
    group bluetooth net_bt_admin inet
    disabled
    oneshot

service bt-sap /system/bin/sapd 15
    user bluetooth
    group bluetooth net_bt_admin
    class late_start
    disabled
    oneshot

service ftmd /system/bin/logwrapper /system/bin/ftmdaemon
    class late_start
    user root
    group bluetooth net_bt_admin misc net_bt_stack qcom_diag
    disabled
    oneshot

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

service port-bridge /system/bin/port-bridge /dev/mhi_pipe_32 /dev/ttyGS0
    class main
    user radio system
    group radio system inet
    disabled

service qmiproxy /system/bin/qmiproxy
    class main
    user radio
    group radio qcom_diag
    disabled

# QMUX must be in multiple groups to support external process connections
service qmuxd /system/bin/qmuxd
    class main
    user root
    group radio audio bluetooth gps qcom_diag
    disabled

service netmgrd /system/bin/netmgrd
    class main
    disabled

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 btwlancoex /system/bin/sh /system/etc/init.qcom.coex.sh
    class late_start
    user bluetooth
    group bluetooth net_bt_admin inet net_admin net_raw
    disabled
    oneshot

service p2p_supplicant /system/bin/wpa_supplicant \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/system/etc/wifi/wpa_supplicant_overlay.conf -O/data/misc/wifi/sockets -N \
    -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \
    -I/system/etc/wifi/p2p_supplicant_overlay.conf \
    -puse_p2p_group_interface=1 -puse_multi_chan_concurrent=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 wpa_supplicant /system/bin/wpa_supplicant -g@android:wpa_wlan0 \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -e/data/misc/wifi/entropy.bin
    #   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 -ABKL
    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 ptt_socket_app /system/bin/ptt_socket_app -d
    class main
    user root
    group root
    disabled
    oneshot

service ptt_ffbm /system/bin/ptt_socket_app -f -d
    user root
    group root
    disabled
    oneshot

service ftm_ffbm /system/bin/ftmdaemon
    user root
    group root
    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

#for WiFi MFG(TestMode)
service mfgloader /system/bin/mfgloader
    class main
    disabled
    oneshot

service wlandutservice /system/bin/wlandutservice
    class main
    user system
    group wifi net_raw net_admin system inet
    disabled
    oneshot

service macloader /system/bin/macloader
    class main
    oneshot

on property:init.svc.macloader=stopped
    chown system root /data/.cid.info
    chmod 0664 /data/.cid.info
    chown system root /data/.rev
    chmod 0664 /data/.rev
# end of wifi


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 qcom_diag net_admin wifi

service fm_dl /system/bin/sh /system/etc/init.qcom.fm.sh
    class late_start
    user root
    group system
    disabled
    oneshot

on property:crypto.driver.load=1
     insmod /system/lib/modules/qce.ko
     insmod /system/lib/modules/qcedev.ko

service qcom-sh /system/bin/sh /init.qcom.sh
    class late_start
    user root
    oneshot

service qcom-post-boot /system/bin/sh /system/etc/init.qcom.post_boot.sh
    class late_start
    user root
    disabled
    oneshot

service wifi-sdio-on /system/bin/sh /system/etc/init.qcom.sdio.sh
    class late_start
    group wifi inet
    disabled
    oneshot

service wifi-crda /system/bin/sh /system/etc/init.crda.sh
   class late_start
   user root
   disabled
   oneshot

service config-zram /system/bin/sh /system/etc/init.qcom.zram.sh
   class late_start
   user root
   disabled
   oneshot

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

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

service hostapd /system/bin/hostapd -dd /data/hostapd/hostapd.conf
    class late_start
    user root
    group root
    oneshot
    disabled

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

#
# start multiple rilds based on multisim property
#
on property:ro.multisim.simslotcount=2
    stop ril-daemon
    start ril-daemon
    start ril-daemon1

on property:persist.radio.multisim.config=dsds
    stop ril-daemon
    start ril-daemon
    start ril-daemon1

on property:persist.radio.multisim.config=dsda
    stop ril-daemon
    start ril-daemon
    start ril-daemon1

#service ril-daemon2 /system/bin/rild -c 2
#    class main
#    socket rild2 stream 660 root radio
#    socket rild-debug2 stream 660 radio system
#    user root
#    disabled
#    group radio cache inet misc audio sdcard_r sdcard_rw diag qcom_diag log

#service ril-daemon3 /system/bin/rild -c 3
#    class main
#    socket rild3 stream 660 root radio
#    socket rild-debug3 stream 660 radio system
#    user root
#    disabled
#    group radio cache inet misc audio sdcard_r sdcard_rw diag qcom_diag log

service usb_uicc_enable /system/bin/sh /system/etc/init.qcom.uicc.sh
    class late_start
    user root
    disabled
    oneshot

service usb_uicc_daemon /system/bin/usb_uicc_client
    class main
    user system
    group system log net_raw
    oneshot

on property:sys.usb_uicc.enabled=1
    start usb_uicc_enable

on property:sys.usb_uicc.enabled=0
    start usb_uicc_enable

# virtual sdcard daemon running as media_rw (1023)
service sdcard /system/bin/sdcard -u 1023 -g 1023 -l /data/media /mnt/shell/emulated
    class late_start

service fuse_sdcard1 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/sdcard1 /storage/sdcard1
    class late_start
    disabled

service fuse_uicc0 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/uicc0 /storage/uicc0
    class late_start

service fuse_uicc1 /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/uicc1 /storage/uicc1
    class late_start
    disabled

service fuse_usbotg /system/bin/sdcard -u 1023 -g 1023 -w 1023 -d /mnt/media_rw/usbotg /storage/usbotg
    class late_start
    disabled

# Binding fuse mount point to /storage/emulated/legacy
on property:init.svc.sdcard=running
    wait /mnt/shell/emulated/0
    mount none /mnt/shell/emulated/0 /storage/emulated/legacy bind


service charger /charger
    class charger

service ssr_diag /system/bin/ssr_diag
    class late_start
    user system
    group system
    disabled

# Define fastmmi
service fastmmi /system/bin/mmi
    user root
    group root
    disabled

service fastmmisrv /system/bin/sh /init.qcom.factory.sh
    user root
    disabled
    oneshot

on mmi
    start fastmmisrv

on ffbm
    trigger early-fs
    trigger fs
    trigger post-fs
    trigger post-fs-data

    # Load properties from /system/ + /factory after fs mount. Place
    # this in another action so that the load will be scheduled after the prior
    # issued fs triggers have completed.
    trigger load_all_props_action

    trigger early-boot
    trigger mmi

service qbcharger /charger -m 1
    disabled
    oneshot

on property:sys.qbcharger.enable=true
    start qbcharger

on property:sys.qbcharger.enable=false
    stop qbcharger

service diag_mdlog_start /system/bin/diag_mdlog
    class late_start
    user shell
    group system qcom_diag sdcard_rw sdcard_r media_rw
    disabled
    oneshot

service diag_mdlog_stop /system/bin/diag_mdlog -k
    class late_start
    user shell
    group system qcom_diag sdcard_rw sdcard_r media_rw
    disabled
    oneshot

service bms-sh /system/bin/sh /init.qcom.bms.sh
    class core
    user root
    oneshot

service vm_bms /system/bin/vm_bms
    user root
    group root
    disabled

service msm_irqbalance /system/bin/msm_irqbalance -f /system/vendor/etc/msm_irqbalance.conf
    class core
    user root
    group root
    disabled

# Change IO scheduler to CFQ after boot_complete
on property:sys.boot_completed=1
    write /sys/block/mmcblk0/queue/scheduler cfq
