Currently it is possible to build in some subset of usb functions
*OR* some gadget module. This is limited only by Kconfig not
any functionality.
This patch removes this limitation. With this patch it is possible
to set up all build combinations:
1) Multiple gadgets build in
2) Part of functions build in, part of functions as a modules
3) Some gadgets build in and some part of functions build in/modules
etc.
As this patch makes Kconfig quite complicated let me clarify how it works:
USB_F_<func name> - used in makefile for compilation
USB_CONFIGFS_F_<func name> - Chosen by user in function menu
USB_G_<gadget name>_REQ_F_<func name> - set up by gadget to mark
that this particular gadget requires this func to work
USB_F_<func name>_SELECTOR - helper config which is used to determine
if function should be build in or compiled as a module
The rules are quite simple:
1) If any of USB_CONFIGFS_F_<func name>, USB_G_*_REQ_F_<func name> equals
y, then USB_F_<func name> is set to y and function is build in
2) If none of USB_CONFIGFS_F_<func name>, USB_G_*_REQ_F_<func name> equals
y, but any of them equals m then USB_F_<func name> is set to m and function
is compiled as a module
Signed-off-by: Krzysztof Opasiak <[email protected]>
---
drivers/usb/gadget/Kconfig | 674 ++++++++++++++++++++++++++++++-------
drivers/usb/gadget/legacy/Kconfig | 126 ++++---
2 files changed, 610 insertions(+), 190 deletions(-)
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
index 2057add..d6e9af7 100644
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -142,174 +142,627 @@ source "drivers/usb/gadget/udc/Kconfig"
# composite based drivers
config USB_LIBCOMPOSITE
- tristate
+ tristate "USB Gadget Drivers"
select CONFIGFS_FS
depends on USB_GADGET
config USB_F_ACM
tristate
+# Just a dummy config which indicates that serial gadget requires ACM in
particular state
+config USB_G_SERIAL_REQ_F_ACM
+ tristate
+
+# Just a dummy config which indicates that cdc gadget requires ACM in
particular state
+config USB_G_CDC_COMPOSITE_REQ_F_ACM
+ tristate
+
+# Just a dummy config which indicates that nokia gadget requires ACM in
particular state
+config USB_G_NOKIA_REQ_F_ACM
+ tristate
+
+# Just a dummy config which indicates that acm ms gadget requires ACM in
particular state
+config USB_G_ACM_MS_REQ_F_ACM
+ tristate
+
+# Just a dummy config which indicates that multi gadget requires ACM in
particular state
+config USB_G_MULTI_REQ_F_ACM
+ tristate
+
+if USB_CONFIGFS_F_ACM = y || USB_G_SERIAL_REQ_F_ACM = y ||
USB_G_CDC_COMPOSITE_REQ_F_ACM = y || USB_G_NOKIA_REQ_F_ACM = y ||
USB_G_ACM_MS_REQ_F_ACM = y || USB_G_MULTI_REQ_F_ACM = y
+config USB_F_ACM_SELECTOR
+ tristate
+ default y
+ select USB_F_ACM
+ select USB_F_ACM_REQ_U_SERIAL
+endif
+
+if !(USB_CONFIGFS_F_ACM = y || USB_G_SERIAL_REQ_F_ACM = y ||
USB_G_CDC_COMPOSITE_REQ_F_ACM = y || USB_G_NOKIA_REQ_F_ACM = y ||
USB_G_ACM_MS_REQ_F_ACM = y || USB_G_MULTI_REQ_F_ACM = y) && (USB_CONFIGFS_F_ACM
= m || USB_G_SERIAL_REQ_F_ACM = m || USB_G_CDC_COMPOSITE_REQ_F_ACM = m ||
USB_G_NOKIA_REQ_F_ACM = m || USB_G_ACM_MS_REQ_F_ACM = m ||
USB_G_MULTI_REQ_F_ACM = m)
+config USB_F_ACM_SELECTOR
+ tristate
+ default m
+ select USB_F_ACM
+ select USB_F_ACM_REQ_U_SERIAL
+endif
+
config USB_F_SS_LB
tristate
+# Just a dummy config which indicates that gadget zero requires SS and LB in
particular state
+config USB_G_ZERO_REQ_F_SS_LB
+ tristate
+
+if USB_CONFIGFS_F_SS_LB = y || USB_G_ZERO_REQ_F_SS_LB = y
+config USB_F_SS_LB_SELECTOR
+ tristate
+ default y
+ select USB_F_SS_LB
+endif
+
+if !(USB_CONFIGFS_F_SS_LB = y || USB_G_ZERO_REQ_F_SS_LB = y) &&
(USB_CONFIGFS_F_SS_LB = m || USB_G_ZERO_REQ_F_SS_LB = m)
+config USB_F_SS_LB_SELECTOR
+ tristate
+ default m
+ select USB_F_SS_LB
+endif
+
config USB_U_SERIAL
tristate
+# Just a dummy config which indicates that F_ACM requires U_SERIAL in
particular state
+config USB_F_ACM_REQ_U_SERIAL
+ tristate
+
+# Just a dummy config which indicates that F_SERIAL requires U_SERIAL in
particular state
+config USB_F_SERIAL_REQ_U_SERIAL
+ tristate
+
+# Just a dummy config which indicates that F_OBEX requires U_SERIAL in
particular state
+config USB_F_OBEX_REQ_U_SERIAL
+ tristate
+
+# Just a dummy config which indicates that dbg gadget requires U_SERIAL in
particular state
+config USB_G_DBG_REQ_U_SERIAL
+ tristate
+
+if USB_F_ACM_REQ_U_SERIAL = y || USB_F_SERIAL_REQ_U_SERIAL = y ||
USB_F_OBEX_REQ_U_SERIAL = y || USB_G_DBG_REQ_U_SERIAL = y
+config USB_U_SERIAL_SELECTOR
+ tristate
+ default y
+ select USB_U_SERIAL
+endif
+
+if !(USB_F_ACM_REQ_U_SERIAL = y || USB_F_SERIAL_REQ_U_SERIAL = y ||
USB_F_OBEX_REQ_U_SERIAL = y || USB_G_DBG_REQ_U_SERIAL = y) &&
(USB_F_ACM_REQ_U_SERIAL = m || USB_F_SERIAL_REQ_U_SERIAL = m ||
USB_F_OBEX_REQ_U_SERIAL = m || USB_G_DBG_REQ_U_SERIAL = m)
+config USB_U_SERIAL_SELECTOR
+ tristate
+ default m
+ select USB_U_SERIAL
+endif
+
config USB_U_ETHER
tristate
+# Just a dummy config which indicates that F_NCM requires U_ETHER in
particular state
+config USB_F_NCM_REQ_U_ETHER
+ tristate
+
+# Just a dummy config which indicates that F_ECM requires U_ETHER in
particular state
+config USB_F_ECM_REQ_U_ETHER
+ tristate
+
+# Just a dummy config which indicates that F_SUBSET requires U_ETHER in
particular state
+config USB_F_SUBSET_REQ_U_ETHER
+ tristate
+
+# Just a dummy config which indicates that F_RNDIS requires U_ETHER in
particular state
+config USB_F_RNDIS_REQ_U_ETHER
+ tristate
+
+# Just a dummy config which indicates that F_EEM requires U_ETHER in
particular state
+config USB_F_EEM_REQ_U_ETHER
+ tristate
+
+# Just a dummy config which indicates that F_PHONET requires U_ETHER in
particular state
+config USB_F_PHONET_REQ_U_ETHER
+ tristate
+
+if USB_F_NCM_REQ_U_ETHER = y || USB_F_ECM_REQ_U_ETHER = y ||
USB_F_SUBSET_REQ_U_ETHER = y || USB_F_RNDIS_REQ_U_ETHER = y ||
USB_F_EEM_REQ_U_ETHER = y || USB_F_PHONET_REQ_U_ETHER = y
+config USB_U_ETHER_SELECTOR
+ tristate
+ default y
+ select USB_U_ETHER
+endif
+
+if !(USB_F_NCM_REQ_U_ETHER = y || USB_F_ECM_REQ_U_ETHER = y ||
USB_F_SUBSET_REQ_U_ETHER = y || USB_F_RNDIS_REQ_U_ETHER = y ||
USB_F_EEM_REQ_U_ETHER = y || USB_F_PHONET_REQ_U_ETHER = y) &&
(USB_F_NCM_REQ_U_ETHER = m || USB_F_ECM_REQ_U_ETHER = m ||
USB_F_SUBSET_REQ_U_ETHER = m || USB_F_RNDIS_REQ_U_ETHER = m ||
USB_F_EEM_REQ_U_ETHER = m || USB_F_PHONET_REQ_U_ETHER = m)
+config USB_U_ETHER_SELECTOR
+ tristate
+ default m
+ select USB_U_ETHER
+endif
+
config USB_F_SERIAL
tristate
+# Just a dummy config which indicates that serial gadget requires SERIAL in
particular state
+config USB_G_SERIAL_REQ_F_SERIAL
+ tristate
+
+if USB_CONFIGFS_F_SERIAL = y || USB_G_SERIAL_REQ_F_SERIAL = y
+config USB_F_SERIAL_SELECTOR
+ tristate
+ default y
+ select USB_F_SERIAL
+ select USB_F_SERIAL_REQ_U_SERIAL
+endif
+
+if !(USB_CONFIGFS_F_SERIAL = y || USB_G_SERIAL_REQ_F_SERIAL = y) &&
(USB_CONFIGFS_F_SERIAL = m || USB_G_SERIAL_REQ_F_SERIAL = m)
+config USB_F_SERIAL_SELECTOR
+ tristate
+ default m
+ select USB_F_SERIAL
+ select USB_F_SERIAL_REQ_U_SERIAL
+endif
+
config USB_F_OBEX
tristate
+# Just a dummy config which indicates that serial gadget requires OBEX in
particular state
+config USB_G_SERIAL_REQ_F_OBEX
+ tristate
+
+# Just a dummy config which indicates that nokia gadget requires OBEX in
particular state
+config USB_G_NOKIA_REQ_F_OBEX
+ tristate
+
+if USB_CONFIGFS_F_OBEX = y || USB_G_SERIAL_REQ_F_OBEX = y ||
USB_G_NOKIA_REQ_F_OBEX = y
+config USB_F_OBEX_SELECTOR
+ tristate
+ default y
+ select USB_F_OBEX
+ select USB_F_OBEX_REQ_U_SERIAL
+endif
+
+if !(USB_CONFIGFS_F_OBEX = y || USB_G_SERIAL_REQ_F_OBEX = y ||
USB_G_NOKIA_REQ_F_OBEX = y) && (USB_CONFIGFS_F_OBEX = m ||
USB_G_SERIAL_REQ_F_OBEX = m || USB_G_NOKIA_REQ_F_OBEX = m)
+config USB_F_OBEX_SELECTOR
+ tristate
+ default m
+ select USB_F_OBEX
+ select USB_F_OBEX_REQ_U_SERIAL
+endif
+
config USB_F_NCM
tristate
+# Just a dummy config which indicates that ncm gadget requires NCM in
particular state
+config USB_G_NCM_REQ_F_NCM
+ tristate
+
+if USB_CONFIGFS_F_NCM = y || USB_G_NCM_REQ_F_NCM = y
+config USB_F_NCM_SELECTOR
+ tristate
+ default y
+ select USB_F_NCM
+ select USB_F_NCM_REQ_U_ETHER
+endif
+
+if !(USB_CONFIGFS_F_NCM = y || USB_G_NCM_REQ_F_NCM = y) && (USB_CONFIGFS_F_NCM
= m || USB_G_NCM_REQ_F_NCM = m)
+config USB_F_NCM_SELECTOR
+ tristate
+ default m
+ select USB_F_NCM
+ select USB_F_NCM_REQ_U_ETHER
+endif
+
config USB_F_ECM
tristate
+# Just a dummy config which indicates that eth gadget requires ECM in
particular state
+config USB_G_ETH_REQ_F_ECM
+ tristate
+
+# Just a dummy config which indicates that cdc gadget requires ECM in
particular state
+config USB_G_CDC_COMPOSITE_REQ_F_ECM
+ tristate
+
+# Just a dummy config which indicates that nokia gadget requires ECM in
particular state
+config USB_G_NOKIA_REQ_F_ECM
+ tristate
+
+# Just a dummy config which indicates that functionfs gadget requires ECM in
particular state
+config USB_G_FUNCTIONFS_REQ_F_ECM
+ tristate
+
+# Just a dummy config which indicates that multi gadget requires ECM in
particular state
+config USB_G_MULTI_REQ_F_ECM
+ tristate
+
+if USB_CONFIGFS_F_ECM = y || USB_G_ETH_REQ_F_ECM = y ||
USB_G_CDC_COMPOSITE_REQ_F_ECM = y || USB_G_NOKIA_REQ_F_ECM = y ||
USB_G_FUNCTIONFS_REQ_F_ECM = y || USB_G_MULTI_REQ_F_ECM = y
+config USB_F_ECM_SELECTOR
+ tristate
+ default y
+ select USB_F_ECM
+ select USB_F_ECM_REQ_U_ETHER
+endif
+
+if !(USB_CONFIGFS_F_ECM = y || USB_G_ETH_REQ_F_ECM = y ||
USB_G_CDC_COMPOSITE_REQ_F_ECM = y || USB_G_NOKIA_REQ_F_ECM = y ||
USB_G_FUNCTIONFS_REQ_F_ECM = y || USB_G_MULTI_REQ_F_ECM = y) &&
(USB_CONFIGFS_F_ECM = m || USB_G_ETH_REQ_F_ECM = m ||
USB_G_CDC_COMPOSITE_REQ_F_ECM = m || USB_G_NOKIA_REQ_F_ECM = m ||
USB_G_FUNCTIONFS_REQ_F_ECM = m || USB_G_MULTI_REQ_F_ECM = m)
+config USB_F_ECM_SELECTOR
+ tristate
+ default m
+ select USB_F_ECM
+ select USB_F_ECM_REQ_U_ETHER
+endif
+
config USB_F_PHONET
tristate
+# Just a dummy config which indicates that nokia gadget requires PHONET in
particular state
+config USB_G_NOKIA_REQ_F_PHONET
+ tristate
+
+if USB_CONFIGFS_F_PHONET = y || USB_G_NOKIA_REQ_F_PHONET = y
+config USB_F_PHONET_SELECTOR
+ tristate
+ default y
+ select USB_F_PHONET
+ select USB_F_PHONET_REQ_U_ETHER
+endif
+
+if !(USB_CONFIGFS_F_PHONET = y || USB_G_NOKIA_REQ_F_PHONET = y) &&
(USB_CONFIGFS_F_PHONET = m || USB_G_NOKIA_REQ_F_PHONET = m)
+config USB_F_PHONET_SELECTOR
+ tristate
+ default m
+ select USB_F_PHONET
+ select USB_F_PHONET_REQ_U_ETHER
+endif
+
config USB_F_EEM
tristate
+# Just a dummy config which indicates that eth gadget requires EEM in
particular state
+config USB_G_ETH_REQ_F_EEM
+ tristate
+
+if USB_CONFIGFS_F_EEM = y || USB_G_ETH_REQ_F_EEM = y
+config USB_F_EEM_SELECTOR
+ tristate
+ default y
+ select USB_F_EEM
+ select USB_F_EEM_REQ_U_ETHER
+endif
+
+if !(USB_CONFIGFS_F_EEM = y || USB_G_ETH_REQ_F_EEM = y) && (USB_CONFIGFS_F_EEM
= m || USB_G_ETH_REQ_F_EEM = m)
+config USB_F_EEM_SELECTOR
+ tristate
+ default m
+ select USB_F_EEM
+ select USB_F_EEM_REQ_U_ETHER
+endif
+
config USB_F_SUBSET
tristate
+# Just a dummy config which indicates that eth gadget requires SUBSET in
particular state
+config USB_G_ETH_REQ_F_SUBSET
+ tristate
+
+# Just a dummy config which indicates that functionfs gadget requires SUBSET
in particular state
+config USB_G_FUNCTIONFS_REQ_F_SUBSET
+ tristate
+
+if USB_CONFIGFS_F_SUBSET = y || USB_G_ETH_REQ_F_SUBSET = y ||
USB_G_FUNCTIONFS_REQ_F_SUBSET = y
+config USB_F_SUBSET_SELECTOR
+ tristate
+ default y
+ select USB_F_SUBSET
+ select USB_F_SUBSET_REQ_U_ETHER
+endif
+
+if !(USB_CONFIGFS_F_SUBSET = y || USB_G_ETH_REQ_F_SUBSET = y ||
USB_G_FUNCTIONFS_REQ_F_SUBSET = y) && (USB_CONFIGFS_F_SUBSET = m ||
USB_G_ETH_REQ_F_SUBSET = m || USB_G_FUNCTIONFS_REQ_F_SUBSET = m)
+config USB_F_SUBSET_SELECTOR
+ tristate
+ default m
+ select USB_F_SUBSET
+ select USB_F_SUBSET_REQ_U_ETHER
+endif
+
config USB_F_RNDIS
tristate
+# Just a dummy config which indicates that eth gadget requires RNDIS in
particular state
+config USB_G_ETH_REQ_F_RNDIS
+ tristate
+
+# Just a dummy config which indicates that functionfs gadget requires RNDIS in
particular state
+config USB_G_FUNCTIONFS_REQ_F_RNDIS
+ tristate
+
+# Just a dummy config which indicates that multi gadget requires RNDIS in
particular state
+config USB_G_MULTI_REQ_F_RNDIS
+ tristate
+
+if USB_CONFIGFS_F_RNDIS = y || USB_G_ETH_REQ_F_RNDIS = y ||
USB_G_FUNCTIONFS_REQ_F_RNDIS = y || USB_G_MULTI_REQ_F_RNDIS = y
+config USB_F_RNDIS_SELECTOR
+ tristate
+ default y
+ select USB_F_RNDIS
+ select USB_F_RNDIS_REQ_U_ETHER
+endif
+
+if !(USB_CONFIGFS_F_RNDIS = y || USB_G_ETH_REQ_F_RNDIS = y ||
USB_G_FUNCTIONFS_REQ_F_RNDIS = y || USB_G_MULTI_REQ_F_RNDIS = y) &&
(USB_CONFIGFS_F_RNDIS = m || USB_G_ETH_REQ_F_RNDIS = m ||
USB_G_FUNCTIONFS_REQ_F_RNDIS = m || USB_G_MULTI_REQ_F_RNDIS = m)
+config USB_F_RNDIS_SELECTOR
+ tristate
+ default m
+ select USB_F_RNDIS
+ select USB_F_RNDIS_REQ_U_ETHER
+endif
+
config USB_F_MASS_STORAGE
tristate
+# Just a dummy config which indicates that mass storage gadget requires
MASS_STORAGE in particular state
+config USB_G_MASS_STORAGE_REQ_F_MASS_STORAGE
+ tristate
+
+# Just a dummy config which indicates that nokia gadget requires MASS_STORAGE
in particular state
+config USB_G_NOKIA_REQ_F_MASS_STORAGE
+ tristate
+
+# Just a dummy config which indicates that acm_ms gadget requires RNDIS in
particular state
+config USB_G_ACM_MS_REQ_F_MASS_STORAGE
+ tristate
+
+# Just a dummy config which indicates that multi gadget requires MASS_STORAGE
in particular state
+config USB_G_MULTI_REQ_F_MASS_STORAGE
+ tristate
+
+if USB_CONFIGFS_F_MASS_STORAGE = y || USB_G_MASS_STORAGE_REQ_F_MASS_STORAGE =
y || USB_G_NOKIA_REQ_F_MASS_STORAGE = y || USB_G_ACM_MS_REQ_F_MASS_STORAGE =
y|| USB_G_MULTI_REQ_F_MASS_STORAGE = y
+config USB_F_MASS_STORAGE_SELECTOR
+ tristate
+ default y
+ select USB_F_MASS_STORAGE
+endif
+
+if !(USB_CONFIGFS_F_MASS_STORAGE = y || USB_G_MASS_STORAGE_REQ_F_MASS_STORAGE
= y || USB_G_NOKIA_REQ_F_MASS_STORAGE = y || USB_G_ACM_MS_REQ_F_MASS_STORAGE =
y || USB_G_MULTI_REQ_F_MASS_STORAGE = y) && (USB_CONFIGFS_F_MASS_STORAGE = m ||
USB_G_MASS_STORAGE_REQ_F_MASS_STORAGE = m || USB_G_NOKIA_REQ_F_MASS_STORAGE = m
|| USB_G_ACM_MS_REQ_F_MASS_STORAGE = y ||USB_G_MULTI_REQ_F_MASS_STORAGE = m)
+config USB_F_MASS_STORAGE_SELECTOR
+ tristate
+ default m
+ select USB_F_MASS_STORAGE
+endif
+
config USB_F_FS
tristate
+# Just a dummy config which indicates that functionfs gadget requires F_FS in
particular state
+config USB_G_FUNCTIONFS_REQ_F_FS
+ tristate
+
+if USB_CONFIGFS_F_FS = y || USB_G_FUNCTIONFS_REQ_F_FS = y
+config USB_F_FS_SELECTOR
+ tristate
+ default y
+ select USB_F_FS
+endif
+
+if !(USB_CONFIGFS_F_FS = y || USB_G_FUNCTIONFS_REQ_F_FS = y) &&
(USB_CONFIGFS_F_FS = m || USB_G_FUNCTIONFS_REQ_F_FS = m)
+config USB_F_FS_SELECTOR
+ tristate
+ default m
+ select USB_F_FS
+endif
+
config USB_F_UAC1
tristate
+# Just a dummy config which indicates that audio gadget requires UAC1 in
particular state
+config USB_G_AUDIO_REQ_F_UAC1
+ tristate
+
+if USB_CONFIGFS_F_UAC1 = y || USB_G_AUDIO_REQ_F_UAC1 = y
+config USB_F_UAC1_SELECTOR
+ tristate
+ default y
+ select USB_F_UAC1
+ select SND_PCM
+endif
+
+if !(USB_CONFIGFS_F_UAC1 = y || USB_G_AUDIO_REQ_F_UAC1 = y) &&
(USB_CONFIGFS_F_UAC1 = m || USB_G_AUDIO_REQ_F_UAC1 = m)
+config USB_F_UAC1_SELECTOR
+ tristate
+ default m
+ select USB_F_UAC1
+ select SND_PCM
+endif
+
config USB_F_UAC2
tristate
+# Just a dummy config which indicates that audio gadget requires UAC2 in
particular state
+config USB_G_AUDIO_REQ_F_UAC2
+ tristate
+
+if USB_CONFIGFS_F_UAC2 = y || USB_G_AUDIO_REQ_F_UAC2 = y
+config USB_F_UAC2_SELECTOR
+ tristate
+ default y
+ select USB_F_UAC2
+ select SND_PCM
+endif
+
+if !(USB_CONFIGFS_F_UAC2 = y || USB_G_AUDIO_REQ_F_UAC2 = y) &&
(USB_CONFIGFS_F_UAC2 = m || USB_G_AUDIO_REQ_F_UAC2 = m)
+config USB_F_UAC2_SELECTOR
+ tristate
+ default m
+ select USB_F_UAC2
+ select SND_PCM
+endif
+
config USB_F_UVC
tristate
+# Just a dummy config which indicates that webcam gadget requires UVC in
particular state
+config USB_G_WEBCAM_REQ_F_UVC
+ tristate
+
+if USB_CONFIGFS_F_UVC = y || USB_G_WEBCAM_REQ_F_UVC = y
+config USB_F_UVC_SELECTOR
+ tristate
+ default y
+ select USB_F_UVC
+ select VIDEOBUF2_VMALLOC
+endif
+
+if !(USB_CONFIGFS_F_UVC = y || USB_G_WEBCAM_REQ_F_UVC = y) &&
(USB_CONFIGFS_F_UVC = m || USB_G_WEBCAM_REQ_F_UVC = m)
+config USB_F_UVC_SELECTOR
+ tristate
+ default m
+ select USB_F_UVC
+ select VIDEOBUF2_VMALLOC
+endif
+
config USB_F_MIDI
tristate
+# Just a dummy config which indicates that midi gadget requires MIDI in
particular state
+config USB_G_MIDI_REQ_F_MIDI
+ tristate
+
+if USB_CONFIGFS_F_MIDI = y || USB_G_MIDI_REQ_F_MIDI = y
+config USB_F_MIDI_SELECTOR
+ tristate
+ default y
+ select USB_F_MIDI
+ select SND_RAWMIDI
+endif
+
+if !(USB_CONFIGFS_F_MIDI = y || USB_G_MIDI_REQ_F_MIDI = y) &&
(USB_CONFIGFS_F_MIDI = m || USB_G_MIDI_REQ_F_MIDI = m)
+config USB_F_MIDI_SELECTOR
+ tristate
+ default m
+ select USB_F_MIDI
+ select SND_RAWMIDI
+endif
+
config USB_F_HID
tristate
+# Just a dummy config which indicates that hid gadget requires HID in
particular state
+config USB_G_HID_REQ_F_HID
+ tristate
+
+if USB_CONFIGFS_F_HID = y || USB_G_HID_REQ_F_HID = y
+config USB_F_HID_SELECTOR
+ tristate
+ default y
+ select USB_F_HID
+endif
+
+if !(USB_CONFIGFS_F_HID = y || USB_G_HID_REQ_F_HID = y) && (USB_CONFIGFS_F_HID
= m || USB_G_HID_REQ_F_HID = m)
+config USB_F_HID_SELECTOR
+ tristate
+ default m
+ select USB_F_HID
+endif
+
config USB_F_PRINTER
tristate
+# Just a dummy config which indicates that printer gadget requires PRINTER in
particular state
+config USB_G_PRINTER_REQ_F_PRINTER
+ tristate
+
+if USB_CONFIGFS_F_PRINTER = y || USB_G_PRINTER_REQ_F_PRINTER = y
+config USB_F_PRINTER_SELECTOR
+ tristate
+ default y
+ select USB_F_PRINTER
+endif
+
+if !(USB_CONFIGFS_F_PRINTER = y || USB_G_PRINTER_REQ_F_PRINTER = y) &&
(USB_CONFIGFS_F_PRINTER = m || USB_G_PRINTER_REQ_F_PRINTER = m)
+config USB_F_PRINTER_SELECTOR
+ tristate
+ default m
+ select USB_F_PRINTER
+endif
+
config USB_F_TCM
tristate
-choice
- tristate "USB Gadget Drivers"
- default USB_ETH
- help
- A Linux "Gadget Driver" talks to the USB Peripheral Controller
- driver through the abstract "gadget" API. Some other operating
- systems call these "client" drivers, of which "class drivers"
- are a subset (implementing a USB device class specification).
- A gadget driver implements one or more USB functions using
- the peripheral hardware.
-
- Gadget drivers are hardware-neutral, or "platform independent",
- except that they sometimes must understand quirks or limitations
- of the particular controllers they work with. For example, when
- a controller doesn't support alternate configurations or provide
- enough of the right types of endpoints, the gadget driver might
- not be able work with that controller, or might need to implement
- a less common variant of a device class protocol.
-
-# this first set of drivers all depend on bulk-capable hardware.
-
-config USB_CONFIGFS
- tristate "USB functions configurable through configfs"
- select USB_LIBCOMPOSITE
- help
- A Linux USB "gadget" can be set up through configfs.
- If this is the case, the USB functions (which from the host's
- perspective are seen as interfaces) and configurations are
- specified simply by creating appropriate directories in configfs.
- Associating functions with configurations is done by creating
- appropriate symbolic links.
- For more information see Documentation/usb/gadget_configfs.txt.
-
-config USB_CONFIGFS_SERIAL
- bool "Generic serial bulk in/out"
- depends on USB_CONFIGFS
+# Just a dummy config which indicates that tcm gadget requires TCM in
particular state
+config USB_G_TCM_REQ_F_TCM
+ tristate
+
+if USB_CONFIGFS_F_TCM = y || USB_G_TCM_REQ_F_TCM = y
+config USB_F_TCM_SELECTOR
+ tristate
+ default y
+ select USB_F_TCM
+endif
+
+if !(USB_CONFIGFS_F_TCM = y || USB_G_TCM_REQ_F_TCM = y) && (USB_CONFIGFS_F_TCM
= m || USB_G_TCM_REQ_F_TCM = m)
+config USB_F_TCM_SELECTOR
+ tristate
+ default m
+ select USB_F_TCM
+endif
+
+if USB_LIBCOMPOSITE
+
+menu "USB Functions"
+
+config USB_CONFIGFS_F_SERIAL
+ tristate "Generic serial bulk in/out"
+ depends on USB_LIBCOMPOSITE
depends on TTY
- select USB_U_SERIAL
- select USB_F_SERIAL
help
The function talks to the Linux-USB generic serial driver.
-config USB_CONFIGFS_ACM
- bool "Abstract Control Model (CDC ACM)"
- depends on USB_CONFIGFS
+config USB_CONFIGFS_F_ACM
+ tristate "Abstract Control Model (CDC ACM)"
+ depends on USB_LIBCOMPOSITE
depends on TTY
- select USB_U_SERIAL
- select USB_F_ACM
help
ACM serial link. This function can be used to interoperate with
MS-Windows hosts or with the Linux-USB "cdc-acm" driver.
-config USB_CONFIGFS_OBEX
- bool "Object Exchange Model (CDC OBEX)"
- depends on USB_CONFIGFS
+config USB_CONFIGFS_F_OBEX
+ tristate "Object Exchange Model (CDC OBEX)"
+ depends on USB_LIBCOMPOSITE
depends on TTY
- select USB_U_SERIAL
- select USB_F_OBEX
help
You will need a user space OBEX server talking to /dev/ttyGS*,
since the kernel itself doesn't implement the OBEX protocol.
-config USB_CONFIGFS_NCM
- bool "Network Control Model (CDC NCM)"
- depends on USB_CONFIGFS
+config USB_CONFIGFS_F_NCM
+ tristate "Network Control Model (CDC NCM)"
+ depends on USB_LIBCOMPOSITE
depends on NET
- select USB_U_ETHER
- select USB_F_NCM
help
NCM is an advanced protocol for Ethernet encapsulation, allows
grouping of several ethernet frames into one USB transfer and
different alignment possibilities.
-config USB_CONFIGFS_ECM
- bool "Ethernet Control Model (CDC ECM)"
- depends on USB_CONFIGFS
+config USB_CONFIGFS_F_ECM
+ tristate "Ethernet Control Model (CDC ECM)"
+ depends on USB_LIBCOMPOSITE
depends on NET
- select USB_U_ETHER
- select USB_F_ECM
help
The "Communication Device Class" (CDC) Ethernet Control Model.
That protocol is often avoided with pure Ethernet adapters, in
favor of simpler vendor-specific hardware, but is widely
supported by firmware for smart network devices.
-config USB_CONFIGFS_ECM_SUBSET
- bool "Ethernet Control Model (CDC ECM) subset"
- depends on USB_CONFIGFS
+config USB_CONFIGFS_F_SUBSET
+ tristate "Ethernet Control Model (CDC ECM) subset"
+ depends on USB_LIBCOMPOSITE
depends on NET
- select USB_U_ETHER
- select USB_F_SUBSET
help
On hardware that can't implement the full protocol,
a simple CDC subset is used, placing fewer demands on USB.
-config USB_CONFIGFS_RNDIS
- bool "RNDIS"
- depends on USB_CONFIGFS
+config USB_CONFIGFS_F_RNDIS
+ tristate "RNDIS"
+ depends on USB_LIBCOMPOSITE
depends on NET
- select USB_U_ETHER
- select USB_F_RNDIS
help
Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
and Microsoft provides redistributable binary RNDIS drivers for
@@ -320,12 +773,10 @@ config USB_CONFIGFS_RNDIS
XP, you'll need to download drivers from Microsoft's website; a URL
is given in comments found in that info file.
-config USB_CONFIGFS_EEM
- bool "Ethernet Emulation Model (EEM)"
- depends on USB_CONFIGFS
+config USB_CONFIGFS_F_EEM
+ tristate "Ethernet Emulation Model (EEM)"
+ depends on USB_LIBCOMPOSITE
depends on NET
- select USB_U_ETHER
- select USB_F_EEM
help
CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
and therefore can be supported by more hardware. Technically ECM and
@@ -335,31 +786,27 @@ config USB_CONFIGFS_EEM
ethernet over USB. For Linux gadgets, however, the interface with
the host is the same (a usbX device), so the differences are minimal.
-config USB_CONFIGFS_PHONET
- bool "Phonet protocol"
- depends on USB_CONFIGFS
+config USB_CONFIGFS_F_PHONET
+ tristate "Phonet protocol"
+ depends on USB_LIBCOMPOSITE
depends on NET
depends on PHONET
- select USB_U_ETHER
- select USB_F_PHONET
help
The Phonet protocol implementation for USB device.
-config USB_CONFIGFS_MASS_STORAGE
- bool "Mass storage"
- depends on USB_CONFIGFS
+config USB_CONFIGFS_F_MASS_STORAGE
+ tristate "Mass storage"
+ depends on USB_LIBCOMPOSITE
depends on BLOCK
- select USB_F_MASS_STORAGE
help
The Mass Storage Gadget acts as a USB Mass Storage disk drive.
As its storage repository it can use a regular file or a block
device (in much the same way as the "loop" device driver),
specified as a module parameter or sysfs option.
-config USB_CONFIGFS_F_LB_SS
- bool "Loopback and sourcesink function (for testing)"
- depends on USB_CONFIGFS
- select USB_F_SS_LB
+config USB_CONFIGFS_F_SS_LB
+ tristate "Loopback and sourcesink function (for testing)"
+ depends on USB_LIBCOMPOSITE
help
Loopback function loops back a configurable number of transfers.
Sourcesink function either sinks and sources bulk data.
@@ -370,9 +817,8 @@ config USB_CONFIGFS_F_LB_SS
and its driver through a basic set of functional tests.
config USB_CONFIGFS_F_FS
- bool "Function filesystem (FunctionFS)"
- depends on USB_CONFIGFS
- select USB_F_FS
+ tristate "Function filesystem (FunctionFS)"
+ depends on USB_LIBCOMPOSITE
help
The Function Filesystem (FunctionFS) lets one create USB
composite functions in user space in the same way GadgetFS
@@ -382,12 +828,9 @@ config USB_CONFIGFS_F_FS
mass storage) and other are implemented in user space.
config USB_CONFIGFS_F_UAC1
- bool "Audio Class 1.0"
- depends on USB_CONFIGFS
+ tristate "Audio Class 1.0"
+ depends on USB_LIBCOMPOSITE
depends on SND
- select USB_LIBCOMPOSITE
- select SND_PCM
- select USB_F_UAC1
help
This Audio function implements 1 AudioControl interface,
1 AudioStreaming Interface each for USB-OUT and USB-IN.
@@ -395,12 +838,9 @@ config USB_CONFIGFS_F_UAC1
on the device.
config USB_CONFIGFS_F_UAC2
- bool "Audio Class 2.0"
- depends on USB_CONFIGFS
+ tristate "Audio Class 2.0"
+ depends on USB_LIBCOMPOSITE
depends on SND
- select USB_LIBCOMPOSITE
- select SND_PCM
- select USB_F_UAC2
help
This Audio function is compatible with USB Audio Class
specification 2.0. It implements 1 AudioControl interface,
@@ -413,12 +853,9 @@ config USB_CONFIGFS_F_UAC2
wants as audio data to the USB Host.
config USB_CONFIGFS_F_MIDI
- bool "MIDI function"
- depends on USB_CONFIGFS
+ tristate "MIDI function"
+ depends on USB_LIBCOMPOSITE
depends on SND
- select USB_LIBCOMPOSITE
- select SND_RAWMIDI
- select USB_F_MIDI
help
The MIDI Function acts as a USB Audio device, with one MIDI
input and one MIDI output. These MIDI jacks appear as
@@ -427,9 +864,8 @@ config USB_CONFIGFS_F_MIDI
ALSA's aconnect utility etc.
config USB_CONFIGFS_F_HID
- bool "HID function"
- depends on USB_CONFIGFS
- select USB_F_HID
+ tristate "HID function"
+ depends on USB_LIBCOMPOSITE
help
The HID function driver provides generic emulation of USB
Human Interface Devices (HID).
@@ -437,20 +873,17 @@ config USB_CONFIGFS_F_HID
For more information, see Documentation/usb/gadget_hid.txt.
config USB_CONFIGFS_F_UVC
- bool "USB Webcam function"
- depends on USB_CONFIGFS
+ tristate "USB Webcam function"
+ depends on USB_LIBCOMPOSITE
depends on VIDEO_DEV
- select VIDEOBUF2_VMALLOC
- select USB_F_UVC
help
The Webcam function acts as a composite USB Audio and Video Class
device. It provides a userspace API to process UVC control requests
and stream video data to the host.
config USB_CONFIGFS_F_PRINTER
- bool "Printer function"
- select USB_F_PRINTER
- depends on USB_CONFIGFS
+ tristate "Printer function"
+ depends on USB_LIBCOMPOSITE
help
The Printer function channels data between the USB host and a
userspace program driving the print engine. The user space
@@ -462,11 +895,9 @@ config USB_CONFIGFS_F_PRINTER
which includes sample code for accessing the device file.
config USB_CONFIGFS_F_TCM
- bool "USB Gadget Target Fabric"
+ tristate "USB Gadget Target Fabric"
+ depends on USB_LIBCOMPOSITE
depends on TARGET_CORE
- depends on USB_CONFIGFS
- select USB_LIBCOMPOSITE
- select USB_F_TCM
help
This fabric is a USB gadget component. Two USB protocols are
supported that is BBB or BOT (Bulk Only Transport) and UAS
@@ -475,8 +906,9 @@ config USB_CONFIGFS_F_TCM
Both protocols can work on USB2.0 and USB3.0.
UAS utilizes the USB 3.0 feature called streams support.
-source "drivers/usb/gadget/legacy/Kconfig"
+endmenu
-endchoice
+source "drivers/usb/gadget/legacy/Kconfig"
+endif # USB_LIBCOMPOSITE
endif # USB_GADGET
diff --git a/drivers/usb/gadget/legacy/Kconfig
b/drivers/usb/gadget/legacy/Kconfig
index 0b36878..827747a 100644
--- a/drivers/usb/gadget/legacy/Kconfig
+++ b/drivers/usb/gadget/legacy/Kconfig
@@ -13,10 +13,12 @@
# both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG).
#
+menu "Legacy USB Gadget Drivers"
+
config USB_ZERO
tristate "Gadget Zero (DEVELOPMENT)"
- select USB_LIBCOMPOSITE
- select USB_F_SS_LB
+ depends on USB_LIBCOMPOSITE
+ select USB_G_ZERO_REQ_F_SS_LB
help
Gadget Zero is a two-configuration device. It either sinks and
sources bulk data; or it loops back a configurable number of
@@ -52,10 +54,9 @@ config USB_ZERO_HNPTEST
config USB_AUDIO
tristate "Audio Gadget"
depends on SND
- select USB_LIBCOMPOSITE
- select SND_PCM
- select USB_F_UAC1 if GADGET_UAC1
- select USB_F_UAC2 if !GADGET_UAC1
+ depends on USB_LIBCOMPOSITE
+ select USB_G_AUDIO_REQ_F_UAC1 if GADGET_UAC1
+ select USB_G_AUDIO_REQ_F_UAC2 if !GADGET_UAC1
help
This Gadget Audio driver is compatible with USB Audio Class
specification 2.0. It implements 1 AudioControl interface,
@@ -83,10 +84,9 @@ config GADGET_UAC1
config USB_ETH
tristate "Ethernet Gadget (with CDC Ethernet support)"
depends on NET
- select USB_LIBCOMPOSITE
- select USB_U_ETHER
- select USB_F_ECM
- select USB_F_SUBSET
+ depends on USB_LIBCOMPOSITE
+ select USB_G_ETH_REQ_F_ECM
+ select USB_G_ETH_REQ_F_SUBSET
select CRC32
help
This driver implements Ethernet style communication, in one of
@@ -121,8 +121,8 @@ config USB_ETH
config USB_ETH_RNDIS
bool "RNDIS support"
depends on USB_ETH
- select USB_LIBCOMPOSITE
- select USB_F_RNDIS
+ depends on USB_LIBCOMPOSITE
+ select USB_G_ETH_REQ_F_RNDIS
default y
help
Microsoft Windows XP bundles the "Remote NDIS" (RNDIS) protocol,
@@ -141,8 +141,8 @@ config USB_ETH_RNDIS
config USB_ETH_EEM
bool "Ethernet Emulation Model (EEM) support"
depends on USB_ETH
- select USB_LIBCOMPOSITE
- select USB_F_EEM
+ depends on USB_LIBCOMPOSITE
+ select USB_G_ETH_REQ_F_EEM
default n
help
CDC EEM is a newer USB standard that is somewhat simpler than CDC ECM
@@ -159,9 +159,8 @@ config USB_ETH_EEM
config USB_G_NCM
tristate "Network Control Model (NCM) support"
depends on NET
- select USB_LIBCOMPOSITE
- select USB_U_ETHER
- select USB_F_NCM
+ depends on USB_LIBCOMPOSITE
+ select USB_G_NCM_REQ_F_NCM
select CRC32
help
This driver implements USB CDC NCM subclass standard. NCM is
@@ -186,8 +185,8 @@ config USB_GADGETFS
config USB_FUNCTIONFS
tristate "Function Filesystem"
- select USB_LIBCOMPOSITE
- select USB_F_FS
+ depends on USB_LIBCOMPOSITE
+ select USB_G_FUNCTIONFS_REQ_F_FS
select USB_FUNCTIONFS_GENERIC if !(USB_FUNCTIONFS_ETH ||
USB_FUNCTIONFS_RNDIS)
help
The Function Filesystem (FunctionFS) lets one create USB
@@ -206,9 +205,8 @@ config USB_FUNCTIONFS
config USB_FUNCTIONFS_ETH
bool "Include configuration with CDC ECM (Ethernet)"
depends on USB_FUNCTIONFS && NET
- select USB_U_ETHER
- select USB_F_ECM
- select USB_F_SUBSET
+ select USB_G_FUNCTIONFS_REQ_F_ECM
+ select USB_G_FUNCTIONFS_REQ_F_SUBSET
help
Include a configuration with CDC ECM function (Ethernet) and the
Function Filesystem.
@@ -216,8 +214,7 @@ config USB_FUNCTIONFS_ETH
config USB_FUNCTIONFS_RNDIS
bool "Include configuration with RNDIS (Ethernet)"
depends on USB_FUNCTIONFS && NET
- select USB_U_ETHER
- select USB_F_RNDIS
+ select USB_G_FUNCTIONFS_REQ_F_RNDIS
help
Include a configuration with RNDIS function (Ethernet) and the
Filesystem.
@@ -231,8 +228,8 @@ config USB_FUNCTIONFS_GENERIC
config USB_MASS_STORAGE
tristate "Mass Storage Gadget"
depends on BLOCK
- select USB_LIBCOMPOSITE
- select USB_F_MASS_STORAGE
+ depends on USB_LIBCOMPOSITE
+ select USB_G_MASS_STORAGE_REQ_F_MASS_STORAGE
help
The Mass Storage Gadget acts as a USB Mass Storage disk drive.
As its storage repository it can use a regular file or a block
@@ -248,8 +245,8 @@ config USB_MASS_STORAGE
config USB_GADGET_TARGET
tristate "USB Gadget Target Fabric Module"
depends on TARGET_CORE
- select USB_LIBCOMPOSITE
- select USB_F_TCM
+ depends on USB_LIBCOMPOSITE
+ select USB_G_TCM_REQ_F_TCM
help
This fabric is an USB gadget. Two USB protocols are supported that is
BBB or BOT (Bulk Only Transport) and UAS (USB Attached SCSI). BOT is
@@ -260,11 +257,10 @@ config USB_GADGET_TARGET
config USB_G_SERIAL
tristate "Serial Gadget (with CDC ACM and CDC OBEX support)"
depends on TTY
- select USB_U_SERIAL
- select USB_F_ACM
- select USB_F_SERIAL
- select USB_F_OBEX
- select USB_LIBCOMPOSITE
+ select USB_G_SERIAL_REQ_F_ACM
+ select USB_G_SERIAL_REQ_F_SERIAL
+ select USB_G_SERIAL_REQ_F_OBEX
+ depends on USB_LIBCOMPOSITE
help
The Serial Gadget talks to the Linux-USB generic serial driver.
This driver supports a CDC-ACM module option, which can be used
@@ -285,9 +281,8 @@ config USB_G_SERIAL
config USB_MIDI_GADGET
tristate "MIDI Gadget"
depends on SND
- select USB_LIBCOMPOSITE
- select SND_RAWMIDI
- select USB_F_MIDI
+ depends on USB_LIBCOMPOSITE
+ select USB_G_MIDI_REQ_F_MIDI
help
The MIDI Gadget acts as a USB Audio device, with one MIDI
input and one MIDI output. These MIDI jacks appear as
@@ -300,8 +295,8 @@ config USB_MIDI_GADGET
config USB_G_PRINTER
tristate "Printer Gadget"
- select USB_LIBCOMPOSITE
- select USB_F_PRINTER
+ depends on USB_LIBCOMPOSITE
+ select USB_G_PRINTER_REQ_F_PRINTER
help
The Printer Gadget channels data between the USB host and a
userspace program driving the print engine. The user space
@@ -320,11 +315,9 @@ if TTY
config USB_CDC_COMPOSITE
tristate "CDC Composite Device (Ethernet and ACM)"
depends on NET
- select USB_LIBCOMPOSITE
- select USB_U_SERIAL
- select USB_U_ETHER
- select USB_F_ACM
- select USB_F_ECM
+ depends on USB_LIBCOMPOSITE
+ select USB_G_CDC_COMPOSITE_REQ_F_ACM
+ select USB_G_CDC_COMPOSITE_REQ_F_ECM
help
This driver provides two functions in one configuration:
a CDC Ethernet (ECM) link, and a CDC ACM (serial port) link.
@@ -340,14 +333,12 @@ config USB_G_NOKIA
tristate "Nokia composite gadget"
depends on PHONET
depends on BLOCK
- select USB_LIBCOMPOSITE
- select USB_U_SERIAL
- select USB_U_ETHER
- select USB_F_ACM
- select USB_F_OBEX
- select USB_F_PHONET
- select USB_F_ECM
- select USB_F_MASS_STORAGE
+ depends on USB_LIBCOMPOSITE
+ select USB_G_NOKIA_REQ_F_ACM
+ select USB_G_NOKIA_REQ_F_OBEX
+ select USB_G_NOKIA_REQ_F_PHONET
+ select USB_G_NOKIA_REQ_F_ECM
+ select USB_G_NOKIA_REQ_F_MASS_STORAGE
help
The Nokia composite gadget provides support for acm, obex
and phonet in only one composite gadget driver.
@@ -358,10 +349,9 @@ config USB_G_NOKIA
config USB_G_ACM_MS
tristate "CDC Composite Device (ACM and mass storage)"
depends on BLOCK
- select USB_LIBCOMPOSITE
- select USB_U_SERIAL
- select USB_F_ACM
- select USB_F_MASS_STORAGE
+ depends on USB_LIBCOMPOSITE
+ select USB_G_ACM_MS_REQ_F_ACM
+ select USB_G_ACM_MS_F_MASS_STORAGE
help
This driver provides two functions in one configuration:
a mass storage, and a CDC ACM (serial port) link.
@@ -373,11 +363,9 @@ config USB_G_MULTI
tristate "Multifunction Composite Gadget"
depends on BLOCK && NET
select USB_G_MULTI_CDC if !USB_G_MULTI_RNDIS
- select USB_LIBCOMPOSITE
- select USB_U_SERIAL
- select USB_U_ETHER
- select USB_F_ACM
- select USB_F_MASS_STORAGE
+ depends on USB_LIBCOMPOSITE
+ select USB_G_MULTI_REQ_F_ACM
+ select USB_G_MULTI_REQ_F_MASS_STORAGE
help
The Multifunction Composite Gadget provides Ethernet (RNDIS
and/or CDC Ethernet), mass storage and ACM serial link
@@ -396,7 +384,7 @@ config USB_G_MULTI
config USB_G_MULTI_RNDIS
bool "RNDIS + CDC Serial + Storage configuration"
depends on USB_G_MULTI
- select USB_F_RNDIS
+ select USB_G_MULTI_REQ_F_RNDIS
default y
help
This option enables a configuration with RNDIS, CDC Serial and
@@ -410,7 +398,7 @@ config USB_G_MULTI_CDC
bool "CDC Ethernet + CDC Serial + Storage configuration"
depends on USB_G_MULTI
default n
- select USB_F_ECM
+ select USB_G_MULTI_REQ_F_ECM
help
This option enables a configuration with CDC Ethernet (ECM), CDC
Serial and Mass Storage functions available in the Multifunction
@@ -422,8 +410,8 @@ endif # TTY
config USB_G_HID
tristate "HID Gadget"
- select USB_LIBCOMPOSITE
- select USB_F_HID
+ depends on USB_LIBCOMPOSITE
+ select USB_G_HID_REQ_F_HID
help
The HID gadget driver provides generic emulation of USB
Human Interface Devices (HID).
@@ -438,7 +426,7 @@ config USB_G_HID
config USB_G_DBGP
tristate "EHCI Debug Device Gadget"
depends on TTY
- select USB_LIBCOMPOSITE
+ depends on USB_LIBCOMPOSITE
help
This gadget emulates an EHCI Debug device. This is useful when you
want
to interact with an EHCI Debug Port.
@@ -459,7 +447,7 @@ config USB_G_DBGP_PRINTK
config USB_G_DBGP_SERIAL
depends on USB_G_DBGP
- select USB_U_SERIAL
+ select USB_G_DBG_REQ_U_SERIAL
bool "serial"
help
Userland can interact using /dev/ttyGSxxx.
@@ -471,9 +459,8 @@ endif
config USB_G_WEBCAM
tristate "USB Webcam Gadget"
depends on VIDEO_DEV
- select USB_LIBCOMPOSITE
- select VIDEOBUF2_VMALLOC
- select USB_F_UVC
+ depends on USB_LIBCOMPOSITE
+ select USB_G_WEBCAM_REQ_F_UVC
help
The Webcam Gadget acts as a composite USB Audio and Video Class
device. It provides a userspace API to process UVC control requests
@@ -481,3 +468,4 @@ config USB_G_WEBCAM
Say "y" to link the driver statically, or "m" to build a
dynamically linked module called "g_webcam".
+endmenu
--
1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html