Hi, On Mon, Jul 16, 2012 at 03:31:54PM +0200, Marc Kleine-Budde wrote: > On 07/16/2012 03:19 PM, Felipe Balbi wrote: > > Hi, > > > > On Mon, Jul 16, 2012 at 03:10:48PM +0200, Marc Kleine-Budde wrote: > >> Since commit 5e0aa49 usb: chipidea: use generic map/unmap routines, > >> the udc part of the chipidea driver needs the generic usb gadget helper > >> functions. If the chipidea driver with udc support is build into the > >> kernel and usb gadget is build a module, the linking of the kernel > >> fails with: > >> > >> drivers/built-in.o: In function `_hardware_dequeue': > >> drivers/usb/chipidea/udc.c:527: undefined reference to `usb_gadget_unmap_request' > >> drivers/usb/chipidea/udc.c:1269: undefined reference to `usb_gadget_unmap_request' > >> drivers/usb/chipidea/udc.c:1821: undefined reference to `usb_del_gadget_udc' > >> drivers/usb/chipidea/udc.c:443: undefined reference to `usb_gadget_map_request' > >> drivers/usb/chipidea/udc.c:1774: undefined reference to `usb_add_gadget_udc' > >> > >> This patch changes the dependencies, so that udc can only be built-in of the > >> usb gadget is built-in, too. > >> > >> Signed-off-by: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx> > >> Cc: Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx> > >> --- > >> Hello, > >> > >> this patch is based on v3.5-rc7, is this a candidate for 3.5? > >> > >> Another solution would be to "select USB_GADGET".... > > > > no select please ;-) > > Sure :) > > > > >> regards, Marc > >> > >> drivers/usb/chipidea/Kconfig | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/drivers/usb/chipidea/Kconfig b/drivers/usb/chipidea/Kconfig > >> index fd36dc8..9993a66 100644 > >> --- a/drivers/usb/chipidea/Kconfig > >> +++ b/drivers/usb/chipidea/Kconfig > >> @@ -12,7 +12,7 @@ if USB_CHIPIDEA > >> > >> config USB_CHIPIDEA_UDC > >> bool "ChipIdea device controller" > >> - depends on USB_GADGET > >> + depends on USB_GADGET=USB_CHIPIDEA > > This patch says if USB_CHIPIDEA is builtin, so USB_GADGET has to be, too > > > This is not the real problem. The problem is that USB_CHIPIDEA depends > > on USB (which is the Host side USB). So if you make host built-in, you > > can make chipidea built-in regardless of the gadget setting. That's the > > bug you want to solve. > > I don't think so. Have a look at the above mentioned undefined symbols: > "usb_gadget_unmap_request", they are implemented in: > > $git grep usb_gadget_unmap_request | grep EXPORT > drivers/usb/gadget/udc-core.c:EXPORT_SYMBOL_GPL(usb_gadget_unmap_request); of course... that's because chipidea can be built-in while gadget isn't. The bug is exactly allowing chipidea to be built-in with no regards to the gadget side. > CONFIG_USB_CHIPIDEA=y > CONFIG_USB_GADGET=m there you go. Chipidea is built-in and gadget isn't. -- balbi
Attachment:
signature.asc
Description: Digital signature