On Wed, 22 Jun 2022 22:23:50 +0200, John Veness wrote: > > > Hello, > > This is my first ever kernel work, so I hope I am doing everything > correctly. > > I have a USB analogue AV capture dongle with a MacroSilicon MS2100E chip > inside. PID 0x534d, VID 0x0021 (534d:0021). Apparently the MS2106 uses > the same PID/VID, so hopefully acts the same, but I don't have one to check. > > For audio, the MS2100E has the same problems as the MS2109 USB HDMI > capture dongle, namely claiming 96kHz mono sound when it's actually > 48kHz stereo, and with left/right channel problems. > > Luckily, the fix is the exact same as that for the MS2109, as first > implemented by Marcan (Hector Martin) in July 2020. Below is a patch > which is basically a copy and paste of his, with a different VID. > > I have tested this patch in 5.19.0 RC2. I haven't recruited any other > testers. The suggested code change looks OK. So far, so good... > Even with this patch, there is a remaining problem, which is not present > in the MS2109. The sound sample values range from 0x0000 to 0x7fff, with > silence around 0x4000, i.e. 15-bit-ish audio. This actually sounds OK to > the ear (although half as loud as it should be), but looks odd when > looking at the waveform, and makes volume meters always think the sound > is very loud. > > To convert to s16le, I can bitshift one bit left, and subtract 32768. > I'm told that this isn't something that can or should be done in the > kernel, but should be in userspace. Any more advice on how to fix this > remaining quirk would be very welcome. Ouch, this is painful. We haven't had any devices that require a 15 bit unsigned format, and maybe we don't want to add it to the common standard format just for one funky device, either. Such data processing could be done in alsa-lib, but for the proper interaction with the user-space, the kernel should provide some information so that user-space can process the data accordingly. However, we have no proper way defined for it generically, so far. Maybe an easy way would be to create an alsa-lib external plugin, and apply it per device. Jaroslav, could it be done via UCM? > Nonetheless, as I say, with the following kernel patch the captured > audio certainly sounds right, so is a big improvement and makes these > dongles usable: So as a first step, we can merge the patch as is. The rest needs more consideration. In anyway, for merging the patch, it has to be submitted properly in a right format, especially including your Signed-off-by tag. Please refer to Documentation/process/submitting-patches.rst for details. thanks, Takashi