On Sat, 16 Oct 2021 17:38:25 +0200, Marco Giunta wrote: > > Hi, > this is my second attempt > (https://mailman.alsa-project.org/pipermail/alsa-devel/2020-December/178361.html) > to fix mic sound on a Jieli webcam. I found that the mic works only > when ep packet size is set to wMaxPacketSize, so I've removed the > datainterval hack. I also fixed the problem with the volume control > (mixer). > > Now the mic sound works (no more Minion voice) and there are no more > errors in syslog about volume range. I arbitrarily choose a resolution > value (16): I read in a comment that there should be no more than 255 > levels, so 4096 (max volume) / 16 = 0-255 ;-) > > Could you review this patch? Thanks, this version looks much better. But the patch couldn't be applied, firstly, because the spaces were malformed likely by your MUA. Please try to fix your MUA set up not to replace tabs. If it's difficult, use an attachment instead. Also, one of the changes in quirks.c can't be applied to the latest code in Linus tree, as the quirk handling has been changed. Now it's treated in a quirk table. Please adjust with it. For the stable tree, we may resubmit the modified patch individually later. And, please fill the content of the patch description a bit more; you can put the information you've written in the above into the changelog for a better explanation how the quirk works. Last but not least, use the subject prefix "ALSA: usb-audio: " :) Could you resubmit with those fixes? thanks, Takashi > > Thanks, > Marco > > > > Jieli Technology USB Webcam microphone needs some quirks to work. > > Signed-off-by: Marco Giunta <giun7a@xxxxxxxxx> > --- > sound/usb/mixer.c | 7 +++++++ > sound/usb/quirks.c | 6 ++++++ > 2 files changed, 13 insertions(+) > > diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c > index 9b713b4a5..20ef12dd8 100644 > --- a/sound/usb/mixer.c > +++ b/sound/usb/mixer.c > @@ -1198,6 +1198,13 @@ static void volume_control_quirks(struct > usb_mixer_elem_info *cval, > cval->res = 1; > } > break; > + case USB_ID(0x1224, 0x2a25): /* Jieli Technology USB PHY 2.0 */ > + if (!strcmp(kctl->id.name, "Mic Capture Volume")) { > + usb_audio_info(chip, > + "set resolution quirk: cval->res = 16\n"); > + cval->res = 16; > + } > + break; > } > } > > diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c > index 326d1b0ea..2263e43fd 100644 > --- a/sound/usb/quirks.c > +++ b/sound/usb/quirks.c > @@ -1534,6 +1534,7 @@ bool snd_usb_get_sample_rate_quirk(struct > snd_usb_audio *chip) > case USB_ID(0x2912, 0x30c8): /* Audioengine D1 */ > case USB_ID(0x413c, 0xa506): /* Dell AE515 sound bar */ > case USB_ID(0x046d, 0x084c): /* Logitech ConferenceCam Connect */ > + case USB_ID(0x1224, 0x2a25): /* Jieli Technology USB PHY 2.0 */ > return true; > } > > @@ -1874,6 +1875,11 @@ void > snd_usb_audioformat_attributes_quirk(struct snd_usb_audio *chip, > */ > fp->attributes &= ~UAC_EP_CS_ATTR_FILL_MAX; > break; > + case USB_ID(0x1224, 0x2a25): /* Jieli Technology USB PHY 2.0 */ > + /* mic works only when ep packet size is set to wMaxPacketSize */ > + fp->attributes |= UAC_EP_CS_ATTR_FILL_MAX; > + break; > + > } > } > > -- > 2.31.1 >