All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukasz Majewski <l.majewski@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2] fastboot: Fix wMaxPacketSize for High-Speed IN endpoint
Date: Tue, 12 Apr 2016 15:54:36 +0200	[thread overview]
Message-ID: <20160412155436.7f57a07e@amdc2363> (raw)
In-Reply-To: <1460465509-2731-2-git-send-email-rogerq@ti.com>

Hi Roger,

> wMaxPacketSize for IN endpoing in High-Speed must be 512 and not 64.
> While fixing that we do some clean ups like
> 
> - use cpu_to_le16(decimal_length) instead of hexadecimal length.
> - No need to initialize bInterval to 0. Static variables are 0
> initialized.
> - Move descriptor setting from fastboot_add to to fastboot_bind.
> - check for dual speed configuration before setting the high speed
> descriptors.

Fixes are correct, but I think that there would be a problem with
Broadcomm boards when you change EP IN max packet from 64 to 512B.

We had such discussion previously:

https://www.mail-archive.com/u-boot at lists.denx.de/msg201596.html

I think that Steve would say more about this.

> 
> Signed-off-by: Roger Quadros <rogerq@ti.com>
> ---
>  drivers/usb/gadget/f_fastboot.c | 36
> +++++++++++++++++++++++++++--------- 1 file changed, 27
> insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/usb/gadget/f_fastboot.c
> b/drivers/usb/gadget/f_fastboot.c index 2e87fee..e1038ea 100644
> --- a/drivers/usb/gadget/f_fastboot.c
> +++ b/drivers/usb/gadget/f_fastboot.c
> @@ -64,8 +64,7 @@ static struct usb_endpoint_descriptor fs_ep_in = {
>  	.bDescriptorType    = USB_DT_ENDPOINT,
>  	.bEndpointAddress   = USB_DIR_IN,
>  	.bmAttributes       = USB_ENDPOINT_XFER_BULK,
> -	.wMaxPacketSize     = TX_ENDPOINT_MAXIMUM_PACKET_SIZE,
> -	.bInterval          = 0x00,
> +	.wMaxPacketSize     = cpu_to_le16(64),
>  };
>  
>  static struct usb_endpoint_descriptor fs_ep_out = {
> @@ -73,8 +72,15 @@ static struct usb_endpoint_descriptor fs_ep_out = {
>  	.bDescriptorType	= USB_DT_ENDPOINT,
>  	.bEndpointAddress	= USB_DIR_OUT,
>  	.bmAttributes		= USB_ENDPOINT_XFER_BULK,
> -	.wMaxPacketSize		=
> RX_ENDPOINT_MAXIMUM_PACKET_SIZE_1_1,
> -	.bInterval		= 0x00,
> +	.wMaxPacketSize		= cpu_to_le16(64),
> +};
> +
> +static struct usb_endpoint_descriptor hs_ep_in = {
> +	.bLength		= USB_DT_ENDPOINT_SIZE,
> +	.bDescriptorType	= USB_DT_ENDPOINT,
> +	.bEndpointAddress	= USB_DIR_IN,
> +	.bmAttributes		= USB_ENDPOINT_XFER_BULK,
> +	.wMaxPacketSize		= cpu_to_le16(512),
>  };
>  
>  static struct usb_endpoint_descriptor hs_ep_out = {
> @@ -82,8 +88,7 @@ static struct usb_endpoint_descriptor hs_ep_out = {
>  	.bDescriptorType	= USB_DT_ENDPOINT,
>  	.bEndpointAddress	= USB_DIR_OUT,
>  	.bmAttributes		= USB_ENDPOINT_XFER_BULK,
> -	.wMaxPacketSize		=
> RX_ENDPOINT_MAXIMUM_PACKET_SIZE_2_0,
> -	.bInterval		= 0x00,
> +	.wMaxPacketSize		= cpu_to_le16(512),
>  };
>  
>  static struct usb_interface_descriptor interface_desc = {
> @@ -97,9 +102,15 @@ static struct usb_interface_descriptor
> interface_desc = { .bInterfaceProtocol	=
> FASTBOOT_INTERFACE_PROTOCOL, };
>  
> -static struct usb_descriptor_header *fb_runtime_descs[] = {
> +static struct usb_descriptor_header *fb_fs_function[] = {
>  	(struct usb_descriptor_header *)&interface_desc,
>  	(struct usb_descriptor_header *)&fs_ep_in,
> +	(struct usb_descriptor_header *)&fs_ep_out,
> +};
> +
> +static struct usb_descriptor_header *fb_hs_function[] = {
> +	(struct usb_descriptor_header *)&interface_desc,
> +	(struct usb_descriptor_header *)&hs_ep_in,
>  	(struct usb_descriptor_header *)&hs_ep_out,
>  	NULL,
>  };
> @@ -177,7 +188,15 @@ static int fastboot_bind(struct
> usb_configuration *c, struct usb_function *f) return -ENODEV;
>  	f_fb->out_ep->driver_data = c->cdev;
>  
> -	hs_ep_out.bEndpointAddress = fs_ep_out.bEndpointAddress;
> +	f->descriptors = fb_fs_function;
> +
> +	if (gadget_is_dualspeed(gadget)) {
> +		/* Assume endpoint addresses are the same for both
> speeds */
> +		hs_ep_in.bEndpointAddress =
> fs_ep_in.bEndpointAddress;
> +		hs_ep_out.bEndpointAddress =
> fs_ep_out.bEndpointAddress;
> +		/* copy HS descriptors */
> +		f->hs_descriptors = fb_hs_function;
> +	}
>  
>  	s = getenv("serial#");
>  	if (s)
> @@ -302,7 +321,6 @@ static int fastboot_add(struct usb_configuration
> *c) }
>  
>  	f_fb->usb_function.name = "f_fastboot";
> -	f_fb->usb_function.hs_descriptors = fb_runtime_descs;
>  	f_fb->usb_function.bind = fastboot_bind;
>  	f_fb->usb_function.unbind = fastboot_unbind;
>  	f_fb->usb_function.set_alt = fastboot_set_alt;



-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group

  reply	other threads:[~2016-04-12 13:54 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-12 12:51 [U-Boot] [PATCH 0/2] uboot: fastboot: fix high speed endpoint descriptors Roger Quadros
2016-04-12 12:51 ` [U-Boot] [PATCH 1/2] fastboot: Fix wMaxPacketSize for High-Speed IN endpoint Roger Quadros
2016-04-12 13:54   ` Lukasz Majewski [this message]
2016-04-13  1:42     ` Steve Rae
2016-04-13  7:19       ` Roger Quadros
2016-04-13  2:18   ` Steve Rae
2016-04-13  2:34     ` Hong Chen
2016-04-12 12:51 ` [U-Boot] [PATCH 2/2] fastboot: Enable the respective speed endpoints at runtime Roger Quadros
2016-04-12 13:47   ` Lukasz Majewski
2016-04-13  1:43     ` Steve Rae
2016-04-13  8:30   ` [U-Boot] [PATCH v2 " Roger Quadros

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160412155436.7f57a07e@amdc2363 \
    --to=l.majewski@samsung.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.