usb: define a generic USB_RESUME_TIMEOUT macro
authorFelipe Balbi <balbi@ti.com>
Fri, 13 Feb 2015 20:34:25 +0000 (14:34 -0600)
committerFelipe Balbi <balbi@ti.com>
Tue, 7 Apr 2015 17:58:35 +0000 (12:58 -0500)
commit62f0342de1f012f3e90607d39e20fce811391169
tree2ec616c5f0852ad34933ebe2ec3b8b05ff3cbb24
parent3e457371f436e89ce9239674828f9729a36b2595
usb: define a generic USB_RESUME_TIMEOUT macro

Every USB Host controller should use this new
macro to define for how long resume signalling
should be driven on the bus.

Currently, almost every single USB controller
is using a 20ms timeout for resume signalling.

That's problematic for two reasons:

a) sometimes that 20ms timer expires a little
before 20ms, which makes us fail certification

b) some (many) devices actually need more than
20ms resume signalling.

Sure, in case of (b) we can state that the device
is against the USB spec, but the fact is that
we have no control over which device the certification
lab will use. We also have no control over which host
they will use. Most likely they'll be using a Windows
PC which, again, we have no control over how that
USB stack is written and how long resume signalling
they are using.

At the end of the day, we must make sure Linux passes
electrical compliance when working as Host or as Device
and currently we don't pass compliance as host because
we're driving resume signallig for exactly 20ms and
that confuses certification test setup resulting in
Certification failure.

Cc: <stable@vger.kernel.org> # v3.10+
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
include/linux/usb.h