On Tue, 21 Jul 2020 08:48:50 +0200, René Herman wrote:
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.
The patch needs to point to the right path that is applicable with patch -p1 option, i.e. it should be like diff -up a/sound/usb/6fire/xxx.c b/sound/usb/6fire/xxx.c
At best use git for creating / submitting a patch.
thanks,
Takashi