3 - Move to using the ALSA framework not faking it
4 - Fix the wrong user page DMA (moving to ALSA may fix that too)
8 - Switch from spinlock to mutex
9 - Remove excess checking of parameters in calls
10 - Use dma coherent memory not kmalloc/__pa for the memory (this is just
11 a cleanliness issue not a correctness one)