usb: otg: mxs-phy: Fix mx23 operation
authorMike Thompson <mpthompson@gmail.com>
Thu, 30 Aug 2012 21:26:25 +0000 (18:26 -0300)
committerFelipe Balbi <balbi@ti.com>
Mon, 10 Sep 2012 16:46:38 +0000 (19:46 +0300)
commit363366cf61c544ea476f3d220f43a95cb03014f5
treedf7f080a47500f0ee5bde050b90815f1a5e288ef
parent51e1e7bcef53e6a91cfffff0145ab315def61f61
usb: otg: mxs-phy: Fix mx23 operation

Currently mx23 fails to enumerate a USB device:

[ 1.300000] hub 1-0:1.0: unable to enumerate USB device on port 1
[ 1.520000] hub 1-0:1.0: unable to enumerate USB device on port 1
[ 1.740000] hub 1-0:1.0: unable to enumerate USB device on port 1
[ 1.960000] hub 1-0:1.0: unable to enumerate USB device on port 1
[ 2.180000] hub 1-0:1.0: unable to enumerate USB device on port 1

Use a kernel workqueue to asynchronously delay the setting of
ENHOSTDISCONDETECT bit until after higher level hub connect/reset processing
is complete.  Prematurely setting the bit prevents the connection
processing from completing and not setting it prevents disconnect from being
detected. No delay is needed for clearing of ENHOSTDISCONDETECT.

Successfully tested on mx23-olinuxino (micro, mini and maxi variants) and mx28evk.

Cc: stable@vger.kernel.org # v3.6
Signed-off-by: Mike Thompson <mpthompson@gmail.com>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/otg/mxs-phy.c