#!/system/bin/sh # Copyright (c) 2012, 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 "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. # # # Update USB serial number from persist storage if present, if not update # with value passed from kernel command line, if none of these values are # set then use the default value. This order is needed as for devices which # do not have unique serial number. # User needs to set unique usb serial number to persist.usb.serialno # serialno=`getprop persist.usb.serialno` case "$serialno" in "") serialnum=`getprop ro.serialno` case "$serialnum" in "");; #Do nothing, use default serial number *) echo "$serialnum" > /sys/class/android_usb/android0/iSerial esac ;; *) echo "$serialno" > /sys/class/android_usb/android0/iSerial esac chown -h root.system /sys/devices/platform/msm_hsusb/gadget/wakeup chmod -h 220 /sys/devices/platform/msm_hsusb/gadget/wakeup # # Allow persistent usb charging disabling # User needs to set usb charging disabled in persist.usb.chgdisabled # target=`getprop ro.board.platform` usbchgdisabled=`getprop persist.usb.chgdisabled` case "$usbchgdisabled" in "") ;; #Do nothing here * ) case $target in "msm8660") echo "$usbchgdisabled" > /sys/module/pmic8058_charger/parameters/disabled echo "$usbchgdisabled" > /sys/module/smb137b/parameters/disabled ;; "msm8960") echo "$usbchgdisabled" > /sys/module/pm8921_charger/parameters/disabled ;; esac esac usbcurrentlimit=`getprop persist.usb.currentlimit` case "$usbcurrentlimit" in "") ;; #Do nothing here * ) case $target in "msm8960") echo "$usbcurrentlimit" > /sys/module/pm8921_charger/parameters/usb_max_current ;; esac esac # # Allow USB enumeration with default PID/VID # baseband=`getprop ro.baseband` echo 1 > /sys/class/android_usb/f_mass_storage/lun/nofua usb_config=`getprop persist.sys.usb.config` case "$usb_config" in "" | "adb") #USB persist config not set, select default configuration case $target in "apq8064" | "fusion3") setprop persist.sys.usb.config mtp ;; "msm8960" | "msm8974") case "$baseband" in "mdm") # setprop persist.sys.usb.config diag,diag_mdm,serial_hsic,serial_tty,rmnet_hsic,mass_storage,adb setprop persist.sys.usb.config mtp ;; "sglte") # setprop persist.sys.usb.config diag,diag_mdm,serial_smd,serial_tty,serial_hsuart,rmnet_hsuart,mass_storage,adb setprop persist.sys.usb.config mtp ;; *) # setprop persist.sys.usb.config diag,serial_smd,serial_tty,rmnet_bam,mass_storage,adb setprop persist.sys.usb.config mtp ;; esac ;; "msm7627a") setprop persist.sys.usb.config diag,serial_smd,serial_tty,rmnet_smd,mass_storage,adb ;; * ) case "$baseband" in "svlte2a") setprop persist.sys.usb.config diag,diag_mdm,serial_sdio,serial_smd,rmnet_smd_sdio,mass_storage,adb ;; "csfb") setprop persist.sys.usb.config diag,diag_mdm,serial_sdio,serial_tty,rmnet_sdio,mass_storage,adb ;; *) setprop persist.sys.usb.config diag,serial_tty,serial_tty,rmnet_smd,mass_storage,adb ;; esac ;; esac ;; * ) ;; #USB persist config exists, do nothing esac # # Add support for exposing lun0 as cdrom in mass-storage # target=`getprop ro.product.device` cdromname="/system/etc/cdrom_install.iso" cdromenable=`getprop persist.service.cdrom.enable` case "$target" in "msm7627a") case "$cdromenable" in 0) echo "" > /sys/class/android_usb/android0/f_mass_storage/lun0/file ;; 1) echo "mounting usbcdrom lun" echo $cdromname > /sys/class/android_usb/android0/f_mass_storage/lun0/file ;; esac ;; esac # # Select USB BAM - 2.0 or 3.0 # case "$target" in "msm8974") echo hsusb > /sys/bus/platform/devices/usb_bam/enable ;; esac # # set module params for embedded rmnet devices # rmnetmux=`getprop persist.rmnet.mux` case "$baseband" in "mdm" | "dsda" | "sglte2") case "$rmnetmux" in "enabled") echo 1 > /sys/module/rmnet_usb/parameters/mux_enabled echo 8 > /sys/module/rmnet_usb/parameters/no_fwd_rmnet_links echo 17 > /sys/module/rmnet_usb/parameters/no_rmnet_insts_per_dev ;; esac echo 1 > /sys/module/rmnet_usb/parameters/rmnet_data_init # Allow QMUX daemon to assign port open wait time chown -h radio.radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait ;; "dsda2") echo 2 > /sys/module/rmnet_usb/parameters/no_rmnet_devs echo hsicctl,hsusbctl > /sys/module/rmnet_usb/parameters/rmnet_dev_names case "$rmnetmux" in "enabled") #mux is neabled on both mdms echo 3 > /sys/module/rmnet_usb/parameters/mux_enabled echo 8 > /sys/module/rmnet_usb/parameters/no_fwd_rmnet_links echo 17 > write /sys/module/rmnet_usb/parameters/no_rmnet_insts_per_dev ;; "enabled_hsic") #mux is enabled on hsic mdm echo 1 > /sys/module/rmnet_usb/parameters/mux_enabled echo 8 > /sys/module/rmnet_usb/parameters/no_fwd_rmnet_links echo 17 > /sys/module/rmnet_usb/parameters/no_rmnet_insts_per_dev ;; "enabled_hsusb") #mux is enabled on hsusb mdm echo 2 > /sys/module/rmnet_usb/parameters/mux_enabled echo 8 > /sys/module/rmnet_usb/parameters/no_fwd_rmnet_links echo 17 > /sys/module/rmnet_usb/parameters/no_rmnet_insts_per_dev ;; esac echo 1 > /sys/module/rmnet_usb/parameters/rmnet_data_init # Allow QMUX daemon to assign port open wait time chown -h radio.radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait ;; esac