blob: a719804fef104174b4ca94dd96326ec581f545de [file] [log] [blame]
#!/bin/busybox sh
if [ "$1" == "pre" ]; then
echo "=== Initial: USB Configuration Start ===" > /dev/kmsg
if [ -e "/dev/usb-ffs" ] ; then
echo "=== Bypass Pre Configuration ===" > /dev/kmsg
else # first boot
mkdir -p /dev/usb-ffs
mkdir -p /dev/usb-ffs/adb
mount none /sys/kernel/config -t configfs
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/ffs.adb
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/rndis.gs4
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/ncm.f0
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/ecm.f0
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/eem.f0
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/mass_storage.usb0
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/acm.gs0
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/acm.gs1
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/acm.gs2
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/acm.gs3
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/via_modem.gs0
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/via_ets.gs0
mkdir -p /sys/kernel/config/usb_gadget/g1/functions/via_atc.gs0
mount adb /dev/usb-ffs/adb -t functionfs -o uid=2000,gid=2000
fi
elif [ "$1" == "post" ];then
echo 0x0e8d > /sys/kernel/config/usb_gadget/g1/idVendor
echo 0x0223 > /sys/kernel/config/usb_gadget/g1/bcdDevice
echo 0x0200 > /sys/kernel/config/usb_gadget/g1/bcdUSB
mkdir -p /sys/kernel/config/usb_gadget/g1/strings/0x409
if [ "$(cat /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber)" == "" ]; then
if [[ "$(cat /etc/hostname)" == "auto2731evb-ivt-vp1" || "$(cat /etc/hostname)" == "auto2731evb-ivt-vp2" ]]; then
echo "MT-96533493F01B518C" > /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber
else
echo 0123456789ABCDEF > /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber
fi
else
echo "=== usb serial number exist, keep it ===" > /dev/kmsg
fi
echo MediaTek > /sys/kernel/config/usb_gadget/g1/strings/0x409/manufacturer
echo auto2731-ivt > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
mkdir -p /sys/kernel/config/usb_gadget/g1/configs/b.1
mkdir -p /sys/kernel/config/usb_gadget/g1/configs/b.1/strings/0x409
echo 500 > /sys/kernel/config/usb_gadget/g1/configs/b.1/MaxPower
if [ -n "$(cat /proc/boot_mode | grep META)" ] ; then # META mode: META_BOOT_SKIP_PRELOADER
# ADB + CDC-ACM*2 (META mode)
#setprop sys.usb.config adb,meta,elt
#################### START ####################
sleep 1
echo meta_elt_adb > /sys/kernel/config/usb_gadget/g1/configs/b.1/strings/0x409/configuration
echo 0x2040 > /sys/kernel/config/usb_gadget/g1/idProduct
ln -sf /sys/kernel/config/usb_gadget/g1/functions/mass_storage.usb0 /sys/kernel/config/usb_gadget/g1/configs/b.1/f1
ln -sf /sys/kernel/config/usb_gadget/g1/functions/ffs.adb /sys/kernel/config/usb_gadget/g1/configs/b.1/f2
ln -sf /sys/kernel/config/usb_gadget/g1/functions/acm.gs0 /sys/kernel/config/usb_gadget/g1/configs/b.1/f3
ln -sf /sys/kernel/config/usb_gadget/g1/functions/acm.gs3 /sys/kernel/config/usb_gadget/g1/configs/b.1/f4
echo musb-hdrc > /sys/kernel/config/usb_gadget/g1/UDC
#################### END ####################
sleep 1
echo musb-hdrc > /sys/kernel/config/usb_gadget/g1/UDC
else # Normal mode
# ADB + CDC-ACM*3 (normal mode)
#setprop sys.usb.config adb,acm
#################### START ####################
sleep 1
echo gs1gs3_dual_acm > /sys/kernel/config/usb_gadget/g1/configs/b.1/strings/0x409/configuration
echo 0x202f > /sys/kernel/config/usb_gadget/g1/idProduct
echo 1 > /sys/devices/platform/soc/mt_usb/saving
ln -sf /sys/kernel/config/usb_gadget/g1/functions/ffs.adb /sys/kernel/config/usb_gadget/g1/configs/b.1/f1
ln -sf /sys/kernel/config/usb_gadget/g1/functions/acm.gs0 /sys/kernel/config/usb_gadget/g1/configs/b.1/f2
ln -sf /sys/kernel/config/usb_gadget/g1/functions/acm.gs1 /sys/kernel/config/usb_gadget/g1/configs/b.1/f3
ln -sf /sys/kernel/config/usb_gadget/g1/functions/acm.gs3 /sys/kernel/config/usb_gadget/g1/configs/b.1/f4
#################### END ####################
sleep 1
echo musb-hdrc > /sys/kernel/config/usb_gadget/g1/UDC
fi
if [ -e "/proc/bootprof" ] ; then
echo usb_active > /proc/bootprof
fi
echo "=== Initial: USB Configuration End ===" > /dev/kmsg
fi