# 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
	mkdir /firmware 0771 system system
    mkdir /firmware-modem 0771 system system
    #mkdir /system 0777 root root
    symlink /data/tombstones /tombstones
    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

    chown system system /sys/kernel/debug/kgsl/proc
    chmod 644 /proc/cmdline

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
	start rmt_storage
    insmod /system/lib/modules/adsprpc.ko
    # access permission for secure touch
    chmod 0660 /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0020/secure_touch_enable
    chmod 0440 /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0020/secure_touch
    chmod 0660 /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0070/secure_touch_enable
    chmod 0440 /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0070/secure_touch
    chown system drmrpc /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0020/secure_touch_enable
    chown system drmrpc /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0020/secure_touch
    chown system drmrpc /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0070/secure_touch_enable
    chown system drmrpc /sys/devices/soc.0/78b9000.i2c/i2c-5/5-0070/secure_touch

    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
    
 # For setting tcp delayed ack
    chown system system /sys/kernel/ipv4/tcp_delack_seg
    chown system system /sys/kernel/ipv4/tcp_use_userconfig

#   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

# Define TCP delayed ack settings for WiFi
    setprop net.tcp.delack.default     1
    setprop net.tcp.delack.wifi        20
    setprop net.tcp.usercfg.default    0
    setprop net.tcp.usercfg.wifi       1
    setprop persist.tcp.delack.enable  true

    #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
    
#
# start qmuxd and qmiproxy for appropriate targets
#
on property:ro.baseband=msm
    start qmuxd

on property:ro.baseband=mdm
    start qmuxd

on property:ro.baseband=unknown
    start qmuxd

on fs
#	mount_all fstab.qcom

    chown system radio /efs
    chmod 0771 /efs
    rm -rf /efs/dmverity
    restorecon -R /efs

# fm_radio
    chmod 0777 /dev/radio0
    chown system system /dev/radio0	

# 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 TRP/TIS
    chown system root /data/.psm.info
    chmod 0664 /data/.psm.info

    # for WIFI Antena Selection
    chown system root /data/.ant.info
    chmod 0664 /data/.ant.info

    # 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
    mkdir /data/snd 0770 media 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 olsrd /system/bin/olsrd -f /etc/wifi/olsrd.conf
    class main
    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


# umount service
service umount_service /system/bin/umount /preload
     disabled
     oneshot

# Support Preload install apks
on property:persist.sys.storage_preload=1
    mount ext4 /dev/block/bootdevice/by-name/hidden /preload nosuid nodev ro barrier=1
    setprop storage.preload.complete 1

on property:persist.sys.storage_preload=0
    start umount_service

