# Copyright (c) 2009-2012, Code Aurora Forum. 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 Code Aurora 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.mako.usb.rc

on early-init
    # for backwards compatibility
    export EXTERNAL_STORAGE /storage/sdcard0
    mkdir /storage 0050 system sdcard_r
    mkdir /storage/sdcard0 0000 system system
    symlink /storage/sdcard0 /sdcard
    symlink /storage/sdcard0 /mnt/sdcard

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

on fs
    wait /dev/block/platform/msm_sdcc.1/by-name/system
    chmod 0777 /sbin/e2fsck_static
    exec /sbin/e2fsck_static -y /dev/block/platform/msm_sdcc.1/by-name/system
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system ro barrier=1

    #userdata
    wait /dev/block/platform/msm_sdcc.1/by-name/userdata
    exec /system/bin/e2fsck -y /dev/block/platform/msm_sdcc.1/by-name/userdata
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/userdata /data nosuid nodev barrier=1 data=ordered noauto_da_alloc

    #persist
    mkdir /persist 0771 system system
    wait /dev/block/platform/msm_sdcc.1/by-name/persist
    exec /system/bin/e2fsck -y /dev/block/platform/msm_sdcc.1/by-name/persist
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/persist /persist nosuid nodev barrier=1 data=ordered nodelalloc

    #modem firmware files
    mkdir /firmware 0771 system system
    wait /dev/block/platform/msm_sdcc.1/by-name/modem
    mount vfat /dev/block/platform/msm_sdcc.1/by-name/modem /firmware nosuid

    #cache
    wait /dev/block/platform/msm_sdcc.1/by-name/cache
    exec /system/bin/e2fsck -y /dev/block/platform/msm_sdcc.1/by-name/cache
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/cache /cache nosuid nodev barrier=1 data=ordered

    #persist-lg
    mkdir /persist-lg 0771 system system
    wait /dev/block/platform/msm_sdcc.1/by-name/drm
    exec /system/bin/e2fsck -y /dev/block/platform/msm_sdcc.1/by-name/drm
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/drm /persist-lg nosuid nodev barrier=1 data=ordered

    #mpt
    mkdir /mpt 0775 system system
    wait /dev/block/platform/msm_sdcc.1/by-name/mpt
    exec /system/bin/e2fsck -y /dev/block/platform/msm_sdcc.1/by-name/mpt
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/mpt /mpt nosuid nodev barrier=1 data=ordered

    #factory
    mkdir /factory 0775 system system
    wait /dev/block/platform/msm_sdcc.1/by-name/factory
    exec /system/bin/e2fsck -y /dev/block/platform/msm_sdcc.1/by-name/factory
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/factory /factory nosuid nodev barrier=1 data=ordered
	chmod 0775 /factory
	chown system system /factory

    #sns
    mkdir /sns 0775 system system
    wait /dev/block/platform/msm_sdcc.1/by-name/sns
    exec /system/bin/e2fsck -y /dev/block/platform/msm_sdcc.1/by-name/sns
    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/sns /sns nosuid nodev barrier=1 data=ordered
    mkdir /sns/cal 0771 system system

    setprop ro.crypto.fuse_sdcard true

on early-boot
    # set RLIMIT_MEMLOCK to 64MB
    setrlimit 8 67108864 67108864

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 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 0666 /sys/module/hci_smd/parameters/hcismd_set
    chmod 0660 /sys/class/rfkill/rfkill0/state
    chmod 0660 /proc/bluetooth/sleep/proto
    chown bluetooth bluetooth /dev/ttyHS0
    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

    #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

    setprop wifi.interface wlan0

    # Enable Bluetooth 802.11 PAL when Bluetooth is turned on
    setprop ro.config.bt.amp no

    #Set SUID bit for usbhub
    chmod 4755 /system/bin/usbhub
    chmod 755 /system/bin/usbhub_init

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

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

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

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

    # create symlink for fb1 as HDMI
    symlink /dev/graphics/fb1 /dev/graphics/hdmi

    # Remove write permissions to video related nodes
    chmod 0664 /sys/devices/virtual/graphics/fb1/hpd
    chmod 0664 /sys/devices/virtual/graphics/fb1/video_mode
    chmod 0664 /sys/devices/virtual/graphics/fb1/format_3d

    # Change owner and group for media server and surface flinger
    chown system system /sys/devices/virtual/graphics/fb1/format_3d

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

    chmod 660 /dev/rtc0
    chown system system /dev/rtc0

    chown root system /proc/net/ip_conntrack


    #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


    insmod /system/lib/modules/texfat.ko



