[PATCH v2] sound/usb : Fix mic sound on Jieli webcam

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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,
  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



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux