[U-Boot] [PATCH 2/2] fastboot: Enable the respective speed endpoints at runtime

Steve Rae steve.rae at broadcom.com
Wed Apr 13 03:43:58 CEST 2016


Hi Roger,

On Tue, Apr 12, 2016 at 6:47 AM, Lukasz Majewski <l.majewski at samsung.com> wrote:
> Hi Roger,
>
>> In a dual speed configuration we need to check at runtime if
>> we want to enable the Full-Speed or High-Speed endpoint.
>>
>> Signed-off-by: Roger Quadros <rogerq at ti.com>
>> ---
>>  drivers/usb/gadget/f_fastboot.c | 19 +++++++++++++++----
>>  1 file changed, 15 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/usb/gadget/f_fastboot.c
>> b/drivers/usb/gadget/f_fastboot.c index e1038ea..8ab187e 100644
>> --- a/drivers/usb/gadget/f_fastboot.c
>> +++ b/drivers/usb/gadget/f_fastboot.c
>> @@ -115,6 +115,15 @@ static struct usb_descriptor_header
>> *fb_hs_function[] = { NULL,
>>  };
>>
>> +static struct usb_endpoint_descriptor *
>> +fb_ep_desc(struct usb_gadget *g, struct usb_endpoint_descriptor *fs,
>> +         struct usb_endpoint_descriptor *hs)
>> +{
>> +     if (gadget_is_dualspeed(g) && g->speed == USB_SPEED_HIGH)
>> +             return hs;
>> +     return fs;
>> +}
>> +
>>  /*
>>   * static strings, in UTF-8
>>   */
>> @@ -255,18 +264,19 @@ static int fastboot_set_alt(struct usb_function
>> *f, struct usb_composite_dev *cdev = f->config->cdev;
>>       struct usb_gadget *gadget = cdev->gadget;
>>       struct f_fastboot *f_fb = func_to_fastboot(f);
>> +     const struct usb_endpoint_descriptor *d;
>>
>>       debug("%s: func: %s intf: %d alt: %d\n",
>>             __func__, f->name, interface, alt);
>>
>> -     /* make sure we don't enable the ep twice */
>>       if (gadget->speed == USB_SPEED_HIGH) {
>> -             ret = usb_ep_enable(f_fb->out_ep, &hs_ep_out);
>>               is_high_speed = true;
>>       } else {
>> -             ret = usb_ep_enable(f_fb->out_ep, &fs_ep_out);
>>               is_high_speed = false;
>>       }
>
> Very minor remark -
> Those {} are not needed.
>
>
>> +
>> +     d = fb_ep_desc(gadget, &fs_ep_out, &hs_ep_out);
>> +     ret = usb_ep_enable(f_fb->out_ep, d);
>>       if (ret) {
>>               puts("failed to enable out ep\n");
>>               return ret;
>> @@ -280,7 +290,8 @@ static int fastboot_set_alt(struct usb_function
>> *f, }
>>       f_fb->out_req->complete = rx_handler_command;
>>
>> -     ret = usb_ep_enable(f_fb->in_ep, &fs_ep_in);
>> +     d = fb_ep_desc(gadget, &fs_ep_in, &hs_ep_in);
>> +     ret = usb_ep_enable(f_fb->in_ep, d);
>>       if (ret) {
>>               puts("failed to enable in ep\n");
>>               goto err;
>
>
> Despite of that:
>
> Acked-by: Lukasz Majewski <l.majewski at samsung.com>
>
> --
> Best regards,
>
> Lukasz Majewski
>
> Samsung R&D Institute Poland (SRPOL) | Linux Platform Group

Tested-by: Steve Rae <srae at broadcom.com>
[Test HW: bcm235xx board]

Thanks, Steve


More information about the U-Boot mailing list