diff mbox

[U-Boot,RE-SUBMIT] usb: gadget: dwc2_udc_otg: modified the check condition for max packet size of ep_in in high speed

Message ID 1453927180-490-1-git-send-email-srae@broadcom.com
State Accepted
Delegated to: Marek Vasut
Headers show

Commit Message

Steve Rae Jan. 27, 2016, 8:39 p.m. UTC
From: Frank Wang <frank.wang@rock-chips.com>

In current high speed fastboot, fs_ep_in.wMaxPacketSize is configured 64 bytes
as default, as a result, it failed to match the size at initialization stage in
usb controller.
Actually, hardware can support less than or equal to 512 bytes in high speed mode,
so I changed the condition from  '!=' to '>' to fix this issue.

Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
Tested-by: Steve Rae <srae@broadcom.com>
---

 drivers/usb/gadget/dwc2_udc_otg.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Marek Vasut Jan. 27, 2016, 8:47 p.m. UTC | #1
On Wednesday, January 27, 2016 at 09:39:40 PM, Steve Rae wrote:
> From: Frank Wang <frank.wang@rock-chips.com>
> 
> In current high speed fastboot, fs_ep_in.wMaxPacketSize is configured 64
> bytes as default, as a result, it failed to match the size at
> initialization stage in usb controller.
> Actually, hardware can support less than or equal to 512 bytes in high
> speed mode, so I changed the condition from  '!=' to '>' to fix this
> issue.
> 
> Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
> Tested-by: Steve Rae <srae@broadcom.com>
> ---

Applied, thanks.

Best regards,
Marek Vasut
Łukasz Majewski Jan. 28, 2016, 8:18 a.m. UTC | #2
Hi Steve,

> From: Frank Wang <frank.wang@rock-chips.com>
> 
> In current high speed fastboot, fs_ep_in.wMaxPacketSize is configured
> 64 bytes as default, as a result, it failed to match the size at
> initialization stage in usb controller.
> Actually, hardware can support less than or equal to 512 bytes in
> high speed mode, so I changed the condition from  '!=' to '>' to fix
> this issue.

I'm aware of this problem, however now I'm busy with fixing dfu issue
regarding sending large files (e.g. 26 MiB). Patches are under
testing now.

After sending them I'll fix the fastboot problem.

