I’ve just tried to move my BeagleBone from the TI provided BSP (Argo Linux 3.2 Release 04.06.00.11) to one of the newer community kernels from https://github.com/beagleboard/kernel.
I’m not using any distro, just a busybox based rootfs.
My motivations for moving to the later kernels are to gain Device Tree and a bunch of other drivers for some I2C devices as well as the TPS PMIC backlight (ultimately this will be used on a Beaglebone based custom design). I figured it would be easier to move forward that to reverse engineer these drivers into the old 3.2 kernel.
Everything seems to work, except for one of the USB use cases I’m interested in. I’m able to mount a USB stick and copy a couple of gigs of data between the two without any issues. However, when I try to communicate with a CP2102 USB UART I very quickly seem to hang the driver. This worked fine in the old 3.2 kernel.
It seems to send a bunch of data (but It doesn’t seem to arrive on the other end of the UART) and then the TX buffer fills and causes my sending test app (https://gist.github.com/anonymous/1f2b2d5bca0041aa42d6) to hang. When I pull the USB cable, I get a kernel panic somewhere in the DMA driver waiting to clear the FIFO. I’ve tried this on 3.8, 3.12 and 3.13 all with similar results.
I’m using the stock am335x-bone.dts for each of the kernels.
I’ve also removed the USB support from u-boot (2014.01) to make sure no contamination got through.
Now although this only manifests with the cp210x driver (at least for me), I’ve done a diff between 3.2 and 3.13 versions and I can’t see anything too significant that’s changed. I’m thinking it’s somewhere under the hood within the musb core/platform bindings, which is my next avenue of investigation.
However I figured I’d see if anyone else has run into any problems like this, and was wondering if someone could answer a couple of questions I have:
What is the recommended kernel to be using now? Should I stick to 3.13?
How much verification/what verification has been done on the USB Host to define it as working as is declared in README.md
Cheers for any help