[alsa-devel] extra interrupt on plug insertion undoes mux selection
Hi All,
Trying my hand at snd quirking, I'm working a Dell Latitude E4310. Here's what I'm seeing. There's a headset jack (HP/MIC combo) on the LHS, when I insert a headset I see the following in the logs.
Note: port 0xA is the mic jack, 0xB is hp jack, and 0x11 in internal mic.
Jun 11 18:17:45 ubuntu-laptop kernel: [ 193.978394] XXX stac92xx_unsol_event: codec subsystem id 10280410 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361330] XXX stac92xx_unsol_event: event - 6 nid - 0a. Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361335] XXX stac92xx_unsol_event: event - 6 MIC Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361337] XXX stac92xx_mic_detect: ENTER Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361340] XXX get_pin_presence:4422 ENTER, NID 0a Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361434] XXX get_pin_presence:4429 EXIT 1, got pin sense Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361439] XXX stac92xx_mic_detect: HERE 4662 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361441] XXX stac92xx_mic_detect: HERE 4676 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361444] XXX stac92xx_mic_detect:4678 mux_nid:0017 index:6 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361449] XXX stac92xx_mic_detect: EXIT Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361451] XXX stac92xx_unsol_event: genevent - 6 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361532] XXX get_pin_presence:4422 ENTER, NID 0a Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361620] XXX get_pin_presence:4429 EXIT 1, got pin sense Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361628] XXX stac92xx_unsol_event: codec subsystem id 10280410 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361631] XXX stac92xx_unsol_event: event - 4 nid - 0b. Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361634] XXX stac92xx_unsol_event: event - 4 HP or LO Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361636] XXX stac92xx_hp_detect: ENTER Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361638] XXX get_pin_presence:4422 ENTER, NID 0b Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361717] XXX get_pin_presence:4429 EXIT 1, got pin sense Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361720] XXX stac92xx_hp_detect:4522 probe_pin:0 hp_pin:000b Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361807] XXX stac92xx_hp_detect: pinctl c0 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361810] XXX stac92xx_hp_detect: HERE 4534 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361812] XXX stac92xx_hp_detect: HERE 4537 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361906] XXX stac92xx_hp_detect: HERE 4569 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361996] XXX stac92xx_hp_detect: EXIT Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.361998] XXX stac92xx_unsol_event: genevent - 4 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.362067] XXX get_pin_presence:4422 ENTER, NID 0b Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.362163] XXX get_pin_presence:4429 EXIT 1, got pin sense Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.362168] XXX stac92xx_unsol_event: codec subsystem id 10280410 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735203] XXX stac92xx_unsol_event: event - 6 nid - 0a. Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735206] XXX stac92xx_unsol_event: event - 6 MIC Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735209] XXX stac92xx_mic_detect: ENTER Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735212] XXX get_pin_presence:4422 ENTER, NID 0a Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735311] XXX get_pin_presence:4433 EXIT 0, no pin sense Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735315] XXX stac92xx_mic_detect: HERE 4666 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735318] XXX stac92xx_mic_detect: HERE 4676 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735320] XXX stac92xx_mic_detect:4678 mux_nid:0017 index:4 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735325] XXX stac92xx_mic_detect: EXIT Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735327] XXX stac92xx_unsol_event: genevent - 6 Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735410] XXX get_pin_presence:4422 ENTER, NID 0a Jun 11 18:17:45 ubuntu-laptop kernel: [ 201.735497] XXX get_pin_presence:4433 EXIT 0, no pin sense
I've tested against kernels 2.6.32 and 2.6.35rc2 with the same results. The mux is indeed back where it started after the plug is fully inserted.
Node 0x17 [Audio Selector] wcaps 0x300d0d: Stereo Amp-Out R/L Amp-Out caps: ofs=0x00, nsteps=0x0f, stepsize=0x05, mute=1 Amp-Out vals: [0x0f 0x0f] Power: setting=D0, actual=D0 Connection: 7 0x0c 0x0e 0x0f 0x1b 0x11* 0x12 0x0a
and I can push it around with hda-verb to get the desired result... The question is why is it doing this? To make things weirder, I can get input from the external mic even if it isn't selected. This is my first attempt at making codecs "do the right thing" so I could very well be missing something obvious. What else am I missing here? Thanks.
Peter
participants (1)
-
Peter M. Petrakis