> 
> Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
> Tested-by: Steve Rae <srae@broadcom.com>
> ---
> 
>  drivers/usb/gadget/dwc2_udc_otg.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/gadget/dwc2_udc_otg.c
> b/drivers/usb/gadget/dwc2_udc_otg.c index 90ed5ff..19d6dcd 100644
> --- a/drivers/usb/gadget/dwc2_udc_otg.c
> +++ b/drivers/usb/gadget/dwc2_udc_otg.c
> @@ -565,8 +565,8 @@ static int dwc2_ep_enable(struct usb_ep *_ep,
>  	}
>  
>  	/* hardware _could_ do smaller, but driver doesn't */
> -	if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK
> -	     && le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)) !=
> +	if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK &&
> +	     le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)) >
>  	     ep_maxpacket(ep))
> || !get_unaligned(&desc->wMaxPacketSize)) { 
>  		debug("%s: bad %s maxpacket\n", __func__, _ep->name);
Łukasz Majewski Jan. 29, 2016, 4:42 p.m. UTC | #3
Hi Steve,

> From: Frank Wang <frank.wang@rock-chips.com>
> 
> In current high speed fastboot, fs_ep_in.wMaxPacketSize is configured
> 64 bytes as default, as a result, it failed to match the size at
> initialization stage in usb controller.
> Actually, hardware can support less than or equal to 512 bytes in
> high speed mode, so I changed the condition from  '!=' to '>' to fix
> this issue.
> 
> Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
> Tested-by: Steve Rae <srae@broadcom.com>
> ---
> 
>  drivers/usb/gadget/dwc2_udc_otg.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/gadget/dwc2_udc_otg.c
> b/drivers/usb/gadget/dwc2_udc_otg.c index 90ed5ff..19d6dcd 100644
> --- a/drivers/usb/gadget/dwc2_udc_otg.c
> +++ b/drivers/usb/gadget/dwc2_udc_otg.c
> @@ -565,8 +565,8 @@ static int dwc2_ep_enable(struct usb_ep *_ep,
>  	}
>  
>  	/* hardware _could_ do smaller, but driver doesn't */
> -	if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK
> -	     && le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)) !=
> +	if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK &&
> +	     le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)) >
>  	     ep_maxpacket(ep))
> || !get_unaligned(&desc->wMaxPacketSize)) { 
>  		debug("%s: bad %s maxpacket\n", __func__, _ep->name);

Acked-by: Lukasz Majewski <l.majewski@samsung.com>
Tested-by: Lukasz Majewski <l.majewski@samsung.com>

Test HW: Trats - Exynos4210 (dwc2 udc controller).

@Marek: 

Should I pick this patch or will you take it?
Marek Vasut Jan. 29, 2016, 8:35 p.m. UTC | #4
On Friday, January 29, 2016 at 05:42:31 PM, Lukasz Majewski wrote:
> Hi Steve,
> 
> > From: Frank Wang <frank.wang@rock-chips.com>
> > 
> > In current high speed fastboot, fs_ep_in.wMaxPacketSize is configured
> > 64 bytes as default, as a result, it failed to match the size at
> > initialization stage in usb controller.
> > Actually, hardware can support less than or equal to 512 bytes in
> > high speed mode, so I changed the condition from  '!=' to '>' to fix
> > this issue.
> > 
> > Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
> > Tested-by: Steve Rae <srae@broadcom.com>
> > ---
> > 
> >  drivers/usb/gadget/dwc2_udc_otg.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/usb/gadget/dwc2_udc_otg.c
> > b/drivers/usb/gadget/dwc2_udc_otg.c index 90ed5ff..19d6dcd 100644
> > --- a/drivers/usb/gadget/dwc2_udc_otg.c
> > +++ b/drivers/usb/gadget/dwc2_udc_otg.c
> > @@ -565,8 +565,8 @@ static int dwc2_ep_enable(struct usb_ep *_ep,
> > 
> >  	}
> >  	
> >  	/* hardware _could_ do smaller, but driver doesn't */
> > 
> > -	if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK
> > -	     && le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)) !=
> > +	if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK &&
> > +	     le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)) >
> > 
> >  	     ep_maxpacket(ep))
> > || 
> > || !get_unaligned(&desc->wMaxPacketSize)) {
> > || 
> >  		debug("%s: bad %s maxpacket\n", __func__, _ep->name);
> 
> Acked-by: Lukasz Majewski <l.majewski@samsung.com>
> Tested-by: Lukasz Majewski <l.majewski@samsung.com>
> 
> Test HW: Trats - Exynos4210 (dwc2 udc controller).
> 
> @Marek:
> 
> Should I pick this patch or will you take it?

Pick it (and all the other udc stuff) and send me a PR please.

Best regards,
Marek Vasut
diff mbox

Patch

diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c
index 90ed5ff..19d6dcd 100644
--- a/drivers/usb/gadget/dwc2_udc_otg.c
+++ b/drivers/usb/gadget/dwc2_udc_otg.c
@@ -565,8 +565,8 @@  static int dwc2_ep_enable(struct usb_ep *_ep,
 	}
 
 	/* hardware _could_ do smaller, but driver doesn't */
-	if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK
-	     && le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)) !=
+	if ((desc->bmAttributes == USB_ENDPOINT_XFER_BULK &&
+	     le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)) >
 	     ep_maxpacket(ep)) || !get_unaligned(&desc->wMaxPacketSize)) {
 
 		debug("%s: bad %s maxpacket\n", __func__, _ep->name);