Bug 205961

Summary: broadwell-rt286: Mic jack detection not working (Dell Latitude 7350)
Product: Drivers Reporter: David Ward (david.ward)
Component: Sound(ALSA)Assignee: Jaroslav Kysela (perex)
Status: NEW ---    
Severity: normal CC: nate
Priority: P1    
Hardware: Intel   
OS: Linux   
Kernel Version: 5.5-rc3 Tree: Mainline
Regression: No
Attachments: ALSA info - mainline - after boot
ALSA info - mainline - after headset inserted
ALSA info - mainline - after headset removed
ALSA info - modified force_combo_jack_table[] - after boot
ALSA info - modified force_combo_jack_table[] - after headset inserted
ALSA info - modified force_combo_jack_table[] - after headset removed
ALSA info - modified dmi_dell_dino[] - after boot
ALSA info - modified dmi_dell_dino[] - after headset inserted
ALSA info - modified dmi_dell_dino[] - after headset removed

Description David Ward 2019-12-25 04:38:15 UTC
Created attachment 286425 [details]
ALSA info - mainline - after boot

The Dell Latitude 7350 2-in-1 laptop has an internal digital microphone, as well as an analog 3.5mm headset jack. Under Windows 10, audio recording works from either of these sources, and the source changes automatically when a headset is inserted or removed.

There seem to be issues both in the ALSA drivers and the ALSA Use Case Manager profile which affect audio recording on this system. These problems are not new, but I am testing this with kernel 5.5-rc3 and the current development versions of alsa-lib, alsa-plugins, alsa-ucm-conf, alsa-utils, and PulseAudio.

In the ALSA mixer controls for the broadwell-rt286 card:

- The read-only 'Mic Jack' control does not change when a headset is inserted or removed (it is always 'true'). However, the read-only 'Headphone Jack' control does change, which triggers changes by the UCM profile in other playback controls.

- To use the internal microphone, the 'ADC 0 Mux' control must manually be set to 'Dmic', and the level of the 'Mic' control must be increased from the default of 0%. (Also, in the Sound panel of GNOME Settings, the input volume must be increased from 0%.)

- I have not found any settings that allow audio to be recorded from the headset.


In sound/soc/codecs/rt286.c, I tried adding the DMI values for this system to force_combo_jack_table[]. This caused the 'Mic Jack' control to be 'false' instead of 'true', but its value still did not change when a headset was inserted or removed.

I also tried adding the DMI values to dmi_dell_dino[] instead, with the same result.


For all three cases above, I am attaching the output of 'alsa-info.sh' when it was run after:
- the system was booted (without a headset attached);
- a headset was inserted into the jack; and
- the headset was removed from the jack.
Comment 1 David Ward 2019-12-25 04:39:01 UTC
Created attachment 286427 [details]
ALSA info - mainline - after headset inserted
Comment 2 David Ward 2019-12-25 04:39:30 UTC
Created attachment 286429 [details]
ALSA info - mainline - after headset removed
Comment 3 David Ward 2019-12-25 04:41:27 UTC
Created attachment 286431 [details]
ALSA info - modified force_combo_jack_table[] - after boot
Comment 4 David Ward 2019-12-25 04:42:10 UTC
Created attachment 286433 [details]
ALSA info - modified force_combo_jack_table[] - after headset inserted
Comment 5 David Ward 2019-12-25 04:42:37 UTC
Created attachment 286435 [details]
ALSA info - modified force_combo_jack_table[] - after headset removed
Comment 6 David Ward 2019-12-25 04:43:19 UTC
Created attachment 286437 [details]
ALSA info - modified dmi_dell_dino[] - after boot
Comment 7 David Ward 2019-12-25 04:43:42 UTC
Created attachment 286439 [details]
ALSA info - modified dmi_dell_dino[] - after headset inserted
Comment 8 David Ward 2019-12-25 04:43:59 UTC
Created attachment 286441 [details]
ALSA info - modified dmi_dell_dino[] - after headset removed