# Copyright (C) 2012-2013 Intel Mobile Communications GmbH
# Copyright (C) 2012 The Android Open Source Project
#
# USB configuration common for all android devices
#
# IMC Additions for VID/PID set using official 'Intel' identity


# Initialisation, sets up the unique serial number
# ================================================

on init
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer}
    write /sys/class/android_usb/android0/iProduct ${ro.product.model}
    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
    write /sys/class/android_usb/android0/f_mass_storage/inquiry_string "1"
    write /sys/class/android_usb/android0/f_rndis/manufacturer ${ro.product.manufacturer}
    write /sys/class/android_usb/android0/f_rndis/vendorID 2207
    write /sys/class/android_usb/android0/f_rndis/wceis 1
    mkdir /dev/usb-ffs 0770 shell shell
    mkdir /dev/usb-ffs/adb 0770 shell shell
    mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
    write /sys/class/android_usb/android0/f_ffs/aliases adb

on boot
    write /sys/class/android_usb/f_acm/port0/data_string at_commands
    write /sys/class/android_usb/f_acm/port0/iad_bFunctionProtocol 0
    write /sys/class/android_usb/f_acm/port0/ctrl_bInterfaceProtocol 0
    write /sys/class/android_usb/f_acm/port1/data_string oct_trace
    write /sys/class/android_usb/f_acm/port1/iad_bFunctionProtocol 0
    write /sys/class/android_usb/f_acm/port1/ctrl_bInterfaceProtocol 0
    write /sys/class/android_usb/f_acm/port2/data_string gti_ipicom
    write /sys/class/android_usb/f_acm/port2/iad_bFunctionProtocol 0
    write /sys/class/android_usb/f_acm/port2/ctrl_bInterfaceProtocol 0

# Configurations specifically added (or modified) for Intel Mobile Communications
# ===============================================================================
#
# Used Synonyms (keywords for activation) together with applicable USB Class (if appropriate)
# -------------------------------------------------------------------------------------------
#
# adb
# acm               (CDC-ACM) Serial Gadget (number of channels depends on PID)
# mtp               Media Transfer Protocol
# ptp               Photo Transfer Protocol
# rndis             USB Tethering (CDC-ECM, RNDIS)
#
# These are presented in ascending order of PID, which is restricted into the
# range 0x08EB through 0x09EB
#
# 0x08EC .. 0x08F6 were devised from the XMM6181/XMM2231 projects
#
# 0x0920 .. 0x0930 were added for the XMM6321 project
#
# Note that the usage of "acm" is special since it has to support varying numbers
# of CDC-ACM channels, and so the incoming string is expected to have a trailing
# tag to show this: this is not copied into the function list.


# 0x8087:0x08EF : ADB-only USB configuration
# ------------------------------------------

on property:sys.usb.config=adb
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 8087
    write /sys/class/android_usb/android0/idProduct 08F4
    write /sys/class/android_usb/android0/functions adb,acm
    write /sys/class/android_usb/f_acm/instances 3
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# 0x8087:0x0928 : ADB plus 3xCDC plus MTP
# ---------------------------------------

on property:sys.usb.config=mtp,adb
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 8087
    write /sys/class/android_usb/android0/idProduct 0928
    write /sys/class/android_usb/android0/functions mtp,adb,acm
    write /sys/class/android_usb/f_acm/instances 3
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# 0x8087:0x0929 : ADB plus 3xCDC plus PTP
# ---------------------------------------

on property:sys.usb.config=ptp,adb
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 8087
    write /sys/class/android_usb/android0/idProduct 0929
    write /sys/class/android_usb/android0/functions ptp,adb,acm
    write /sys/class/android_usb/f_acm/instances 3
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# 0x8087:0x092A : 3xCDC plus MTP
# ------------------------------

on property:sys.usb.config=mtp
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 8087
    write /sys/class/android_usb/android0/idProduct 092A
    write /sys/class/android_usb/android0/functions mtp,acm
    write /sys/class/android_usb/f_acm/instances 3
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# 0x8087:0x092B : 3xCDC plus PTP
# ------------------------------

on property:sys.usb.config=ptp
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 8087
    write /sys/class/android_usb/android0/idProduct 092B
    write /sys/class/android_usb/android0/functions ptp,acm
    write /sys/class/android_usb/f_acm/instances 3
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# 0x8087:0x092D : ADB plus 3xCDC plus USB Tethering (ECM)
# -------------------------------------------------------

on property:sys.usb.config=rndis,adb
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 8087
    write /sys/class/android_usb/android0/idProduct 092D
    write /sys/class/android_usb/android0/functions rndis,adb,acm
    write /sys/class/android_usb/f_acm/instances 3
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}

# 0x8087:0x0930: 3xCDC plus USB Tethering (ECM)
# ---------------------------------------------

on property:sys.usb.config=rndis
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 8087
    write /sys/class/android_usb/android0/idProduct 0930
    write /sys/class/android_usb/android0/functions rndis,acm
    write /sys/class/android_usb/f_acm/instances 3
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

# 0x8087:0x093A	
# --------------------------------------------------

on property:sys.usb.config=mass_storage
	write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 8087
    write /sys/class/android_usb/android0/idProduct 093A
    write /sys/class/android_usb/android0/functions mass_storage,acm
    write /sys/class/android_usb/f_acm/instances 3
    write /sys/class/android_usb/android0/enable 1
    setprop sys.usb.state ${sys.usb.config}

# 0x8087:0x093B
#---------------------------------------------------
on property:sys.usb.config=mass_storage,adb
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 8087
    write /sys/class/android_usb/android0/idProduct 093B
    write /sys/class/android_usb/android0/functions mass_storage,adb,acm
    write /sys/class/android_usb/f_acm/instances 3
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}