import init.manta.usb.rc

on init
    start watchdogd

    # See storage config details at http://source.android.com/tech/storage/
    mkdir /mnt/shell/emulated 0700 shell shell
    mkdir /storage/emulated 0555 root root

    export EXTERNAL_STORAGE /storage/emulated/legacy
    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

# KSM
    write /sys/kernel/mm/ksm/pages_to_scan 100
    write /sys/kernel/mm/ksm/sleep_millisecs 500
#    write /sys/kernel/mm/ksm/run 1

on post-fs-data
    mkdir /data/media 0770 media_rw media_rw

    setprop vold.post_fs_data_done 1
    mkdir /data/misc/wifi 0770 wifi wifi
    mkdir /data/misc/wifi/sockets 0770 wifi wifi
    mkdir /data/misc/dhcp 0770 dhcp dhcp
    chown dhcp dhcp /data/misc/dhcp

# permissions for bluetooth.
	setprop ro.bt.bdaddr_path "/factory/bluetooth/bt_addr"
	chown bluetooth net_bt_stack ro.bt.bdaddr_path
	chown bluetooth net_bt_stack /dev/ttySAC0
	chmod 0660 /dev/ttySAC0
	chmod 0660 /sys/class/rfkill/rfkill0/state
	chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state
	chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type
	restorecon /sys/class/rfkill/rfkill0/state
	restorecon /sys/class/rfkill/rfkill0/type

on boot
    # override init.rc to keep plenty of large order chunks around
    # to improve allocation times
    write /proc/sys/vm/min_free_order_shift 1

    mount debugfs /sys/kernel/debug /sys/kernel/debug
    setprop ro.radio.noril yes

    # Set up kernel tracing, but disable it by default
    chmod 0222 /sys/kernel/debug/tracing/trace_marker
    write /sys/kernel/debug/tracing/tracing_on 0

    chmod 0444 /sys/kernel/debug/smb347-regs

# Set Mali power policy as Coarse demand
    write /sys/devices/platform/mali.0/power_policy coarse_demand

on fs
    mkdir /factory 0775 radio radio

    mount_all /fstab.manta
    mount ext4 /dev/block/platform/dw_mmc.0/by-name/efs /factory rw remount
    restorecon /factory
    restorecon /factory/bluetooth
    restorecon /factory/bluetooth/bt_addr
    restorecon /factory/FactoryApp
    restorecon /factory/FactoryApp/
    restorecon /factory/FactoryApp/baro_delta
    restorecon /factory/FactoryApp/factorymode
    restorecon /factory/FactoryApp/fdata
    restorecon /factory/FactoryApp/hist_nv
    restorecon /factory/FactoryApp/hw_ver
    restorecon /factory/FactoryApp/keystr
    restorecon /factory/FactoryApp/reset_flag
    restorecon /factory/FactoryApp/test_nv
    restorecon /factory/hdcp2.keys
    restorecon /factory/wv.keys
    restorecon /factory/wifi
    restorecon /factory/wifi/
    mount ext4 /dev/block/platform/dw_mmc.0/by-name/efs /factory ro remount
    setprop ro.crypto.fuse_sdcard true

# Permissions for backlight
    chmod 0660 /sys/class/backlight/pwm-backlight.0/brightness
    chown system system /sys/class/backlight/pwm-backlight.0/brightness

# create data/gps for GPS daemon
    chown root system /sys/class/gps/bcm475x/GPS_PWR_EN/value
    chmod 0664 /sys/class/gps/bcm475x/GPS_PWR_EN/value
    chown root system /sys/class/gps/bcm475x/GPS_nRST/value
    chmod 0664 /sys/class/gps/bcm475x/GPS_nRST/value
    mkdir /data/gps 771 system system
    chown system system /data/gps

# NFC: create data/nfc for nv storage
    mkdir /data/nfc 770 nfc nfc
    mkdir /data/nfc/param 770 nfc nfc

# audio: permissions for voice processing
    # global switch for voice processing effects
    chown root audio /sys/class/i2c-dev/i2c-4/device/4-003e/voice_processing
    chmod 0660 /sys/class/i2c-dev/i2c-4/device/4-003e/voice_processing
    # voice processing chip sleep
    chown root audio /sys/class/i2c-dev/i2c-4/device/4-003e/sleep
    chmod 0660 /sys/class/i2c-dev/i2c-4/device/4-003e/sleep
    # voice processing usecase preset
    chown root audio /sys/class/i2c-dev/i2c-4/device/4-003e/preset
    chmod 0660 /sys/class/i2c-dev/i2c-4/device/4-003e/preset
    # voice processing noise suppression level
    chown root audio /sys/class/i2c-dev/i2c-4/device/4-003e/tx_ns_level
    chmod 0660 /sys/class/i2c-dev/i2c-4/device/4-003e/tx_ns_level
    # voice processing AGC enable (TX)
    chown root audio /sys/class/i2c-dev/i2c-4/device/4-003e/tx_agc_enable
    chmod 0660 /sys/class/i2c-dev/i2c-4/device/4-003e/tx_agc_enable
    # voice processing AEC enable
    chown root audio /sys/class/i2c-dev/i2c-4/device/4-003e/aec_enable
    chmod 0660 /sys/class/i2c-dev/i2c-4/device/4-003e/aec_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 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 \
    -puse_multi_chan_concurrent=1 -N -ip2p0 -Dnl80211 \
    -c/data/misc/wifi/p2p_supplicant.conf \
    -I/system/etc/wifi/p2p_supplicant_overlay.conf \
    -puse_p2p_group_interface=1use_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 \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/system/etc/wifi/wpa_supplicant_overlay.conf \
    -O/data/misc/wifi/sockets \
    -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 -aABDKL
    class main
    disabled
    oneshot

service dhcpcd_p2p /system/bin/dhcpcd -aABKL
    class main
    disabled
    oneshot

service dhcpcd_eth0 /system/bin/dhcpcd -ABDKL
    class main
    disabled
    oneshot

service dhcpcd_bt-pan /system/bin/dhcpcd -ABKL
    class main
    disabled
    oneshot

service iprenew_wlan0 /system/bin/dhcpcd -n
    class main
    disabled
    oneshot

service iprenew_p2p /system/bin/dhcpcd -n
    class main
    disabled
    oneshot

service iprenew_eth0 /system/bin/dhcpcd -n
    class main
    disabled
    oneshot

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

service battery_charger /charger
    class charger

# Set watchdog timer to 30 seconds and pet it every 10 seconds to get a 20 second margin
service watchdogd /sbin/watchdogd 10 20
    class core
    seclabel u:r:watchdogd:s0

service gpsd /system/vendor/bin/gpsd -c /system/vendor/etc/gps.xml
    class main
    socket gps seqpacket 0660 gps system
    user gps
    group system inet

# MobiCore startup
service mobicore /system/bin/mcDriverDaemon -r /system/vendor/secapp/020a0000000000000000000000000000.drbin
    setenv MC_REGISTRY_PATH /system/vendor/secapp
    user drmrpc
    group drmrpc
    class main

# on userdebug and eng builds, enable kgdb on the serial console
on property:ro.debuggable=1
    write /sys/module/kgdboc/parameters/kgdboc ttyFIQ2
    write /sys/module/fiq_debugger/parameters/kgdb_enable 1

# 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
