Hi Takashi.
I sent these out a week ago to alsa-devel (only) but am not sure they got anywhere, perhaps due to at least the alsa-devel archive scrubbing the text/x-patch attachments as "non-text".
The snd-usb-6fire driver for the TerraTec DMX 6Fire USB soundcard has been failing its firmware upload due to a non DMA-capable buffer on the stack. First of the patches kmallocs said bufffer instead and fixes the firmware upload.
After that first patch the driver nominally works again but still has Pulseaudio crap out due to struct snd_pcm_hardware.channels_min=1 causing it to recognize it as a mono device only. Comparing with e.g. the TerraTec Aureon 7.1 Universe driver it seems that the solution is to simply set channels_min=2 as per the second patch.
Third patch unmarks the snd_pcm_hardware struct const as it it is in fact changed in usb6fire_pcm_open(), even though through a pointer, and is supposedly trivial.
With these changes the card works again. Driver author Torsten Schenk has seen these and is fine with them: maintains an external driver with more options. I or he might time permitting start integrating more into the kernel driver over time.
Regards, René
René Herman (3): snd-usb-6fire: Move DMA-buffer off of the stack snd-usb-6fire: Pulseaudio needs snd_pcm_hardware.channels_min > 1 snd-usb-6fire: Unmark struct snd_pcm_hardware const
firmware.c | 95 ++++++++++++++++++++++++++---------------------------- pcm.c | 4 +-- 2 files changed, 48 insertions(+), 51 deletions(-)