USB: fsl_qe_udc: Fix disconnects reporting during bus reset
authorAnton Vorontsov <[email protected]>
Thu, 25 Dec 2008 14:15:09 +0000 (17:15 +0300)
committerGreg Kroah-Hartman <[email protected]>
Mon, 9 Feb 2009 19:19:47 +0000 (11:19 -0800)
Freescale QE UDC controllers can't report the "port change" states,
so the only way to handle disconnects is to process bus reset
interrupts. The bus reset can take some time, that is, few irqs.
Gadgets may print the disconnection events, and this causes few
repetitive messages in the kernel log.

This patch fixes the issue by using the usb_state machine, if the
usb controller has been already reset, just quit the reset irq
early.

Signed-off-by: Anton Vorontsov <[email protected]>
Acked-by: David Brownell <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
drivers/usb/gadget/fsl_qe_udc.c

index 1319f8f7acba5b8cf4841ed908d6402820158fa2..7a820a3b4acd60cac7a34653438e64ec7b77485a 100644 (file)
@@ -2161,6 +2161,9 @@ static int reset_irq(struct qe_udc *udc)
 {
        unsigned char i;
 
+       if (udc->usb_state == USB_STATE_DEFAULT)
+               return 0;
+
        qe_usb_disable();
        out_8(&udc->usb_regs->usb_usadr, 0);