On 20/06/16 10:21, Felipe Balbi wrote: > > Hi, > > Roger Quadros <rogerq@xxxxxx> writes: >> 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 <rogerq@xxxxxx> >> --- >> 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. cheers, -roger
Attachment:
signature.asc
Description: OpenPGP digital signature