We have run in to a reproducible problem with a USB device connected to a Beagle Bone Black Rev. A5C.
We wish to suspend the USB link between the host (Beagle Bone Black configured in host mode) and the device. The device support remote wakeup (a.k.a. remote resume.) This works fine, and host-initiated resume works fine as well. But whenever we try to resume from the device, we get the dreaded "CAUTION: musb: Babble Interrupt Occurred" entry in dmesg.
Our setup is as follows:
The USB host is a Beagle Bone Black running Linux 3.13.
The USB device is an OMAP L-138 running a custom eCos.
The device has shown to successfully support suspend/resume including remote wakeup if connected to a PC.
The device is connected directly to the USB controller, with no additional hubs between. It is the only device on the bus.
If remote wakeup is attempted while connected to the BBB, the following error is seen in the kernel log (extended USB debugging enabled.)
Jan 1 00:03:06 bganut kernel: [ 186.643735] hub 1-0:1.0: hub_resume Jan 1 00:03:06 bganut kernel: [ 186.643790] CAUTION: musb: Babble Interrupt Occurred Jan 1 00:03:06 bganut kernel: [ 186.643814] hub 1-0:1.0: port 1: status 0507 change 0004 Jan 1 00:03:06 bganut kernel: [ 186.643893] hub 1-0:1.0: state 7 ports 1 chg 0002 evt 0002 Jan 1 00:03:06 bganut kernel: [ 186.657143] usb 1-1: usb wakeup-resume Jan 1 00:03:06 bganut kernel: [ 186.657211] usb 1-1: usb auto-resume Jan 1 00:03:06 bganut kernel: [ 186.698134] usb 1-1: finish resume Jan 1 00:03:11 bganut kernel: [ 191.698230] usb 1-1: khubd timed out on ep0in len=0/2 Jan 1 00:03:11 bganut kernel: [ 191.698261] usb 1-1: retry with reset-resume Jan 1 00:03:11 bganut kernel: [ 191.803667] usb 1-1: reset high-speed USB device number 2 using musb-hdrc
The problem occurs every time we attempt to remote wakeup.
The behaviour is unchanged on Linux 3.8