lkml.org 
[lkml]   [2015]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 16/36] usb: gadget: composite: add usb_function_get_ep() function
    Date
    Introduce function returning endpoint of given index in active altsetting
    of specified interface. It's intended to be used in set_alt() callback
    to obtain endpoints of currently selected altsetting.

    Signed-off-by: Robert Baldyga <r.baldyga@samsung.com>
    ---
    drivers/usb/gadget/composite.c | 33 +++++++++++++++++++++++++++++++++
    include/linux/usb/composite.h | 2 ++
    2 files changed, 35 insertions(+)

    diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
    index d78e63f..d7e7d0b 100644
    --- a/drivers/usb/gadget/composite.c
    +++ b/drivers/usb/gadget/composite.c
    @@ -674,6 +674,39 @@ static int usb_interface_id_to_index(struct usb_function *f, u8 id)
    }

    /**
    + * usb_function_get_ep - obtains endpoint of given index from active
    + * altsetting of given interface
    + * @f: USB function
    + * @i: index of interface in given function
    + * @e: index of endpoint in active altsetting of given interface
    + *
    + * This function is designed to be used in set_alt() callback, when
    + * new altsetting is selected. It allows to obtain endpoints assigned
    + * to altsetting during autoconfig process.
    + *
    + * Returns pointer to endpoint on success or NULL on failure.
    + */
    +struct usb_ep *usb_function_get_ep(struct usb_function *f, int i, int e)
    +{
    + struct usb_composite_altset *altset;
    + int selected_altset;
    +
    + if (!f->descs)
    + return NULL;
    + if (i >= f->descs->intfs_num)
    + return NULL;
    +
    + selected_altset = f->descs->intfs[i]->cur_altset;
    + altset = f->descs->intfs[i]->altsets[selected_altset];
    +
    + if (e >= altset->eps_num)
    + return NULL;
    +
    + return altset->eps[e]->ep;
    +}
    +EXPORT_SYMBOL_GPL(usb_function_get_ep);
    +
    +/**
    * usb_interface_id() - allocate an unused interface ID
    * @config: configuration associated with the interface
    * @function: function handling the interface
    diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h
    index 3838eb6..e12921c 100644
    --- a/include/linux/usb/composite.h
    +++ b/include/linux/usb/composite.h
    @@ -418,6 +418,8 @@ int usb_ep_add_vendor_desc(struct usb_function *f, int i, int a, int e,
    struct usb_descriptor_header *desc);


    +struct usb_ep *usb_function_get_ep(struct usb_function *f, int intf, int ep);
    +
    int usb_interface_id(struct usb_configuration *, struct usb_function *);

    int config_ep_by_speed(struct usb_gadget *g, struct usb_function *f,
    --
    1.9.1


    \
     
     \ /
      Last update: 2015-12-11 12:41    [W:4.047 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site