Issue with In-built Mic and Tiger Lake-H HD Audio Controller

From: Adam Retter <adam.retter_at_googlemail.com>
Date: Fri, 14 Jun 2024 15:30:19 UTC
I am trying to get "Tiger Lake-H HD Audio Controller" working
correctly on FreeBSD 15.0-CURRENT. I created a very simple patch for
the Kernel here (based on someone else's work) -
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272682#c1

The machine I am using is a Lenovo ThinkPad X1 Extreme Gen 4, specs are:
1. https://psref.lenovo.com/Detail/ThinkPad_X1_Extreme_Gen_4?M=20Y5001DMX
2. https://bsd-hardware.info/?probe=d19db2828c

After applying that patch and building and installing a new Kernel,
the sound now seems to mostly work. However, there is a small issue
with the internal microphone which I can't seem to figure out.

When using the laptop, the /dev/pcm3 does not seem to be able to
record any sound from what it claims is the internal microphone.
However if I plug in a Headset (headphones and boom mic) and connect
it to the headphone jack of the laptop, then the boom mic does record
sound as part of /dev/pcm3. This is odd as the headphones themselves
are part of /dev/pcm4.

I wondered if I could just use /boot/device.hints to move the boom mic
into /dev/pcm4. However, I cannot find the nid for the internal mic to
place into /dev/pcm3 in its place. One odd thing is that if I look at
a pindump from snd_hda, then one of the devices (nid 27) has both IN
and OUT capabilities, but the manual page seems to suggest that should
not be possible, I wonder if this is my missing microphone?

I am a bit stumped as to how to get the Internal Mic working (and then
switching over automatically to the external headset boom mic when it
is plugged in).

If someone could offer some advice please?

1. The relevant lines from /var/log/messages:

Jun 13 15:52:38 formaggio kernel: pcm3: <Realtek (0x0287) (Analog)> at
nid 23 and 25 on hdaa1
Jun 13 15:52:38 formaggio kernel: pcm4: <Realtek (0x0287) (Left Analog
Headphones)> at nid 33 on hdaa1

I think pcm3 should be (but isn't yet) the in-build speakers and mic.
At the moment it seems that it is the in-built speakers and external
headset boom mic.
I think pcm4 should be (but isn't yet) the headset's headphones and
boom mic. At the moment it seems that it is only the headset's
headphones.

2. The output from sysctl dev.hdac.1.pindump=1:

Jun 14 16:27:26 formaggio kernel: hdaa1: Dumping AFG pins:
Jun 14 16:27:26 formaggio kernel: hdaa1: nid   0x    as seq device
  conn  jack    loc      color   misc
Jun 14 16:27:26 formaggio kernel: hdaa1: 18 40000000 0  0  Line-out
  None  Unknown 0x00      Unknown 0 DISA
Jun 14 16:27:26 formaggio kernel: hdaa1:     Caps: IN
Jun 14 16:27:26 formaggio kernel: hdaa1: 19 411111f0 15 0  Speaker
  None  1/8     Rear      Black   1 DISA
Jun 14 16:27:26 formaggio kernel: hdaa1:     Caps: IN
Jun 14 16:27:26 formaggio kernel: hdaa1: 20 411111f0 15 0  Speaker
  None  1/8     Rear       Black   1 DISA
Jun 14 16:27:26 formaggio kernel: hdaa1:     Caps:    OUT    EAPD
Sense: 0x00000000 (disconnected)
Jun 14 16:27:26 formaggio kernel: hdaa1: 23 90170110 1  0  Speaker
  Fixed Analog  Internal   Unknown 1
Jun 14 16:27:26 formaggio kernel: hdaa1:     Caps:    OUT HP
Sense: 0x00000000 (disconnected)
Jun 14 16:27:26 formaggio kernel: hdaa1: 24 411111f0 15 0  Speaker
  None  1/8     Rear       Black   1 DISA
Jun 14 16:27:26 formaggio kernel: hdaa1:     Caps: IN
Sense: 0x00000000 (disconnected)
Jun 14 16:27:26 formaggio kernel: hdaa1: 25 03a11030 3  0  Mic
  Jack  1/8     Left       Black   0
Jun 14 16:27:26 formaggio kernel: hdaa1:     Caps: IN             VREF
Sense: 0x00000000 (disconnected)
Jun 14 16:27:26 formaggio kernel: hdaa1: 26 411111f0 15 0  Speaker
  None  1/8     Rear       Black   1 DISA
Jun 14 16:27:26 formaggio kernel: hdaa1:     Caps: IN             VREF
Sense: 0x00000000 (disconnected)
Jun 14 16:27:26 formaggio kernel: hdaa1: 27 411111f0 15 0  Speaker
  None  1/8     Rear       Black   1 DISA
Jun 14 16:27:26 formaggio kernel: hdaa1:     Caps: IN OUT    EAPD VREF
Sense: 0x00000000 (disconnected)
Jun 14 16:27:26 formaggio kernel: hdaa1: 30 411111f0 15 0  Speaker
  None  1/8     Rear       Black   1 DISA
Jun 14 16:27:26 formaggio kernel: hdaa1:     Caps:    OUT
Jun 14 16:27:26 formaggio kernel: hdaa1: 33 03211020 2  0  Headphones
  Jack  1/8     Left       Black   0
Jun 14 16:27:26 formaggio kernel: hdaa1:     Caps:    OUT HP EAPD
Sense: 0x00000000 (disconnected)
Jun 14 16:27:26 formaggio kernel: hdaa1: NumGPIO=5 NumGPO=0 NumGPI=0
GPIWake=0 GPIUnsol=1
Jun 14 16:27:26 formaggio kernel: hdaa1:  GPIO0: disabled
Jun 14 16:27:26 formaggio kernel: hdaa1:  GPIO1: disabled
Jun 14 16:27:26 formaggio kernel: hdaa1:  GPIO2: disabled
Jun 14 16:27:26 formaggio kernel: hdaa1:  GPIO3: disabled
Jun 14 16:27:26 formaggio kernel: hdaa1:  GPIO4: disabled

3. The output from cat /dev/sndstat:

FreeBSD Audio Driver
Installed devices:
pcm0: <NVIDIA (0x00a0) (HDMI/DP 8ch)> on hdaa0 (1p:1v/0r:0v)
snddev flags=0x200002e7<SIMPLEX,AUTOVCHAN,SOFTPCMVOL,BUSY,MPSAFE,REGISTERED,VPC,PRIO_WR>
[pcm0:play:dsp0.p0]: spd 48000, fmt 0x00200010, flags 0x00006108, 0x00000004
interrupts 780930, underruns 0, feed 780930, ready 0
[b:2048/1024/2|bs:2048/1024/2]
channel flags=0x6108<TRIGGERED,BUSY,HAS_VCHAN,VCHAN_PASSTHROUGH>
{userland} -> feeder_mixer(0x00200010) -> {hardware}
pcm0:play:dsp0.p0[pcm0:virtual_play:dsp0.vp0]: spd 44100/48000, fmt
0x00200010, flags 0x100011c8, 0x00000029, pid 3380 (pulseaudio)
interrupts 0, underruns 0, feed 825565, ready 15440 [b:0/0/0|bs:16384/4096/4]
channel flags=0x100011c8<TRIGGERED,NBIO,MMAP,BUSY,HAS_SIZE,VIRTUAL>
{userland} -> feeder_root(0x00200010) -> feeder_volume(0x00200010) ->
feeder_rate(0x00200010 q:1 44100 -> 48000) -> {hardware}
pcm1: <NVIDIA (0x00a0) (HDMI/DP 8ch)> on hdaa0 (1p:1v/0r:0v)
snddev flags=0x200002e7<SIMPLEX,AUTOVCHAN,SOFTPCMVOL,BUSY,MPSAFE,REGISTERED,VPC,PRIO_WR>
[pcm1:play:dsp1.p0]: spd 48000, fmt 0x00200010, flags 0x00006108, 0x00000004
interrupts 780929, underruns 0, feed 780929, ready 0
[b:2048/1024/2|bs:2048/1024/2]
channel flags=0x6108<TRIGGERED,BUSY,HAS_VCHAN,VCHAN_PASSTHROUGH>
{userland} -> feeder_mixer(0x00200010) -> {hardware}
pcm1:play:dsp1.p0[pcm1:virtual_play:dsp1.vp0]: spd 44100/48000, fmt
0x00200010, flags 0x100011c8, 0x00000029, pid 3380 (pulseaudio)
interrupts 0, underruns 0, feed 825564, ready 15444 [b:0/0/0|bs:16384/4096/4]
channel flags=0x100011c8<TRIGGERED,NBIO,MMAP,BUSY,HAS_SIZE,VIRTUAL>
{userland} -> feeder_root(0x00200010) -> feeder_volume(0x00200010) ->
feeder_rate(0x00200010 q:1 44100 -> 48000) -> {hardware}
pcm2: <NVIDIA (0x00a0) (HDMI/DP 8ch)> on hdaa0 (1p:1v/0r:0v)
snddev flags=0x200002e7<SIMPLEX,AUTOVCHAN,SOFTPCMVOL,BUSY,MPSAFE,REGISTERED,VPC,PRIO_WR>
[pcm2:play:dsp2.p0]: spd 48000, fmt 0x00200010, flags 0x00006108, 0x00000004
interrupts 780928, underruns 0, feed 780928, ready 0
[b:2048/1024/2|bs:2048/1024/2]
channel flags=0x6108<TRIGGERED,BUSY,HAS_VCHAN,VCHAN_PASSTHROUGH>
{userland} -> feeder_mixer(0x00200010) -> {hardware}
pcm2:play:dsp2.p0[pcm2:virtual_play:dsp2.vp0]: spd 44100/48000, fmt
0x00200010, flags 0x100011c8, 0x00000029, pid 3380 (pulseaudio)
interrupts 0, underruns 0, feed 825563, ready 15444 [b:0/0/0|bs:16384/4096/4]
channel flags=0x100011c8<TRIGGERED,NBIO,MMAP,BUSY,HAS_SIZE,VIRTUAL>
{userland} -> feeder_root(0x00200010) -> feeder_volume(0x00200010) ->
feeder_rate(0x00200010 q:1 44100 -> 48000) -> {hardware}
pcm3: <Realtek (0x0287) (Analog)> on hdaa1 (1p:1v/1r:1v) default
snddev flags=0x2e2<AUTOVCHAN,BUSY,MPSAFE,REGISTERED,VPC>
[pcm3:play:dsp3.p0]: spd 48000, fmt 0x00200010, flags 0x00002108, 0x00000004
interrupts 779568, underruns 0, feed 779568, ready 0
[b:2048/1024/2|bs:2048/1024/2]
channel flags=0x2108<TRIGGERED,BUSY,HAS_VCHAN>
{userland} -> feeder_mixer(0x00200010) -> {hardware}
pcm3:play:dsp3.p0[pcm3:virtual_play:dsp3.vp0]: spd 44100/48000, fmt
0x00200010, flags 0x100011c8, 0x00000029, pid 3380 (pulseaudio)
interrupts 0, underruns 0, feed 824151, ready 15444 [b:0/0/0|bs:16384/4096/4]
channel flags=0x100011c8<TRIGGERED,NBIO,MMAP,BUSY,HAS_SIZE,VIRTUAL>
{userland} -> feeder_root(0x00200010) -> feeder_volume(0x00200010) ->
feeder_rate(0x00200010 q:1 44100 -> 48000) -> {hardware}
[pcm3:record:dsp3.r0]: spd 48000, fmt 0x00200010, flags 0x00002108, 0x00000005
interrupts 3118265, overruns 0, feed 6236529, hfree 512, sfree 511
[b:512/256/2|bs:512/256/2]
channel flags=0x2108<TRIGGERED,BUSY,HAS_VCHAN>
{hardware} -> feeder_root(0x00200010) -> feeder_mixer(0x00200010) -> {userland}
pcm3:record:dsp3.r0[pcm3:virtual_record:dsp3.vr0]: spd 44100/48000,
fmt 0x00200010, flags 0x100011c8, 0x00000029, pid 3380 (pulseaudio)
interrupts 0, overruns 0, feed 9403539, hfree 0, sfree 16148
[b:0/0/0|bs:16384/4096/4]
channel flags=0x100011c8<TRIGGERED,NBIO,MMAP,BUSY,HAS_SIZE,VIRTUAL>
{hardware} -> feeder_root(0x00200010) -> feeder_rate(0x00200010 q:1
48000 -> 44100) -> feeder_volume(0x00200010) -> {userland}
pcm4: <Realtek (0x0287) (Left Analog Headphones)> on hdaa1 (1p:1v/0r:0v)
snddev flags=0x200002e3<SIMPLEX,AUTOVCHAN,BUSY,MPSAFE,REGISTERED,VPC,PRIO_WR>
[pcm4:play:dsp4.p0]: spd 48000, fmt 0x00200010, flags 0x00002108, 0x00000004
interrupts 779568, underruns 0, feed 779568, ready 0
[b:2048/1024/2|bs:2048/1024/2]
channel flags=0x2108<TRIGGERED,BUSY,HAS_VCHAN>
{userland} -> feeder_mixer(0x00200010) -> {hardware}
pcm4:play:dsp4.p0[pcm4:virtual_play:dsp4.vp0]: spd 44100/48000, fmt
0x00200010, flags 0x100011c8, 0x00000029, pid 3380 (pulseaudio)
interrupts 0, underruns 0, feed 824148, ready 15444 [b:0/0/0|bs:16384/4096/4]
channel flags=0x100011c8<TRIGGERED,NBIO,MMAP,BUSY,HAS_SIZE,VIRTUAL>
{userland} -> feeder_root(0x00200010) -> feeder_volume(0x00200010) ->
feeder_rate(0x00200010 q:1 44100 -> 48000) -> {hardware}
pcm5: <Intel Tiger Lake (HDMI/DP 8ch)> on hdaa2 (1p:1v/0r:0v)
snddev flags=0x200002e7<SIMPLEX,AUTOVCHAN,SOFTPCMVOL,BUSY,MPSAFE,REGISTERED,VPC,PRIO_WR>
[pcm5:play:dsp5.p0]: spd 48000, fmt 0x00200010, flags 0x00006108, 0x00000004
interrupts 779566, underruns 0, feed 779566, ready 0
[b:2048/1024/2|bs:2048/1024/2]
channel flags=0x6108<TRIGGERED,BUSY,HAS_VCHAN,VCHAN_PASSTHROUGH>
{userland} -> feeder_mixer(0x00200010) -> {hardware}
pcm5:play:dsp5.p0[pcm5:virtual_play:dsp5.vp0]: spd 44100/48000, fmt
0x00200010, flags 0x100011c8, 0x00000029, pid 3380 (pulseaudio)
interrupts 0, underruns 0, feed 824148, ready 15328 [b:0/0/0|bs:16384/4096/4]
channel flags=0x100011c8<TRIGGERED,NBIO,MMAP,BUSY,HAS_SIZE,VIRTUAL>
{userland} -> feeder_root(0x00200010) -> feeder_volume(0x00200010) ->
feeder_rate(0x00200010 q:1 44100 -> 48000) -> {hardware}

4. The output from mixer:

pcm3:mixer: <Realtek (0x0287) (Analog)> on hdaa1 (play/rec) (default)
    vol       = 0.85:0.85     pbk
    pcm       = 1.00:1.00     pbk
    speaker   = 1.00:1.00     rec
    mic       = 1.00:1.00     rec src
    rec       = 1.00:1.00     pbk


5. The output from sysctl hw.snd:

hw.snd.maxautovchans: 16
hw.snd.default_unit: 3
hw.snd.default_auto: 1
hw.snd.verbose: 4
hw.snd.vpc_mixer_bypass: 1
hw.snd.feeder_rate_quality: 1
hw.snd.feeder_rate_round: 25
hw.snd.feeder_rate_max: 2016000
hw.snd.feeder_rate_min: 1
hw.snd.feeder_rate_polyphase_max: 183040
hw.snd.feeder_rate_presets: 100:8:0.85 100:36:0.92 100:164:0.97
hw.snd.feeder_eq_exact_rate: 0
hw.snd.feeder_eq_presets:
PEQ:16000,0.2500,62,0.2500:-9,9,1.0:44100,48000,88200,96000,176400,192000
hw.snd.basename_clone: 1
hw.snd.compat_linux_mmap: 0
hw.snd.syncdelay: -1
hw.snd.usefrags: 0
hw.snd.vpc_reset: 0
hw.snd.vpc_0db: 45
hw.snd.vpc_autoreset: 1
hw.snd.timeout: 5
hw.snd.latency_profile: 1
hw.snd.latency: 2
hw.snd.report_soft_matrix: 1
hw.snd.report_soft_formats: 1

6. The output from sysctl dev.pcm:

sysctl dev.pcm
dev.pcm.5.mode: 3
dev.pcm.5.bitperfect: 0
dev.pcm.5.buffersize: 65536
dev.pcm.5.play.vchanformat: s16le:2.0
dev.pcm.5.play.vchanrate: 48000
dev.pcm.5.play.vchanmode: passthrough
dev.pcm.5.play.vchans: 1
dev.pcm.5.play.32bit: 24
dev.pcm.5.%parent: hdaa2
dev.pcm.5.%pnpinfo:
dev.pcm.5.%location: nid=4
dev.pcm.5.%driver: pcm
dev.pcm.5.%desc: Intel Tiger Lake (HDMI/DP 8ch)
dev.pcm.4.mode: 3
dev.pcm.4.bitperfect: 0
dev.pcm.4.buffersize: 65536
dev.pcm.4.play.vchanformat: s16le:2.0
dev.pcm.4.play.vchanrate: 48000
dev.pcm.4.play.vchanmode: fixed
dev.pcm.4.play.vchans: 1
dev.pcm.4.play.32bit: 24
dev.pcm.4.%parent: hdaa1
dev.pcm.4.%pnpinfo:
dev.pcm.4.%location: nid=33
dev.pcm.4.%driver: pcm
dev.pcm.4.%desc: Realtek (0x0287) (Left Analog Headphones)
dev.pcm.3.mode: 7
dev.pcm.3.bitperfect: 0
dev.pcm.3.buffersize: 65536
dev.pcm.3.rec.vchanformat: s16le:2.0
dev.pcm.3.rec.vchanrate: 48000
dev.pcm.3.rec.vchanmode: fixed
dev.pcm.3.rec.vchans: 1
dev.pcm.3.rec.autosrc: 2
dev.pcm.3.rec.32bit: 24
dev.pcm.3.play.vchanformat: s16le:2.0
dev.pcm.3.play.vchanrate: 48000
dev.pcm.3.play.vchanmode: fixed
dev.pcm.3.play.vchans: 1
dev.pcm.3.play.32bit: 24
dev.pcm.3.%parent: hdaa1
dev.pcm.3.%pnpinfo:
dev.pcm.3.%location: nid=23,25
dev.pcm.3.%driver: pcm
dev.pcm.3.%desc: Realtek (0x0287) (Analog)
dev.pcm.2.mode: 3
dev.pcm.2.bitperfect: 0
dev.pcm.2.buffersize: 65536
dev.pcm.2.play.vchanformat: s16le:2.0
dev.pcm.2.play.vchanrate: 48000
dev.pcm.2.play.vchanmode: passthrough
dev.pcm.2.play.vchans: 1
dev.pcm.2.play.32bit: 24
dev.pcm.2.%parent: hdaa0
dev.pcm.2.%pnpinfo:
dev.pcm.2.%location: nid=7
dev.pcm.2.%driver: pcm
dev.pcm.2.%desc: NVIDIA (0x00a0) (HDMI/DP 8ch)
dev.pcm.1.mode: 3
dev.pcm.1.bitperfect: 0
dev.pcm.1.buffersize: 65536
dev.pcm.1.play.vchanformat: s16le:2.0
dev.pcm.1.play.vchanrate: 48000
dev.pcm.1.play.vchanmode: passthrough
dev.pcm.1.play.vchans: 1
dev.pcm.1.play.32bit: 24
dev.pcm.1.%parent: hdaa0
dev.pcm.1.%pnpinfo:
dev.pcm.1.%location: nid=6
dev.pcm.1.%driver: pcm
dev.pcm.1.%desc: NVIDIA (0x00a0) (HDMI/DP 8ch)
dev.pcm.0.mode: 3
dev.pcm.0.bitperfect: 0
dev.pcm.0.buffersize: 65536
dev.pcm.0.play.vchanformat: s16le:2.0
dev.pcm.0.play.vchanrate: 48000
dev.pcm.0.play.vchanmode: passthrough
dev.pcm.0.play.vchans: 1
dev.pcm.0.play.32bit: 24
dev.pcm.0.%parent: hdaa0
dev.pcm.0.%pnpinfo:
dev.pcm.0.%location: nid=4
dev.pcm.0.%driver: pcm
dev.pcm.0.%desc: NVIDIA (0x00a0) (HDMI/DP 8ch)
dev.pcm.%parent:

7. In-case it is useful I also attach below the output from `cat
/proc/asound/card1/codec#0` on Ubuntu 24.04 running on the same laptop
(where both mics work correctly and as expected). I note that this
also contains a number of nid, but there seem to be more of them than
from snd_hda:

Codec: Realtek ALC287
Address: 0
AFG Function Id: 0x1 (unsol 1)
Vendor Id: 0x10ec0287
Subsystem Id: 0x17aa22e5
Revision Id: 0x100002
No Modem Function Group found
Default PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
Default Amp-In caps: N/A
Default Amp-Out caps: N/A
State of AFG node 0x01:
  Power states:  D0 D1 D2 D3 D3cold CLKSTOP EPSS
  Power: setting=D0, actual=D0
GPIO: io=5, o=0, i=0, unsolicited=1, wake=0
  IO[0]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
  IO[1]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
  IO[2]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
  IO[3]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
  IO[4]: enable=0, dir=0, wake=0, sticky=0, data=0, unsol=0
Node 0x02 [Audio Output] wcaps 0x41d: Stereo Amp-Out
  Control: name="Speaker Playback Volume", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0
  Amp-Out vals:  [0x4a 0x4a]
  Converter: stream=0, channel=0
  PCM:
    rates [0x40]: 48000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
Node 0x03 [Audio Output] wcaps 0x41d: Stereo Amp-Out
  Control: name="Headphone Playback Volume", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Amp-Out caps: ofs=0x57, nsteps=0x57, stepsize=0x02, mute=0
  Amp-Out vals:  [0x38 0x38]
  Converter: stream=0, channel=0
  PCM:
    rates [0x40]: 48000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
Node 0x04 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x05 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x06 [Audio Output] wcaps 0x411: Stereo
  Converter: stream=0, channel=0
  PCM:
    rates [0x40]: 48000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
Node 0x07 [Audio Input] wcaps 0x10051b: Stereo Amp-In
  Amp-In caps: ofs=0x17, nsteps=0x3f, stepsize=0x02, mute=1
  Amp-In vals:  [0x97 0x97]
  Converter: stream=0, channel=0
  SDI-Select: 0
  PCM:
    rates [0x40]: 48000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x24
Node 0x08 [Audio Input] wcaps 0x10051b: Stereo Amp-In
  Control: name="Capture Volume", index=0, device=0
    ControlAmp: chs=3, dir=In, idx=0, ofs=0
  Control: name="Capture Switch", index=0, device=0
    ControlAmp: chs=3, dir=In, idx=0, ofs=0
  Amp-In caps: ofs=0x17, nsteps=0x3f, stepsize=0x02, mute=1
  Amp-In vals:  [0x3f 0x3f]
  Converter: stream=0, channel=0
  SDI-Select: 0
  PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x23
Node 0x09 [Audio Input] wcaps 0x10051b: Stereo Amp-In
  Amp-In caps: ofs=0x17, nsteps=0x3f, stepsize=0x02, mute=1
  Amp-In vals:  [0x97 0x97]
  Converter: stream=0, channel=0
  SDI-Select: 0
  PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x22
Node 0x0a [Audio Input] wcaps 0x10051b: Stereo Amp-In
  Amp-In caps: ofs=0x17, nsteps=0x3f, stepsize=0x02, mute=1
  Amp-In vals:  [0x97 0x97]
  Converter: stream=0, channel=0
  SDI-Select: 0
  PCM:
    rates [0x40]: 48000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x25
Node 0x0b [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x0c [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x0d [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x0e [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x0f [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x10 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x11 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x12 [Pin Complex] wcaps 0x40040b: Stereo Amp-In
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Pincap 0x00000020: IN
  Pin Default 0x40000000: [N/A] Line Out at Ext N/A
    Conn = Unknown, Color = Unknown
    DefAssociation = 0x0, Sequence = 0x0
  Pin-ctls: 0x00:
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
Node 0x13 [Pin Complex] wcaps 0x40040b: Stereo Amp-In
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Pincap 0x00000020: IN
  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
    Conn = 1/8, Color = Black
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x00:
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
Node 0x14 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x00010014: OUT EAPD Detect
  EAPD 0x2: EAPD
  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
    Conn = 1/8, Color = Black
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x00:
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x02
Node 0x15 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x16 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x17 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  Control: name="Speaker Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x00 0x00]
  Pincap 0x0000001c: OUT HP Detect
  Pin Default 0x90170110: [Fixed] Speaker at Int N/A
    Conn = Analog, Color = Unknown
    DefAssociation = 0x1, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x40: OUT
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 4
     0x02* 0x03 0x06 0x08
  In-driver Connection: 2
     0x02 0x03
Node 0x18 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Pincap 0x00000024: IN Detect
  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
    Conn = 1/8, Color = Black
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x00:
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
Node 0x19 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
  Control: name="Mic Boost Volume", index=0, device=0
    ControlAmp: chs=3, dir=In, idx=0, ofs=0
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x03 0x03]
  Pincap 0x00003724: IN Detect
    Vref caps: HIZ 50 GRD 80 100
  Pin Default 0x03a11030: [Jack] Mic at Ext Left
    Conn = 1/8, Color = Black
    DefAssociation = 0x3, Sequence = 0x0
  Pin-ctls: 0x24: IN VREF_80
  Unsolicited: tag=03, enabled=1
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
Node 0x1a [Pin Complex] wcaps 0x40048b: Stereo Amp-In
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Pincap 0x00003724: IN Detect
    Vref caps: HIZ 50 GRD 80 100
  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
    Conn = 1/8, Color = Black
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x00: VREF_HIZ
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
Node 0x1b [Pin Complex] wcaps 0x40058f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x00013734: IN OUT EAPD Detect
    Vref caps: HIZ 50 GRD 80 100
  EAPD 0x2: EAPD
  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
    Conn = 1/8, Color = Black
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x00: VREF_HIZ
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 2
     0x02* 0x03
Node 0x1c [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x1d [Pin Complex] wcaps 0x400400: Mono
  Pincap 0x00000020: IN
  Pin Default 0x40471a6d: [N/A] SPDIF Out at Ext N/A
    Conn = Analog, Color = Black
    DefAssociation = 0x6, Sequence = 0xd
  Pin-ctls: 0x20: IN
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
Node 0x1e [Pin Complex] wcaps 0x400501: Stereo
  Pincap 0x00000010: OUT
  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
    Conn = 1/8, Color = Black
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x40: OUT
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x06
Node 0x1f [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x20 [Vendor Defined Widget] wcaps 0xf00040: Mono
  Processing caps: benign=0, ncoeff=142
Node 0x21 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  Control: name="Headphone Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x0001001c: OUT HP EAPD Detect
  EAPD 0x2: EAPD
  Pin Default 0x03211020: [Jack] HP Out at Ext Left
    Conn = 1/8, Color = Black
    DefAssociation = 0x2, Sequence = 0x0
  Pin-ctls: 0xc0: OUT HP
  Unsolicited: tag=02, enabled=1
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 2
     0x02 0x03*
Node 0x22 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
  Connection: 5
     0x19 0x1a 0x1b 0x1d 0x13
Node 0x23 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x00 0x00] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
  Connection: 5
     0x19 0x1a 0x1b 0x1d 0x12
Node 0x24 [Audio Selector] wcaps 0x300101: Stereo
  Connection: 3
     0x12* 0x13 0x18
Node 0x25 [Audio Selector] wcaps 0x300101: Stereo
  Connection: 2
     0x12* 0x13


Thank you, Adam.