On Mon, Jun 06, 2016 at 09:40:33PM +0200, Krzysztof Opasiak wrote: > 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 If that, what the user will expect if choosing multiple gadgets? Eg, if he chooses g_ncm and g_mass_storage, will he expect his udc has both mass_storage and ncm function, but it is not the fact, only the first gadget function will work. Peter > 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 <k.opasiak@xxxxxxxxxxx> > --- > 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 majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Best Regards, Peter Chen -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html