[U-Boot] [PATCH 1/2] usb: gadget: s3c_udc_otg: fixed max packet size check for ep_in in high speed

Lukasz Majewski l.majewski at samsung.com
Mon Dec 7 13:58:26 CET 2015


Hi Frank,

> In current fastboot frame, both full and high speed use 'fs_ep_in',
> but fs_ep_in.wMaxPacketSize is configurated 64 bytes as default,

Because 64 bytes is the smallest possible packet size. 

> I do not understand why high speed TX max packet size is also set as
> 64 bytes,

According to struct s3c_udc @ s3c_udc_otg.c only the EP0 has maxpacket
set to 64 bytes. Rest is set to 512B.

Frank could you shed some light on conditions when this error shows up?
Some logs/condition of operation could be helpful.

> so I changed the condition from  '!=' to '>' as a
> workaround.

Instead of applying workaround, lets focus on your problem.

> 
> Signed-off-by: Frank Wang <frank.wang at rock-chips.com>
> ---
>  drivers/usb/gadget/s3c_udc_otg.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/gadget/s3c_udc_otg.c
> b/drivers/usb/gadget/s3c_udc_otg.c index 7a2d1e7..b2d3988 100644
> --- a/drivers/usb/gadget/s3c_udc_otg.c
> +++ b/drivers/usb/gadget/s3c_udc_otg.c
> @@ -556,8 +556,8 @@ static int s3c_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);



-- 
Best regards,

Lukasz Majewski

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


More information about the U-Boot mailing list