import init.hikey.usb.rc

on init
    # mount debugfs
    mount debugfs /sys/kernel/debug /sys/kernel/debug

    # disable transparent huge pages
    write /sys/kernel/mm/transparent_hugepage/enabled "never"

    # See storage config details at http://source.android.com/tech/storage/
    symlink /sdcard /mnt/sdcard
    symlink /sdcard /storage/sdcard0

    # Disabled virtual memory randomization
    # (if randomization is enabled the AEM-JIT will have a lower cache hit rate)
    write /proc/sys/kernel/randomize_va_space 0

#bluetooth
   #UART device
   chmod 0660 /dev/ttyAMA1
   chown bluetooth net_bt_stack /dev/ttyAMA1

on fs
    mount_all /fstab.hikey
    setprop ro.crypto.fuse_sdcard false

on post-fs-data
    mkdir /data/media 0770 media_rw media_rw
    mkdir /data/misc/gatord 0700 root root
    # Set SELinux security contexts for files used by lava.
    restorecon_recursive /data/local/tmp/lava

on post-fs
    # insert WiFi Modules
    insmod /system/modules/rfkill.ko
    insmod /system/modules/wifi/compat.ko
    insmod /system/modules/wifi/cfg80211.ko
    insmod /system/modules/wifi/mac80211.ko
    insmod /system/modules/wifi/wlcore.ko
    insmod /system/modules/wifi/wl18xx.ko
    insmod /system/modules/wifi/wlcore_sdio.ko

    # BT LED sysfs entry
    write /sys/devices/leds/leds/bt_active/trigger "hci1rx"

    chmod 0666 /dev/ump
    chmod 0666 /dev/ion
    chmod 0666 /dev/mali
    chown system.graphics /dev/mali
    chmod 0666 /dev/graphics/fb0

# fake some battery state
    setprop status.battery.state Slow
    setprop status.battery.level 5
    setprop status.battery.level_raw  50
    setprop status.battery.level_scale 9

# Set Display density
    setprop ro.sf.lcd_density 160

# Set supported opengles version
    setprop ro.opengles.version 196608

# change permissions for process groups
# https://bugs.launchpad.net/bugs/1037611
    chmod 0660 /dev/cpuctl

# enable Google-specific location features,
# like NetworkLocationProvider and LocationCollector
    setprop ro.com.google.locationfeatures 1

# enable test harness
    setprop ro.test_harness true

on property:usb_speed.switch=high
    write /sys/kernel/debug/f72c0000.usb/config "0"

on property:usb_speed.switch=full
    write /sys/kernel/debug/f72c0000.usb/config "1"

#userspace daemon needed for bluetooth
service uim /system/bin/uim
    class main
    user root
    oneshot

service wpa_supplicant /system/bin/wpa_supplicant \
     -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
     -e/data/misc/wifi/entropy.bin  -g@android:wpa_wlan0
     socket wpa_wlan0 dgram 660 wifi wifi
     class main
     disabled
     oneshot

service dhcpcd_wlan0 /system/bin/dhcpcd -dABKL
     group dhcp
     disabled
     oneshot

service dhcpcd_eth0 /system/bin/dhcpcd -dABKL
     group dhcp
     disabled
     oneshot

service dhcpcd_bt-pan /system/bin/dhcpcd -dABKL
     group dhcp
     disabled
     oneshot
