mirror of
https://github.com/armbian/linux.git
synced 2026-01-06 10:13:00 -08:00
usb: gadget: Add Android Composite Gadget driver
The Android Gadget driver is a composite driver that allows userspace to change at runtime the list of functions enabled in its configuration and to configure these functions. It supports multiple functions: acm, adb, rndis, mtp/ptp, mass storage and accessory. It is usually controlled by a daemon that changes the configuration based on user settings. For example, rndis is enabled when the user enables sharing the phone data connection and adb (Android Debug Bridge) is only enabled when the user wants to debug applications for security reasons. As an example on how to use it, the following shell commands will make the gadget disconnect from the host and make it be re-enumerated as a composite with 1 rndis and 2 acm interfaces, and a different product id: echo 0 > /sys/class/android_usb/android0/enable echo rndis,acm > /sys/class/android_usb/android0/functions echo 2 > /sys/class/android_usb/android0/f_acm/instances echo 2d01 > /sys/class/android_usb/android0/idProduct echo 1 > /sys/class/android_usb/android0/enable The driver requires a gadget controller that supports software control of the D+ pullup and the controller driver must support disabling the pullup during composite_bind. Signed-off-by: Mike Lockwood <lockwood@android.com> Signed-off-by: Benoit Goby <benoit@android.com>
This commit is contained in:
committed by
Arve Hjønnevåg
parent
dbfb82e58a
commit
5049bbc5d5
@@ -818,6 +818,15 @@ config USB_G_PRINTER
|
||||
For more information, see Documentation/usb/gadget_printer.txt
|
||||
which includes sample code for accessing the device file.
|
||||
|
||||
config USB_G_ANDROID
|
||||
boolean "Android Composite Gadget"
|
||||
help
|
||||
The Android Composite Gadget supports multiple USB
|
||||
functions: adb, acm, mass storage, mtp, accessory
|
||||
and rndis.
|
||||
Each function can be configured and enabled/disabled
|
||||
dynamically from userspace through a sysfs interface.
|
||||
|
||||
if TTY
|
||||
|
||||
config USB_CDC_COMPOSITE
|
||||
|
||||
@@ -65,6 +65,7 @@ g_nokia-y := nokia.o
|
||||
g_webcam-y := webcam.o
|
||||
g_ncm-y := ncm.o
|
||||
g_acm_ms-y := acm_ms.o
|
||||
g_android-y := android.o
|
||||
g_tcm_usb_gadget-y := tcm_usb_gadget.o
|
||||
|
||||
obj-$(CONFIG_USB_ZERO) += g_zero.o
|
||||
@@ -84,4 +85,5 @@ obj-$(CONFIG_USB_G_NOKIA) += g_nokia.o
|
||||
obj-$(CONFIG_USB_G_WEBCAM) += g_webcam.o
|
||||
obj-$(CONFIG_USB_G_NCM) += g_ncm.o
|
||||
obj-$(CONFIG_USB_G_ACM_MS) += g_acm_ms.o
|
||||
obj-$(CONFIG_USB_G_ANDROID) += g_android.o
|
||||
obj-$(CONFIG_USB_GADGET_TARGET) += tcm_usb_gadget.o
|
||||
|
||||
1076
drivers/usb/gadget/android.c
Normal file
1076
drivers/usb/gadget/android.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user