BeagleBone sees excessive wakeups while doing usb i/o

When I play audio out to my usb headphones, the kernel’s “kworker” process works very hard and takes all the available cpu time. According to the powertop utility, 1200 wakeups from idle are happening per second, (normal is under 10 per second) The overwhelming majority are attributed to the module “cppi41_dma”, which handles USB I/O…

I am using the “ArchLinux for ARM” distro. Audio is played by the Alsa “aplay” command. The wav file is on the /tmp memory file system so there is no other I/O happening except a small amount to the ethernet.

Is there something particular about how the am33x deals with USB that requires changes to the driver so it does not trigger so many ‘wakeups’?

Exactly the same thing happens using the Angstrom distro that came
with the
BeagleBone. Inabaility to do audio I/O over USB without wiping out
the CPU
renders the BeagleBone useless for my intended purpose.

Looking at the comments in the cppi41_dma source code, it was
originally written
by Texas Instruments, and then modified by the "MontaVista" embedded
Linux
company in 2008. Well before the am33x came on the market. Just a
guess,
but perhaps this driver needs to be updated to take into account the
way
the more recent hardware works.