[U-Boot] usb: Add delay to fix USB 2.0 stick enumeration failure on LS208xA

Message ID 20171113090038.13608-1-ran.wang_1@nxp.com
State New
Delegated to: York Sun
Headers show
Series
  • [U-Boot] usb: Add delay to fix USB 2.0 stick enumeration failure on LS208xA
Related show

Commit Message

Ran Wang Nov. 13, 2017, 9 a.m.
Force delay 10ms between each control messages to fix Transcend
and Kingston DT 101 G2 USB2.0 stick fail to be enumerated by LS208xA.

Signed-off-by: Ran Wang <ran.wang_1@nxp.com>
---
 common/usb.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Marek Vasut Nov. 13, 2017, 9:33 a.m. | #1
On 11/13/2017 10:00 AM, Ran Wang wrote:
> Force delay 10ms between each control messages to fix Transcend
> and Kingston DT 101 G2 USB2.0 stick fail to be enumerated by LS208xA.

That means everyone else also suffers this burden, even though it's a
problem specific to LS208x ? What is the real problem here ?

> Signed-off-by: Ran Wang <ran.wang_1@nxp.com>
> ---
>  common/usb.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/common/usb.c b/common/usb.c
> index 0904259757..eeacc80b9e 100644
> --- a/common/usb.c
> +++ b/common/usb.c
> @@ -223,6 +223,9 @@ int usb_control_msg(struct usb_device *dev, unsigned int pipe,
>  		return -EINVAL;
>  	}
>  
> +	/* Add delay to support more devices' enumeration */
> +	mdelay(10);
> +
>  	/* set setup command */
>  	setup_packet->requesttype = requesttype;
>  	setup_packet->request = request;
>
Ran Wang Nov. 13, 2017, 9:43 a.m. | #2
Hi Marek,

> -----Original Message-----

> From: Marek Vasut [mailto:marex@denx.de]

> Sent: Monday, November 13, 2017 5:34 PM

> To: Ran Wang <ran.wang_1@nxp.com>; Bin Meng <bmeng.cn@gmail.com>;

> Heiko Schocher <hs@denx.de>

> Cc: u-boot@lists.denx.de

> Subject: Re: [PATCH] usb: Add delay to fix USB 2.0 stick enumeration failure

> on LS208xA

> 

> On 11/13/2017 10:00 AM, Ran Wang wrote:

> > Force delay 10ms between each control messages to fix Transcend and

> > Kingston DT 101 G2 USB2.0 stick fail to be enumerated by LS208xA.

> 

> That means everyone else also suffers this burden, even though it's a

> problem specific to LS208x ? 


Actually I want to add a macro/flag to restrict the scope of effect but don't know how. 
Could you give me some example to let it take effect on specific boards?

>What is the real problem here ?

>


So far the root cause is not clear yet due to lack of debugging method. Suspect
there are some (HW) compatibility issue here.
 
Best Regards
Ran
> > Signed-off-by: Ran Wang <ran.wang_1@nxp.com>

> > ---

> >  common/usb.c | 3 +++

> >  1 file changed, 3 insertions(+)

> >

> > diff --git a/common/usb.c b/common/usb.c index 0904259757..eeacc80b9e

> > 100644

> > --- a/common/usb.c

> > +++ b/common/usb.c

> > @@ -223,6 +223,9 @@ int usb_control_msg(struct usb_device *dev,

> unsigned int pipe,

> >  		return -EINVAL;

> >  	}

> >

> > +	/* Add delay to support more devices' enumeration */

> > +	mdelay(10);

> > +

> >  	/* set setup command */

> >  	setup_packet->requesttype = requesttype;

> >  	setup_packet->request = request;

> >

> 

> 

> --

> Best regards,

> Marek Vasut
Marek Vasut Nov. 13, 2017, 4:54 p.m. | #3
On 11/13/2017 10:43 AM, Ran Wang wrote:
> Hi Marek,
> 
>> -----Original Message-----
>> From: Marek Vasut [mailto:marex@denx.de]
>> Sent: Monday, November 13, 2017 5:34 PM
>> To: Ran Wang <ran.wang_1@nxp.com>; Bin Meng <bmeng.cn@gmail.com>;
>> Heiko Schocher <hs@denx.de>
>> Cc: u-boot@lists.denx.de
>> Subject: Re: [PATCH] usb: Add delay to fix USB 2.0 stick enumeration failure
>> on LS208xA
>>
>> On 11/13/2017 10:00 AM, Ran Wang wrote:
>>> Force delay 10ms between each control messages to fix Transcend and
>>> Kingston DT 101 G2 USB2.0 stick fail to be enumerated by LS208xA.
>>
>> That means everyone else also suffers this burden, even though it's a
>> problem specific to LS208x ? 
> 
> Actually I want to add a macro/flag to restrict the scope of effect but don't know how. 
> Could you give me some example to let it take effect on specific boards?
> 
>> What is the real problem here ?
>>
> 
> So far the root cause is not clear yet due to lack of debugging method. Suspect
> there are some (HW) compatibility issue here.

I think you should first figure out what the problem is.

>  
> Best Regards
> Ran
>>> Signed-off-by: Ran Wang <ran.wang_1@nxp.com>
>>> ---
>>>  common/usb.c | 3 +++
>>>  1 file changed, 3 insertions(+)
>>>
>>> diff --git a/common/usb.c b/common/usb.c index 0904259757..eeacc80b9e
>>> 100644
>>> --- a/common/usb.c
>>> +++ b/common/usb.c
>>> @@ -223,6 +223,9 @@ int usb_control_msg(struct usb_device *dev,
>> unsigned int pipe,
>>>  		return -EINVAL;
>>>  	}
>>>
>>> +	/* Add delay to support more devices' enumeration */
>>> +	mdelay(10);
>>> +
>>>  	/* set setup command */
>>>  	setup_packet->requesttype = requesttype;
>>>  	setup_packet->request = request;
>>>
>>
>>
>> --
>> Best regards,
>> Marek Vasut

Patch

diff --git a/common/usb.c b/common/usb.c
index 0904259757..eeacc80b9e 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -223,6 +223,9 @@  int usb_control_msg(struct usb_device *dev, unsigned int pipe,
 		return -EINVAL;
 	}
 
+	/* Add delay to support more devices' enumeration */
+	mdelay(10);
+
 	/* set setup command */
 	setup_packet->requesttype = requesttype;
 	setup_packet->request = request;