lkml.org 
[lkml]   [2015]   [Sep]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 18/26] usb: gadget: f_sourcesink: eliminate abuse of ep->driver data
    Date
    Since ep->driver_data is not used for endpoint claiming, neither for
    enabled/disabled state storing, we can reduce number of places where
    we read or modify it's value, as now it has no particular meaning for
    function or framework logic.

    In case of f_sourcesink we only need to store in ep->driver_data pointer
    to struct f_sourcesink, as it's used in source_sink_complete() callback.
    All other uses of ep->driver_data are now meaningless and can be safely
    removed.

    Signed-off-by: Robert Baldyga <r.baldyga@samsung.com>
    ---
    drivers/usb/gadget/function/f_sourcesink.c | 29 +++++++----------------------
    1 file changed, 7 insertions(+), 22 deletions(-)

    diff --git a/drivers/usb/gadget/function/f_sourcesink.c b/drivers/usb/gadget/function/f_sourcesink.c
    index cbfaf86..87817de 100644
    --- a/drivers/usb/gadget/function/f_sourcesink.c
    +++ b/drivers/usb/gadget/function/f_sourcesink.c
    @@ -311,13 +311,9 @@ static void disable_ep(struct usb_composite_dev *cdev, struct usb_ep *ep)
    {
    int value;

    - if (ep->driver_data) {
    - value = usb_ep_disable(ep);
    - if (value < 0)
    - DBG(cdev, "disable %s --> %d\n",
    - ep->name, value);
    - ep->driver_data = NULL;
    - }
    + value = usb_ep_disable(ep);
    + if (value < 0)
    + DBG(cdev, "disable %s --> %d\n", ep->name, value);
    }

    void disable_endpoints(struct usb_composite_dev *cdev,
    @@ -355,12 +351,10 @@ autoconf_fail:
    f->name, cdev->gadget->name);
    return -ENODEV;
    }
    - ss->in_ep->driver_data = cdev; /* claim */

    ss->out_ep = usb_ep_autoconfig(cdev->gadget, &fs_sink_desc);
    if (!ss->out_ep)
    goto autoconf_fail;
    - ss->out_ep->driver_data = cdev; /* claim */

    /* sanity check the isoc module parameters */
    if (isoc_interval < 1)
    @@ -384,13 +378,10 @@ autoconf_fail:
    ss->iso_in_ep = usb_ep_autoconfig(cdev->gadget, &fs_iso_source_desc);
    if (!ss->iso_in_ep)
    goto no_iso;
    - ss->iso_in_ep->driver_data = cdev; /* claim */

    ss->iso_out_ep = usb_ep_autoconfig(cdev->gadget, &fs_iso_sink_desc);
    - if (ss->iso_out_ep) {
    - ss->iso_out_ep->driver_data = cdev; /* claim */
    - } else {
    - ss->iso_in_ep->driver_data = NULL;
    + if (!ss->iso_out_ep) {
    + usb_ep_autoconfig_release(ss->iso_in_ep);
    ss->iso_in_ep = NULL;
    no_iso:
    /*
    @@ -683,7 +674,6 @@ enable_source_sink(struct usb_composite_dev *cdev, struct f_sourcesink *ss,
    fail:
    ep = ss->in_ep;
    usb_ep_disable(ep);
    - ep->driver_data = NULL;
    return result;
    }

    @@ -702,7 +692,6 @@ fail:
    fail2:
    ep = ss->out_ep;
    usb_ep_disable(ep);
    - ep->driver_data = NULL;
    goto fail;
    }

    @@ -724,10 +713,8 @@ fail2:
    if (result < 0) {
    fail3:
    ep = ss->iso_in_ep;
    - if (ep) {
    + if (ep)
    usb_ep_disable(ep);
    - ep->driver_data = NULL;
    - }
    goto fail2;
    }
    }
    @@ -746,7 +733,6 @@ fail3:
    result = source_sink_start_ep(ss, false, true, speed);
    if (result < 0) {
    usb_ep_disable(ep);
    - ep->driver_data = NULL;
    goto fail3;
    }
    }
    @@ -763,8 +749,7 @@ static int sourcesink_set_alt(struct usb_function *f,
    struct f_sourcesink *ss = func_to_ss(f);
    struct usb_composite_dev *cdev = f->config->cdev;

    - if (ss->in_ep->driver_data)
    - disable_source_sink(ss);
    + disable_source_sink(ss);
    return enable_source_sink(cdev, ss, alt);
    }

    --
    1.9.1


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