# import cne init file
on post-fs
    export_rc /persist/init.cne.rc

# msm specific files that need to be created on /data
on post-fs-data
    # we will remap this as /mnt/sdcard with the sdcard fuse tool
    mkdir /data/media 0775 media_rw media_rw
    chown media_rw media_rw /data/media

    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
# to observe dnsmasq.leases file for dhcp information of soft ap.
    chown dhcp system /data/misc/dhcp

    write /dev/wcnss_wlan 1

    # 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

    # Mobile DM Router
    chmod 0660 /dev/lge_dm_tty0
    chown system system /dev/lge_dm_tty0

    #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 wiper services
    mkdir /data/wpstiles/ 0755 shell
    mkdir /data/wiper 0755 location qcom_oncrpc

    #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

    #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

    #Provide the access to hostapd.conf only to root and group
    chmod 0660 /data/hostapd/hostapd.conf

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

    mkdir /data/audio 0770 media audio
    # Enable the setgid bit on the directory
    chmod 2770 /data/audio

    mkdir /data/bluetooth 0770 bluetooth bluetooth
    # Enable the setgid bit on the directory
    chmod 2770 /data/bluetooth

    mkdir /data/logger 0775 system system
    exec /system/bin/smpl_count

    setprop vold.post_fs_data_done 1

# Export GPIO56 for fusion targets to enable/disable hub
service usbhub_init /system/bin/usbhub_init
   class late_start
   user root
   disabled
   oneshot

on property:ro.board.platform=msm7630_fusion
    start usbhub_init

on property:init.svc.wpa_supplicant=stopped
    stop dhcpcd
    
on property:bluetooth.isEnabled=true
    start btwlancoex
    start amp_load
    write /sys/class/bluetooth/hci0/idle_timeout 7000

on property:bluetooth.isEnabled=false
    start amp_unload
    stop btwlancoex

service cnd /system/bin/cnd
    class late_start
    socket cnd stream 666 root radio

service rmt_storage /system/bin/rmt_storage /dev/block/mmcblk0p10 /dev/block/mmcblk0p11 /dev/block/mmcblk0p17
    class late_start
    user root
    disabled

on property:ro.emmc=1
    start rmt_storage

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

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

service port-bridge /system/bin/port-bridge /dev/smd0 /dev/ttyGS0
    class late_start
    user system
    group system inet
    disabled

on property:ro.baseband="msm"
    # Enable BT-DUN only for all msms
    setprop ro.qualcomm.bluetooth.dun false

service qmiproxy /system/bin/qmiproxy
    class late_start
    user radio
    group radio
    disabled

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

service netmgrd /system/bin/netmgrd
    class late_start
    disabled

service sensors /system/bin/sensors.qcom
    class late_start
    user root
    group root
    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  1

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 amp_init /system/bin/amploader -i
    class late_start
    user root
    disabled
    oneshot

service amp_load /system/bin/amploader -l 7000
    class late_start
    user root
    disabled
    oneshot

service amp_unload /system/bin/amploader -u
    class late_start
    user root
    disabled
    oneshot

