lkml.org 
[lkml]   [2016]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v7 03/14] usb: hcd.h: Add OTG to HCD interface
    On Mon, May 02, 2016 at 03:18:46PM +0300, Roger Quadros wrote:
    > The OTG core will use struct otg_hcd_ops to interface
    > with the HCD controller.
    >
    > The main purpose of this interface is to avoid directly
    > calling HCD APIs from the OTG core as they
    > wouldn't be defined in the built-in symbol table if
    > CONFIG_USB is m.
    >
    > Signed-off-by: Roger Quadros <rogerq@ti.com>
    > Acked-by: Peter Chen <peter.chen@nxp.com>

    Roger, after thinking more, I still think current dependency between
    OTG, HCD and gadget are too complicated. Since the OTG can't work
    if it is built as module, I suggest letting OTG depends on HCD &&
    USB_GADGET, and it is a boolean, in that case, we don't need to
    export any HCD and gadget ops, things will be much simpler.
    What's your opinion?

    Peter

    > ---
    > include/linux/usb/hcd.h | 24 ++++++++++++++++++++++++
    > 1 file changed, 24 insertions(+)
    >
    > diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
    > index b98f831..861ccaa 100644
    > --- a/include/linux/usb/hcd.h
    > +++ b/include/linux/usb/hcd.h
    > @@ -399,6 +399,30 @@ struct hc_driver {
    >
    > };
    >
    > +/**
    > + * struct otg_hcd_ops - Interface between OTG core and HCD
    > + *
    > + * Provided by the HCD core to allow the OTG core to interface with the HCD
    > + *
    > + * @add: function to add the HCD
    > + * @remove: function to remove the HCD
    > + * @usb_bus_start_enum: function to immediately start bus enumeration
    > + * @usb_control_msg: function to build and send of a control urb
    > + * @usb_hub_find_child: function to get pointer to the child device
    > + */
    > +struct otg_hcd_ops {
    > + int (*add)(struct usb_hcd *hcd,
    > + unsigned int irqnum, unsigned long irqflags);
    > + void (*remove)(struct usb_hcd *hcd);
    > + int (*usb_bus_start_enum)(struct usb_bus *bus, unsigned int port_num);
    > + int (*usb_control_msg)(struct usb_device *dev, unsigned int pipe,
    > + __u8 request, __u8 requesttype, __u16 value,
    > + __u16 index, void *data, __u16 size,
    > + int timeout);
    > + struct usb_device * (*usb_hub_find_child)(struct usb_device *hdev,
    > + int port1);
    > +};
    > +
    > static inline int hcd_giveback_urb_in_bh(struct usb_hcd *hcd)
    > {
    > return hcd->driver->flags & HCD_BH;
    > --
    > 2.7.4
    >
    > --
    > To unsubscribe from this list: send the line "unsubscribe linux-usb" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at http://vger.kernel.org/majordomo-info.html

    --

    Best Regards,
    Peter Chen

    \
     
     \ /
      Last update: 2016-05-06 12:01    [W:4.050 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site