Hi Ingo, On 01/26/2017 03:22 PM, Ingo Molnar wrote: > * Lu Baolu <[email protected]> wrote: > >> Hi, >> >> On 01/25/2017 10:38 PM, Peter Zijlstra wrote: >>> On Wed, Jan 25, 2017 at 08:27:38PM +0800, Lu Baolu wrote: >>>> In my driver, udelay() is mostly used to handle time out. >>>> >>>> Xdbc hides most USB things in its firmware. Early printk driver only needs >>>> to setup the registers/data structures and wait until link ready or time >>>> out. >>>> Without udelay(), I have no means to convert the polling times into waiting >>>> time. >>> What is timeout and why? >> Put it in simple: >> >> The driver sets the RUN bit in control register and polls READY >> bit in status register for the successful USB device enumeration. >> As the USB device enumeration might fail and the READY bit will >> never be set, the driver must have a timeout logic to avoid >> endless loop. > Is there any error status available in the host registers anywhere that tells > us > that enumeration did not succeed?
No, there isn't. The xhci spec requires software to impose a timeout. Page 425, xhci specification: " Software shall impose a timeout between the detection of the Debug Host connection and the DbC Run transition to ‘1’. " Best regards, Lu Baolu