service wpa_supplicant /system/bin/wpa_supplicant \
	-Dnl80211 -iwlan0 -c/system/etc/wifi/wpa_supplicant.conf \
	-C/data/misc/wifi/sockets -ddd
    class main
    group wifi inet
    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 p2p
    class late_start
    disabled
    oneshot

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

service wiperiface /system/bin/wiperiface
    user location
    group qcom_oncrpc
    oneshot

service gpsone_daemon /system/bin/gpsone_daemon
    class late_start
    user gps
    group gps qcom_oncrpc inet
    disabled

service quipc_igsn /system/bin/quipc_igsn
    class late_start
    user gps
    group inet gps
    disabled

service quipc_main /system/bin/quipc_main
    class late_start
    user gps
    group net_admin wifi inet gps
    disabled

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

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

on property:crypto.driver.load=0
     exec /system/bin/rmmod qcedev.ko
     exec /system/bin/rmmod qce.ko

service drmdiag /system/bin/drmdiagapp
    class late_start
     user root
     disabled
     oneshot

on property:drmdiag.load=1
    start drmdiag

on property:drmdiag.load=0
    stop drmdiag

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 qcom-wifi /system/bin/sh /system/etc/init.qcom.wifi.sh
    class late_start
    oneshot

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

service atfwd /system/bin/ATFWD-daemon
    class late_start
    user system
    group system radio
    onrestart /system/bin/log -t RIL-ATFWD -p w "ATFWD daemon restarted"

service hdmid /system/bin/hdmid
    class late_start
    socket hdmid stream 0660 root system graphics
    disabled

service ppd /system/bin/mm-pp-daemon
    class late_start
    user system
    socket pps stream 0660 system system graphics
    group system graphics

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

service ds_fmc_appd /system/bin/ds_fmc_appd -p "rmnet0" -D
    class late_start
    group radio wifi inet
    disabled
    oneshot

on property:persist.data.ds_fmc_app.mode=1
    start ds_fmc_appd

service ims_regmanager /system/bin/exe-ims-regmanagerprocessnative
    class late_start
    user system
    group qcom_oncrpc net_bt_admin inet radio wifi
    disabled

on property:persist.ims.regmanager.mode=1
    start ims_regmanager

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  1

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

on property:persist.timed.enable=true
    start time_daemon

service battery_monitor /system/bin/battery_monitor
    user system
    group system
    disabled

service ril-daemon1 /system/bin/rild -c 1
    class late_start
    socket rild1 stream 660 root radio
    socket rild-debug1 stream 660 radio system
    user root
    disabled
    group radio cache inet misc audio sdcard_rw qcom_oncrpc diag

service profiler_daemon /system/bin/profiler_daemon
    class late_start
    user root
    group root
    disabled

service hcidump /system/bin/sh /system/etc/hcidump.sh
    user bluetooth
    group bluetooth system net_bt_admin net_admin
    disabled
    oneshot

service charger /charger
    class charger

service wlan-on-off /system/bin/sh /system/etc/init.wlan-on-off.sh
    class late_start
    user root
    disabled
    oneshot

# Workaround to resolve WCNSS power problem in Kernel Mode booting
on property:init.svc.qcom-wifi=stopped
    start wlan-on-off

on property:persist.service.fakebatt=1
    write /sys/devices/platform/msm_ssbi.0/pm8921-core/pm8921-charger/power_supply/battery/pseudo_batt "1 1 100 40 4100 80 1"

on property:persist.service.fakebatt=0
    write /sys/devices/platform/msm_ssbi.0/pm8921-core/pm8921-charger/power_supply/battery/pseudo_batt "0 1 100 40 4100 80 1"
 
# TouchSense Player Service
service immvibed /system/bin/immvibed
    class main
    user root
    group root
    oneshot

# create virtual SD card at /storage/sdcard0, based on the /data/media directory
# daemon will drop to user/group system/media_rw after initializing
# underlying files in /data/media will be created with user and group media_rw (1023)
service sdcard /system/bin/sdcard /data/media 1023 1023
    class late_start
