On Fri, 17 Mar 2017, Lipengcheng wrote:
> Hi,
> In the ehci-hub.c,the ehci_handshake(ehci, status_reg, PORT_RESET, 0,
> 1000) use that the timeout is 1000us. The 1000us timeout can not
> satisfy all the chips. The EHCI protocol describes:A host controller
> must terminate the reset and stabilize the state of the port within 2
> milliseconds of software transitioning this bit from a one to a zero.
> So I think timeout time is set to 2000us more appropriate. If I set
> the timeout time is set to 2000us and may it produce side effects?
That is a long time to wait with interrupts disabled. You probably
should release the spinlock and enable interrupts during the handshake.
Have you seen any errors with the current 1000 us value? If you
haven't, there's no reason to change the code.
Alan Stern
Hi,
> -----Original Message-----
> From: Alan Stern [mailto:[email protected]]
> Sent: Saturday, March 18, 2017 12:44 AM
> To: Lipengcheng
> Cc: [email protected]; [email protected]; [email protected]
> Subject: Re: EHCI
>
> On Fri, 17 Mar 2017, Lipengcheng wrote:
>
> > Hi,
> > In the ehci-hub.c,the ehci_handshake(ehci, status_reg, PORT_RESET, 0,
> > 1000) use that the timeout is 1000us. The 1000us timeout can not
> > satisfy all the chips. The EHCI protocol describes:A host controller
> > must terminate the reset and stabilize the state of the port within 2
> > milliseconds of software transitioning this bit from a one to a zero.
> > So I think timeout time is set to 2000us more appropriate. If I set
> > the timeout time is set to 2000us and may it produce side effects?
>
> That is a long time to wait with interrupts disabled. You probably should release the spinlock and enable interrupts during the handshake.
>
> Have you seen any errors with the current 1000 us value? If you haven't, there's no reason to change the code.
>
Yes, I have some error -110(-ETIMEDOUT) with the current 1000us value. When I set the value 2000us, it is ok.
> Alan Stern
Best Regards,
Pengcheng Li