Re: Enabling multiple gadgets on top of composite driver

From: Felipe Balbi
Date: Fri Apr 13 2012 - 07:00:17 EST


On Fri, Apr 13, 2012 at 06:51:26PM +0800, Bhupesh SHARMA wrote:
> Hi,
>
> I have a query regarding enabling multiple gadgets (like g_webcam, g_zero etc..)
> on top of the Composite driver.
>
> My use case is very simple:
> - I want to expose a USB composite device to a standard USB host, where
> the Composite device supports a webcam gadget + zero gadget + some other gadget..

look at how nokia.c does it.

> On the older kernels like 2.6.27, this was easily possible, but the latest
> gadget code doesn't seem to support the same:
> - I can see that first a 'choicemenu' is provided which allows selection of only
> one gadget at a time.

Answer M instead of Y to "USB Gadget Drivers"

> - The "common" stuff like "composite.c", "epautoconfig.c" have been included in
> each f_* function driver (for e.g. f_uvc.c, f_sourcesink.c, etc..), so even if
> I somehow tweak the 'choicemenu' stuff, I get redeclaration errors.

yeah, that still needs to be cleaned up. The story behind that is very
long.

> What is the best way to enable multiple gadgets (like g_webcam, g_zero
> etc..) on top of the Composite driver or am I missing something here?

Either you want multiple gadgets or you want a composite gadget, what is
it ? If you want a composite gadget, you need to write a small C file
which combines multiple functions together (see nokia.c), if you want
multiple gadget drivers, just make them all modules. I always compile
all gadget drivers as modules and can use any one of them at any time.

--
balbi

Attachment: signature.asc
Description: Digital signature