mirror of
https://github.com/Evolution-X-Devices/device_xiaomi_rosemary
synced 2026-01-27 18:07:31 +00:00
Implement a USB gadget HAL based on the default implementation from AOSP and move key features from init.mt6768.usb.rc to it. Also remove triggers for some proprietary USB features that aren't too useful on custom ROMs and seem to exist mostly for engineering purposes. Change-Id: Ie920fea8b3834d3bada2609df66ca68ddbb980b1
263 lines
11 KiB
Plaintext
263 lines
11 KiB
Plaintext
on early-init
|
|
write /sys/module/musb_hdrc/parameters/kernel_init_done 1
|
|
|
|
on post-fs
|
|
setprop vendor.usb.vid "0x0E8D"
|
|
mkdir /dev/usb-ffs 0775 shell shell
|
|
mkdir /dev/usb-ffs/adb 0770 shell shell
|
|
mkdir /config/usb_gadget/g1 0770
|
|
mkdir /config/usb_gadget/g1/strings/0x409 0770
|
|
write /config/usb_gadget/g1/idVendor ${vendor.usb.vid}
|
|
write /config/usb_gadget/g1/bcdDevice 0x0404
|
|
write /config/usb_gadget/g1/bcdUSB 0x0200
|
|
write /config/usb_gadget/g1/os_desc/use 1
|
|
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
|
|
write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
|
|
write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
|
|
mkdir /config/usb_gadget/g1/functions/accessory.gs2
|
|
mkdir /config/usb_gadget/g1/functions/audio_source.gs3
|
|
mkdir /config/usb_gadget/g1/functions/ffs.adb
|
|
mkdir /config/usb_gadget/g1/functions/mtp.gs0
|
|
write /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id "MTP"
|
|
mkdir /config/usb_gadget/g1/functions/ptp.gs1
|
|
mkdir /config/usb_gadget/g1/functions/rndis.gs4
|
|
mkdir /config/usb_gadget/g1/functions/midi.gs5
|
|
mkdir /config/usb_gadget/g1/functions/acm.gs0
|
|
mkdir /config/usb_gadget/g1/functions/acm.gs1
|
|
mkdir /config/usb_gadget/g1/functions/acm.gs2
|
|
mkdir /config/usb_gadget/g1/functions/acm.gs3
|
|
mkdir /config/usb_gadget/g1/functions/mass_storage.usb0
|
|
mkdir /config/usb_gadget/g1/functions/hid.gs0
|
|
mkdir /config/usb_gadget/g1/functions/via_modem.gs0
|
|
mkdir /config/usb_gadget/g1/functions/via_ets.gs0
|
|
mkdir /config/usb_gadget/g1/functions/via_atc.gs0
|
|
mkdir /config/usb_gadget/g1/configs/b.1 0770
|
|
mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770
|
|
write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
|
|
write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"
|
|
write /config/usb_gadget/g1/configs/b.1/MaxPower 500
|
|
symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
|
|
mount functionfs adb /dev/usb-ffs/adb rmode=0770,fmode=0660,uid=2000,gid=2000,no_disconnect=1
|
|
|
|
on boot
|
|
setprop sys.usb.configfs 1
|
|
setprop sys.usb.ffs.aio_compat 1
|
|
setprop vendor.usb.controller "musb-hdrc"
|
|
setprop vendor.usb.acm_cnt 0
|
|
setprop vendor.usb.acm_port0 ""
|
|
setprop vendor.usb.acm_port1 ""
|
|
setprop vendor.usb.acm_enable 0
|
|
write /sys/class/android_usb/android0/f_mtp/cpu_mask 0xF0
|
|
write /sys/module/usb_f_mtp/parameters/mtp_rx_cont 1
|
|
chmod 0664 /sys/class/android_usb/android0/iSerial
|
|
chown root system /sys/class/android_usb/android0/iSerial
|
|
|
|
chown radio system /sys/class/usb_rawbulk/data/enable
|
|
chmod 0660 /sys/class/usb_rawbulk/data/enable
|
|
chown radio system /sys/class/usb_rawbulk/ets/enable
|
|
chmod 0660 /sys/class/usb_rawbulk/ets/enable
|
|
chown radio system /sys/class/usb_rawbulk/atc/enable
|
|
chmod 0660 /sys/class/usb_rawbulk/atc/enable
|
|
chown radio system /sys/class/usb_rawbulk/pcv/enable
|
|
chmod 0660 /sys/class/usb_rawbulk/pcv/enable
|
|
chown radio system /sys/class/usb_rawbulk/gps/enable
|
|
chmod 0660 /sys/class/usb_rawbulk/gps/enable
|
|
chown system radio /dev/ttyGS0
|
|
chmod 0660 /dev/ttyGS0
|
|
chown system radio /dev/ttyGS1
|
|
chmod 0660 /dev/ttyGS1
|
|
chown system radio /dev/ttyGS2
|
|
chmod 0660 /dev/ttyGS2
|
|
chown system radio /dev/ttyGS3
|
|
chmod 0660 /dev/ttyGS3
|
|
|
|
# for UAC MAX dpidle time
|
|
write /sys/module/xhci_hcd/parameters/dpidle_fs_max 0
|
|
write /sys/module/xhci_hcd/parameters/dpidle_hs_max 0
|
|
|
|
# for usb otg sdcard hot plug detection
|
|
write /sys/module/block/parameters/events_dfl_poll_msecs 1000
|
|
|
|
on charger
|
|
mkdir /config/usb_gadget/g1 0770 shell shell
|
|
write /config/usb_gadget/g1/idVendor 0x0E8D
|
|
write /config/usb_gadget/g1/bcdDevice 0x0223
|
|
write /config/usb_gadget/g1/bcdUSB 0x0200
|
|
write /config/usb_gadget/g1/os_desc/use 1
|
|
mkdir /config/usb_gadget/g1/strings/0x409 0770
|
|
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
|
|
write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
|
|
write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
|
|
mkdir /config/usb_gadget/g1/functions/hid.gs0
|
|
mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell
|
|
mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
|
|
write /config/usb_gadget/g1/configs/b.1/MaxPower 500
|
|
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
|
|
setprop sys.usb.configfs 1
|
|
setprop vendor.usb.controller "musb-hdrc"
|
|
setprop vendor.usb.acm_cnt 0
|
|
setprop vendor.usb.acm_port0 ""
|
|
setprop vendor.usb.acm_port1 ""
|
|
setprop vendor.usb.acm_enable 0
|
|
setprop sys.usb.config hid
|
|
|
|
### more command at init.usb.configfs.rc ###
|
|
on property:sys.usb.config=none && property:sys.usb.configfs=1
|
|
write /config/usb_gadget/g1/idVendor 0x2717
|
|
rm /config/usb_gadget/g1/configs/b.1/f4
|
|
rm /config/usb_gadget/g1/configs/b.1/f5
|
|
write /sys/class/udc/musb-hdrc/device/saving 0
|
|
|
|
### HID for KPOC ###
|
|
on property:sys.usb.config=hid && property:sys.usb.configfs=1
|
|
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "HID"
|
|
write /config/usb_gadget/g1/idProduct 0x20FF
|
|
write /config/usb_gadget/g1/functions/hid.gs0/protocol 0
|
|
write /config/usb_gadget/g1/functions/hid.gs0/subclass 0
|
|
#write /config/usb_gadget/g1/functions/hid.gs0/report_length 4
|
|
#write /config/usb_gadget/g1/functions/hid.gs0/report_desc \\x05\\x01\\x09\\x00\\xa1\\x01\\xc0
|
|
symlink /config/usb_gadget/g1/functions/hid.gs0 /config/usb_gadget/g1/configs/b.1/f1
|
|
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
|
|
setprop sys.usb.state ${sys.usb.config}
|
|
|
|
on property:dev.bootcomplete=1
|
|
write /config/usb_gadget/g1/strings/0x409/product ${ro.product.marketname}
|
|
|
|
# For ATM (Android Test Mode)
|
|
on property:vendor.usb.clear=1 && property:sys.usb.configfs=1
|
|
write /config/usb_gadget/g1/UDC "none"
|
|
write /config/usb_gadget/g1/bDeviceClass 0
|
|
write /config/usb_gadget/g1/bDeviceSubClass 0
|
|
write /config/usb_gadget/g1/bDeviceProtocol 0
|
|
rm /config/usb_gadget/g1/configs/b.1/f1
|
|
rm /config/usb_gadget/g1/configs/b.1/f2
|
|
rm /config/usb_gadget/g1/configs/b.1/f3
|
|
rm /config/usb_gadget/g1/configs/b.1/f4
|
|
rm /config/usb_gadget/g1/configs/b.1/f5
|
|
rmdir /config/usb_gadget/g1/functions/rndis.gs4
|
|
write /sys/class/udc/musb-hdrc/device/saving 0
|
|
setprop vendor.usb.clear 2
|
|
|
|
# has permission issue when read from ${sys.usb.ffs.ready}
|
|
on property:sys.usb.ffs.ready=0
|
|
setprop vendor.usb.ffs.ready 0
|
|
on property:sys.usb.ffs.ready=1
|
|
setprop vendor.usb.ffs.ready 1
|
|
|
|
### CHARGING ###
|
|
on property:sys.usb.config=cdp && property:sys.usb.configfs=1
|
|
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp"
|
|
write /config/usb_gadget/g1/idProduct 0x2008
|
|
write /config/usb_gadget/g1/os_desc/use 1
|
|
symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
|
|
write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
|
|
setprop sys.usb.state ${sys.usb.config}
|
|
setprop vendor.usb.pid 0x2008
|
|
|
|
on property:sys.usb.config=charging_yes
|
|
setprop vendor.usb.state ${sys.usb.state}
|
|
setprop vendor.usb.charging yes
|
|
setprop sys.usb.config none
|
|
setprop sys.usb.config ${vendor.usb.state}
|
|
|
|
on property:sys.usb.config=charging_no
|
|
setprop vendor.usb.state ${sys.usb.state}
|
|
setprop sys.usb.config none
|
|
setprop sys.usb.config ${vendor.usb.state}
|
|
setprop vendor.usb.charging no
|
|
|
|
on property:vendor.usb.charging=yes
|
|
write /sys/class/udc/musb-hdrc/device/cmode 2
|
|
on property:vendor.usb.charging=no
|
|
write /sys/class/udc/musb-hdrc/device/cmode 1
|
|
|
|
on property:vendor.usb.port.mode=usb
|
|
write /sys/class/udc/musb-hdrc/device/portmode 0
|
|
on property:vendor.usb.port.mode=uart
|
|
write /sys/class/udc/musb-hdrc/device/portmode 1
|
|
|
|
on property:vendor.em.usb.set=USB_DRIVING_CAPABILITY
|
|
write /sys/kernel/debug/usb20_phy/USB_DRIVING_CAPABILITY ${mediatek.em.usb.value}
|
|
on property:vendor.em.usb.set=RG_USB20_TERM_VREF_SEL
|
|
write /sys/kernel/debug/usb20_phy/RG_USB20_TERM_VREF_SEL ${mediatek.em.usb.value}
|
|
on property:vendor.em.usb.set=RG_USB20_HSTX_SRCTRL
|
|
write /sys/kernel/debug/usb20_phy/RG_USB20_HSTX_SRCTRL ${mediatek.em.usb.value}
|
|
on property:vendor.em.usb.set=RG_USB20_VRT_VREF_SEL
|
|
write /sys/kernel/debug/usb20_phy/RG_USB20_VRT_VREF_SEL ${mediatek.em.usb.value}
|
|
on property:vendor.em.usb.set=RG_USB20_INTR_EN
|
|
write /sys/kernel/debug/usb20_phy/RG_USB20_INTR_EN ${mediatek.em.usb.value}
|
|
on property:vendor.em.usb.set=RG_USB20_PHY_REV6
|
|
write /sys/kernel/debug/usb20_phy/RG_USB20_PHY_REV6 ${mediatek.em.usb.value}
|
|
|
|
on property:vendor.em.usb.bypass.enable=0
|
|
write /sys/class/usb_rawbulk/gps/enable 1
|
|
on property:vendor.em.usb.bypass.enable=1
|
|
write /sys/class/usb_rawbulk/pcv/enable 1
|
|
on property:vendor.em.usb.bypass.enable=2
|
|
write /sys/class/usb_rawbulk/atc/enable 1
|
|
on property:vendor.em.usb.bypass.enable=3
|
|
write /sys/class/usb_rawbulk/ets/enable 1
|
|
on property:vendor.em.usb.bypass.enable=4
|
|
write /sys/class/usb_rawbulk/data/enable 1
|
|
on property:vendor.em.usb.bypass.disable=0
|
|
write /sys/class/usb_rawbulk/gps/enable 0
|
|
on property:vendor.em.usb.bypass.disable=1
|
|
write /sys/class/usb_rawbulk/pcv/enable 0
|
|
on property:vendor.em.usb.bypass.disable=2
|
|
write /sys/class/usb_rawbulk/atc/enable 0
|
|
on property:vendor.em.usb.bypass.disable=3
|
|
write /sys/class/usb_rawbulk/ets/enable 0
|
|
on property:vendor.em.usb.bypass.disable=4
|
|
write /sys/class/usb_rawbulk/data/enable 0
|
|
|
|
### vendor process start ###
|
|
on property:vendor.usb.config=*
|
|
setprop sys.usb.config ${vendor.usb.config}
|
|
### vendor process end ###
|
|
|
|
### test command start ###
|
|
on property:vendor.usb.test=*
|
|
setprop sys.usb.config none
|
|
setprop sys.usb.config ${vendor.usb.test}
|
|
### test command end ###
|
|
|
|
on property:vendor.usb.printk=*
|
|
write /proc/sys/kernel/printk ${vendor.usb.printk}
|
|
|
|
on property:persist.vendor.usb.printk=*
|
|
setprop vendor.usb.printk ${persist.vendor.usb.printk}
|
|
|
|
on property:vendor.usb.speed.mode=u3
|
|
write /sys/module/musb_hdrc/parameters/speed 1
|
|
write /sys/class/udc/musb-hdrc/device/cmode 0
|
|
write /sys/class/udc/musb-hdrc/device/cmode 1
|
|
|
|
on property:vendor.usb.speed.mode=u2
|
|
write /sys/module/musb_hdrc/parameters/speed 0
|
|
write /sys/class/udc/musb-hdrc/device/cmode 0
|
|
write /sys/class/udc/musb-hdrc/device/cmode 1
|
|
|
|
on property:persist.vendor.usb.speed.mode=u3
|
|
write /sys/module/musb_hdrc/parameters/speed 1
|
|
write /sys/class/udc/musb-hdrc/device/cmode 0
|
|
write /sys/class/udc/musb-hdrc/device/cmode 1
|
|
|
|
on property:persist.vendor.usb.speed.mode=u2
|
|
write /sys/module/musb_hdrc/parameters/speed 0
|
|
write /sys/class/udc/musb-hdrc/device/cmode 0
|
|
write /sys/class/udc/musb-hdrc/device/cmode 1
|
|
|
|
on property:vendor.usb.sib_enable=1
|
|
write /sys/class/udc/musb-hdrc/device/sib_enable 1
|
|
|
|
on property:vendor.usb.sib_enable=0
|
|
write /sys/class/udc/musb-hdrc/device/sib_enable 0
|
|
|
|
on property:persist.vendor.usb.dbg.lv=*
|
|
setprop vendor.usb.dbg.lv ${persist.vendor.usb.dbg.lv}
|
|
|
|
on property:vendor.usb.dbg.lv=*
|
|
write /sys/module/musb_hdrc/parameters/debug_level ${vendor.usb.dbg.lv}
|
|
|
|
### PLATFORM VARIANT, cat $rc_file | grep write | sort | grep -vE "android0|usb20_phy" | awk '{print $2}' | uniq ###
|