Re: [PATCH v10 06/14] usb: gadget.h: Add OTG to gadget interface
From: Felipe Balbi <hidden>
Date: 2016-06-20 09:25:48
Also in:
linux-omap, lkml
Hi, Roger Quadros [off-list ref] writes:
quoted
quoted
quoted
Roger Quadros [off-list ref] writes:quoted
The OTG core will use struct otg_gadget_ops to start/stop the gadget controller. The main purpose of this interface is to avoid directly calling usb_gadget_start/stop() from the OTG core as they wouldn't be defined in the built-in symbol table if CONFIG_USB_GADGET is m. Signed-off-by: Roger Quadros <redacted> --- include/linux/usb/gadget.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index 2dd9e6b..f4fc0aa 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h@@ -639,6 +639,22 @@ struct usb_gadget_driver { }; +/*-------------------------------------------------------------------------*/ + +/** + * struct otg_gadget_ops - Interface between OTG core and gadget + * + * Provided by the gadget core to allow the OTG core to start/stop the gadget + * + * @start: function to start the gadget + * @stop: function to stop the gadget + * @connect_control: function to connect/disconnect from the bus + */ +struct otg_gadget_ops { + int (*start)(struct usb_gadget *gadget); + int (*stop)(struct usb_gadget *gadget); + int (*connect_control)(struct usb_gadget *gadget, bool connect); +};you shouldn't need these at all. They are already part of the gadget framework as ->udc_start(), ->udc_stop() and ->pullup()This is to avoid the undefined symbol errors during build when OTG has is built-in because USB (host) is built-in but GADGET is still a module.change your Kconfig dependencies. OTG layer shouldn't be built-in unless both Gadget and Host are built-in.That is only one side of the story. What happens if OTG is (m), Host is (m) but Gadget is (built in). Gadget build will fail because of undefined symbol errors for all of the OTG APIs.
So you created a circular dependency, right? That's not good either. I suggest you clean that up because this is bound to create randconfig build problems in the long run. -- balbi
Attachments
- signature.asc [application/pgp-signature] 818 bytes