ALSA: usb-audio: Support jack detection on Dell dock
authorJan Schär <jan@jschaer.ch>
Mon, 27 Jun 2022 17:18:54 +0000 (19:18 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 4 Jul 2022 12:16:07 +0000 (14:16 +0200)
commit4b8ea38fabab45ad911a32a336416062553dfe9c
tree98a76f12480f754edc20eecbd575a16c730c8270
parent4a1e6ac7d5a014fcc14bf25b6cd14328619a6233
ALSA: usb-audio: Support jack detection on Dell dock

The Dell WD15 dock has a headset and a line out port. Add support for
detecting if a jack is inserted into one of these ports.
For the headset jack, additionally determine if a mic is present.

The WD15 contains an ALC4020 USB audio controller and ALC3263 audio codec
from Realtek. It is a UAC 1 device, and UAC 1 does not support jack
detection. Instead, jack detection works by sending HD Audio commands over
vendor-type USB messages.

I found out how it works by looking at USB captures on Windows.
The audio codec is very similar to the one supported by
sound/soc/codecs/rt298.c / rt298.h, some constant names and the mic
detection are adapted from there. The realtek_add_jack function is adapted
from build_connector_control in sound/usb/mixer.c.

I tested this on a WD15 dock with the latest firmware.

Signed-off-by: Jan Schär <jan@jschaer.ch>
Link: https://lore.kernel.org/r/20220627171855.42338-1-jan@jschaer.ch
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/mixer_quirks.c