Yes, that's right.
In this case suspend_hc() is being called anyways, so
the controller *is* in the suspended state.
suspend_hc() and wakeup_hc() are spinning back
and forth forever.
For some reason I thought this was firing without
a call to suspend_hc(), but I verified it with printks.
I tried it both with is_suspended, and again testing
USBCMD_EGSM in the command register (Greg's patch)
with same results.
So it is a good check to add to qualify USBSTS_RD,
but in this case it looks like the mainboard implementation
is FUBAR and bogus resume messages are being
recognized by the controller.
Is there some transient period after setting USBCMD_EGSM
before which the controller is not officially in the
suspended state that might cause a spurious
USBSTS_RD indication? (seems unlikely)
> > in the ISR to qualify acting on that status bit.
> > Alternatively, USBCMD_EGSM (BIT3) of the USBCMD
> > register could be tested to qualify action on
> > the state of USBSTS_RD
> >
> > I'm going to test this now, but I wanted to
> > know what you think.
>
> I think it's correct, but I don't think it will solve your problem. I
> would be very happy to be wrong though.
You are right (IMO) that it is correct and should be added,
and you are also right in that it does not solve this problem.
-- Paul Fulghum, paulkf@microgate.com Microgate Corporation, http://www.microgate.com
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/