snd_hda: loud distorted sound with NVidia MCP51

Hiroharu Tamaru tamaru at myn.rcast.u-tokyo.ac.jp
Mon Dec 11 07:55:56 PST 2006


Hi, Ariff,

I hope you don't mind my bothering you for another run.

I've now tried the 4Front opensound driver.
It turned out that the initial mixer settings gave the same
kind of distorted sound, but adjusting in the ossmix (for
pin function and mutes and NOT the volume) made it all fine.
Could this experience be used to tune snd_hda driver for my environment?

I now kind of partially understand (or am able to imagine..) what the
HDA node dumps in the pcm0 verbose dmesg mean ;-)
Is it possible to mute arbitrary connection to an "audio
mixer" nodes from userland? or do I have to get your source
patches and start working with them?

In my case, I think it is most important to mute the second
connection(nid=15) to nid=28

pcm0:             nid: 28 [ANALOG]
pcm0:            name: audio mixer
pcm0:      widget_cap: 0x0020010b
pcm0:     Parse flags: 0x00000002
pcm0:       Ctl flags: 0x00000041
pcm0:       Input amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 2
pcm0:           |
pcm0:           + <- nid=12 [pin: line in (jack)]
pcm0:           |
pcm0:           + <- nid=15 [pin: headphones out (jack)]


Playing with the 4Front ossmix, 
it appears that any pin that is assigned as output behaves like
an input pin that passes whatever it is playing out of this pin
to the upper mixer.  In the above case, whatever is output to pin nid=15
is also sent to mixer nid=28 which in turn is sent to mixer nid=25,
and then again to pin nid=15, forming a loop.
The pin nid=15 connection to mixer nid=28 is there to be used when pin
nid=15 is configured as an input pin, so I assume it must be muted here
if pin nid=15 is to be used as an output.

Can you tell from the logs whether it is already muted or not?

There seems to be other ways of making loops in this setup.
How should I proceed to check them around?

I looked into the source patches as well, but unfortunately I was able
to understand very little of them yet.

Am I speaking something reasonable?
Or, am I completely lost?

Details below.

Thank you
Hiroharu Tamaru


===========================================================================
First from the 4Front driver.

% ossinfo
Version info: OSS 4.0rc2 (build 179/200611230255) (0x00040001)

Number of audio devices:	18
Number of audio engines:	0
Number of MIDI devices:		0
Number of mixer devices:	2


Device objects
 0: hdaudio0 nVidia nForce4 High Definition Audio
 1: softoss0 OSS Virtual Mixer v3.0

MIDI devices (/dev/midi*)

Mixer devices (/dev/mixer*)
 0: nVidia nForce4 High Definition A' (Mixer 0 of device object 0)
 1: Virtual Mixer (Mixer 0 of device object 1)

Audio devices
/dev/oss/hdaudio0/pcm0: nVidia nForce4 High Definition Audio play-front output  (device index 0)
/dev/oss/hdaudio0/pcm1: nVidia nForce4 High Definition Audio play-side output  (device index 1)
/dev/oss/hdaudio0/pcm2: nVidia nForce4 High Definition Audio play-center/LFE output  (device index 2)
/dev/oss/hdaudio0/pcm3: nVidia nForce4 High Definition Audio play-rear output  (device index 3)
/dev/oss/hdaudio0/pcm4: nVidia nForce4 High Definition Audio play-front output  (device index 4)
/dev/oss/hdaudio0/pcm5: nVidia nForce4 High Definition Audio rec input  (device index 5)
/dev/oss/softoss0/pcm0: OSS Virtual Mixer v3.0 Playback CH #1  (device index 6)
/dev/oss/softoss0/pcm1: OSS Virtual Mixer v3.0 Playback CH #2  (device index 7)
/dev/oss/softoss0/pcm2: OSS Virtual Mixer v3.0 Playback CH #3  (device index 8)
/dev/oss/softoss0/pcm3: OSS Virtual Mixer v3.0 Playback CH #4  (device index 9)
/dev/oss/softoss0/pcm4: OSS Virtual Mixer v3.0 Playback CH #5  (device index 10)
/dev/oss/softoss0/pcm5: OSS Virtual Mixer v3.0 Playback CH #6  (device index 11)
/dev/oss/softoss0/pcm6: OSS Virtual Mixer v3.0 Playback CH #7  (device index 12)
/dev/oss/softoss0/pcm7: OSS Virtual Mixer v3.0 Playback CH #8  (device index 13)
/dev/oss/softoss0/pcm8: Virtual Mixer Loopback Record CH #1  (device index 14)
/dev/oss/softoss0/pcm9: Virtual Mixer Loopback Record CH #2  (device index 15)
/dev/oss/softoss0/pcm10: Virtual Mixer Loopback Record CH #3  (device index 16)
/dev/oss/softoss0/pcm11: Virtual Mixer Loopback Record CH #4  (device index 17)

% ossmix
Selected mixer 0/
Known controls are:
	connector.green1.play-frontmute ON|OFF (currently OFF)
	connector.green1.outmixmute ON|OFF (currently OFF)
	connector.blue.function <output|mic-in|line-in> (currently output)
	connector.blue.play-rearmute ON|OFF (currently OFF)
	connector.blue.outmixmute ON|OFF (currently OFF)
	connector.pink1.function <output|mic-in|line-in> (currently output)
	connector.pink1.play-center/lfe ON|OFF (currently OFF)
	connector.pink1.outmixmute ON|OFF (currently OFF)
	connector.black1.play-rearmute ON|OFF (currently OFF)
	connector.black1.outmixmute ON|OFF (currently OFF)
	connector.green2.function <output|mic-in|line-in> (currently output)
	connector.green2.mute.play-side ON|OFF (currently OFF)
	connector.green2.mute.play-rear ON|OFF (currently OFF)
	connector.green2.mute.outmix ON|OFF (currently OFF)
	connector.green2.mute.play-fron ON|OFF (currently OFF)
	connector.pink2.function <output|mic-in|line-in> (currently output)
	connector.pink2.mute.play-side ON|OFF (currently OFF)
	connector.pink2.mute.play-rear ON|OFF (currently OFF)
	connector.pink2.mute.outmix ON|OFF (currently OFF)
	connector.pink2.mute.play-front ON|OFF (currently OFF)
	connector.cd.function <mic-in|line-in> (currently mic-in)
	connector.black2.mute ON|OFF (currently OFF)
	connector.black3.play-center/lf ON|OFF (currently OFF)
	connector.black3.outmixmute ON|OFF (currently OFF)
	connector.black4.play-sidemute ON|OFF (currently OFF)
	connector.black4.outmixmute ON|OFF (currently OFF)
	 <both/leftvol>[:<rightvol>] (currently 329:329)  <-- (a)
	record.rec.src <pink1|blue|green2|pink2|cd|outmix> (currently pink1)
	misc.play-front.mute ON|OFF (currently OFF)
	misc.play-side.mute ON|OFF (currently OFF)
	misc.play-center/lfe.mute ON|OFF (currently OFF)
	misc.play-rear.mute ON|OFF (currently OFF)
	misc.recmix1.pink1mute ON|OFF (currently OFF)
	misc.recmix1.pink2mute ON|OFF (currently OFF)
	 <both/leftvol>[:<rightvol>] (currently 569:569)  <-- (b)
	 <both/leftvol>[:<rightvol>] (currently 569:569)  <-- (c)
	 <both/leftvol>[:<rightvol>] (currently 569:569)  <-- (d)
	 <both/leftvol>[:<rightvol>] (currently 299:299)  <-- (e)
	misc.line1mix.bluemute ON|OFF (currently ON)
	misc.line1mix.green2mute ON|OFF (currently ON)
	 <monovol> (currently 389)                        <---(f)

on the GUI ossxmix:
(a) is recording volume
(b) is outmix cd vol
(c) is outmix recmix1 vol
(d) is outmix line1mix vol
(e) is outmix master vol
(f) is beep vol

For sound output to /dev/oss/hdaudio0/pcm0 (play-front output)
with "mplayer -ao oss:/dev/oss/hdaudio0/pcm0 foo.mp3",
there are some combinations of mutes that gave undistorted output.
Most effective knob was
% ossmix misc.line1mix.green2mute ON


So, this is what I imagined how the nodes should be configured:

output : green1 & green2
line   : blue
mic    : pink1 & pink2
cd     : cd
unused : black1 black2 black3 black4

[PCMoutputs]
nid 3 : p-front
nid 4 : p-side
nid 5 : p-center
nid 6 : p-rear

nid 7 : spdif-out
nid 35: beep

[pins]
nid 11 : line out (from 22)          : green1 (p-front speaker)
nid 12 : line in (from 25)           : blue
nid 13 : mic (from 24)               : pink1
nid 14 : spkeaker disabled (from 25) : black2 (p-rear speaker)
nid 15 : headphone out (from 26)     : green2
nid 16 : mic (from 27)               : pink2
nid 17 : CD input                    : cd
nid 18 : spdif disabled
nid 31 : speakder disabled (from 24) : black3 (p-center speaker)
nid 32 : speaker disabled (from 23)  : black4 (p-side speaker)

audio mixers:
nid     connections                               where to go         mute
-------------------------------------------------------------------------------
nid 20: pink1(13) + pink2(16)                    : recmix1           : no mute
nid 28: blue(12) + green2(15)                    : line1mix   : mute green2(15)

nid 21: cd(17) + recmix1(20) + line1mix(28)      : outmix            : no mute
nid 22: p-front(3) + outmix(21)                  : green1(11)        : no mute
nid 23: p-side(4) + outmix(21)                   : black4(32)        : mute all
nid 24: p-center(5) + outmix(21)               : pink1(13),black3(31): mute all
nid 25: p-rear(6) + outmix(21)                  : blue(12),black2(14): mute all
nid 26: p-side(4)+p-rear(6)+outmix(21)+p-front(3): green2            : no mute
nid 27: p-side(4)+p-rear(6)+outmix(21)+p-front(3): pink2             : mute all
----------------------------------------------------------------------^^^^^^^^^
                                         These are the mute states I'd assume.

nid 8 : pink1(13)+blue(12)+green2(15)+pink2(16)+cd(17)+outmix(21): rec :
	always mute green2
	select one of blue,(pink1+pink2),cd,vol

nic  9 : vendor widget
nic 10 : vendor widget



pcm0: <NVidia MCP51 High Definition Audio Controller> mem 0xfe028000-0xfe02bfff irq 20 at device 16.1 on pci0
pcm0: Reserved 0x4000 bytes for rid 0x10 type 3 at 0xfe028000
pcm0: [MPSAFE]
pcm0: HDA_DEBUG: HDA Config: on=0x00000000 off=0x00000000
pcm0: HDA_DEBUG: Starting CORB Engine...
pcm0: HDA_DEBUG: Starting RIRB Engine...
pcm0: HDA_DEBUG: Enabling controller interrupt...
pcm0: HDA_DEBUG: Scanning HDA codecs...
pcm0: HDA_DEBUG: Probing codec: 0
pcm0: HDA_DEBUG: 	startnode=1 endnode=2
pcm0: HDA_DEBUG: 	Found AFG nid=1 [startnode=1 endnode=2]
pcm0: HDA_DEBUG: Parsing AFG nid=1 cad=0
pcm0:        Vendor: 0x000010ec
pcm0:        Device: 0x00000861
pcm0:      Revision: 0x00000003
pcm0:      Stepping: 0x000000c0
pcm0: PCI Subvendor: 0x81cb1043
pcm0:         Nodes: start=3 endnode=36 total=33
pcm0: HDA_DEBUG: Parsing Ctls...
pcm0: HDA_DEBUG: Parsing vendor patch...
pcm0: HDA_DEBUG: Building AFG tree...
pcm0: HDA_DEBUG: HWiP: HDA Widget Parser - Revision 1
pcm0: HDA_DEBUG: HWiP: Found 2 DAC path using HDA_PARSE_MIXER strategy.
pcm0: HDA_DEBUG: AFG commit...
pcm0: HDA_DEBUG: Ctls commit...
pcm0: [ 3] Ctl nid=5 Bind to NONE
pcm0: [ 5] Ctl nid=7 DISABLED
pcm0: [ 9] Ctl nid=21 Bind to NONE
pcm0: [11] Ctl nid=21 childnid=20 Bind to NONE
pcm0: [12] Ctl nid=21 childnid=28 Bind to NONE
pcm0: [13] Ctl nid=22 childnid=3 Bind to NONE
pcm0: [14] Ctl nid=22 childnid=21 Bind to NONE
pcm0: [15] Ctl nid=23 childnid=4 Bind to NONE
pcm0: [16] Ctl nid=23 childnid=21 Bind to NONE
pcm0: [17] Ctl nid=24 childnid=5 Bind to NONE
pcm0: [18] Ctl nid=24 childnid=21 Bind to NONE
pcm0: [19] Ctl nid=25 childnid=6 Bind to NONE
pcm0: [20] Ctl nid=25 childnid=21 Bind to NONE
pcm0: [21] Ctl nid=26 childnid=4 Bind to NONE
pcm0: [22] Ctl nid=26 childnid=6 Bind to NONE
pcm0: [23] Ctl nid=26 childnid=21 Bind to NONE
pcm0: [24] Ctl nid=26 childnid=3 Bind to NONE
pcm0: [25] Ctl nid=27 childnid=4 Bind to NONE
pcm0: [26] Ctl nid=27 childnid=6 Bind to NONE
pcm0: [27] Ctl nid=27 childnid=21 Bind to NONE
pcm0: [28] Ctl nid=27 childnid=3 Bind to NONE
pcm0: [30] Ctl nid=28 childnid=15 Bind to NONE
pcm0: HDA_DEBUG: PCMDIR_PLAY setup...
pcm0: HDA_DEBUG: PCMDIR_REC setup...
pcm0: HDA_DEBUG: OSS mixer initialization...
pcm0: HDA_DEBUG: Enabling Soft PCM volume
pcm0: Mixer "vol": child=0x00000010
pcm0: Mixer "pcm": parent="vol"
pcm0: Mixer "speaker":
pcm0: Mixer "line":
pcm0: Mixer "mic":
pcm0: Mixer "cd":
pcm0: Mixer "rec":
pcm0: Soft PCM mixer ENABLED
pcm0: HDA_DEBUG: Registering PCM channels...
pcm0: sndbuf_setmap 3a752000, 4000; 0xe456a000 -> 3a752000
pcm0: sndbuf_setmap 3a737000, 4000; 0xe456e000 -> 3a737000
pcm0: <HDA Codec: Realtek ALC861>
pcm0: <HDA Codec ID: 0x10ec0861>
pcm0: <HDA Driver Revision: 20061203_0035>
pcm0: 
pcm0: HDA config/quirks: forcestereo
pcm0: 
pcm0: +-------------------+
pcm0: | DUMPING HDA NODES |
pcm0: +-------------------+
pcm0: 
pcm0: Default Parameter
pcm0: -----------------
pcm0:      Stream cap: 0x00000001
pcm0:          Format: PCM
pcm0:         PCM cap: 0x000e0140
pcm0:        PCM size: 16 20 24
pcm0:        PCM rate: 48 96
pcm0:          IN amp: 0x00000000
pcm0:         OUT amp: 0x80000000
pcm0: 
pcm0:             nid: 3 [ANALOG]
pcm0:            name: audio output
pcm0:      widget_cap: 0x00000405
pcm0:     Parse flags: 0x00000001
pcm0:       Ctl flags: 0x00000011
pcm0:      Stream cap: 0x00000001
pcm0:          Format: PCM
pcm0:         PCM cap: 0x000e0140
pcm0:        PCM size: 16 20 24
pcm0:        PCM rate: 48 96
pcm0:      Output amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 4 [ANALOG]
pcm0:            name: audio output
pcm0:      widget_cap: 0x00000405
pcm0:     Parse flags: 0x00000001
pcm0:       Ctl flags: 0x00000011
pcm0:      Stream cap: 0x00000001
pcm0:          Format: PCM
pcm0:         PCM cap: 0x000e0140
pcm0:        PCM size: 16 20 24
pcm0:        PCM rate: 48 96
pcm0:      Output amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 5 [ANALOG]
pcm0:            name: audio output
pcm0:      widget_cap: 0x00000405
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:      Stream cap: 0x00000001
pcm0:          Format: PCM
pcm0:         PCM cap: 0x000e0140
pcm0:        PCM size: 16 20 24
pcm0:        PCM rate: 48 96
pcm0:      Output amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 6 [ANALOG]
pcm0:            name: audio output
pcm0:      widget_cap: 0x00000405
pcm0:     Parse flags: 0x00000001
pcm0:       Ctl flags: 0x00000011
pcm0:      Stream cap: 0x00000001
pcm0:          Format: PCM
pcm0:         PCM cap: 0x000e0140
pcm0:        PCM size: 16 20 24
pcm0:        PCM rate: 48 96
pcm0:      Output amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 7 [DIGITAL] [DISABLED]
pcm0:            name: audio output
pcm0:      widget_cap: 0x00000605
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:      Stream cap: 0x00000001
pcm0:          Format: PCM
pcm0:         PCM cap: 0x000e0140
pcm0:        PCM size: 16 20 24
pcm0:        PCM rate: 48 96
pcm0:      Output amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 8 [ANALOG]
pcm0:            name: audio input
pcm0:      widget_cap: 0x0010051b
pcm0:     Parse flags: 0x00000006
pcm0:       Ctl flags: 0x00000800
pcm0:      Stream cap: 0x00000001
pcm0:          Format: PCM
pcm0:         PCM cap: 0x00020140
pcm0:        PCM size: 16
pcm0:        PCM rate: 48 96
pcm0:       Input amp: 0x800b0d02
pcm0:                  mute=1 step=13 size=11 offset=2
pcm0:     connections: 6
pcm0:           |
pcm0:           + <- nid=13 [pin: Mic in (jack)] (selected)
pcm0:           |
pcm0:           + <- nid=12 [pin: line in (jack)]
pcm0:           |
pcm0:           + <- nid=15 [pin: headphones out (jack)]
pcm0:           |
pcm0:           + <- nid=16 [pin: Mic in (jack)]
pcm0:           |
pcm0:           + <- nid=17 [pin: CD (fixed)]
pcm0:           |
pcm0:           + <- nid=21 [audio mixer]
pcm0: 
pcm0:             nid: 9 [ANALOG]
pcm0:            name: vendor widget
pcm0:      widget_cap: 0x00f00000
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 10 [ANALOG]
pcm0:            name: vendor widget
pcm0:      widget_cap: 0x00f00000
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 11 [ANALOG]
pcm0:            name: pin: line out (jack)
pcm0:      widget_cap: 0x00400581
pcm0:     Parse flags: 0x00000001
pcm0:       Ctl flags: 0x00000000
pcm0:         Pin cap: 0x0000001f
pcm0:                  ISC TRQD HP OUT : UNSOL
pcm0:      Pin config: 0x01014010
pcm0:     Pin control: 0x00000040 OUT
pcm0:     connections: 1
pcm0:           |
pcm0:           + <- nid=22 [audio mixer]
pcm0: 
pcm0:             nid: 12 [ANALOG]
pcm0:            name: pin: line in (jack)
pcm0:      widget_cap: 0x00400581
pcm0:     Parse flags: 0x00000002
pcm0:       Ctl flags: 0x00000041
pcm0:         Pin cap: 0x00000037
pcm0:                  ISC TRQD OUT IN : UNSOL
pcm0:      Pin config: 0x01813030
pcm0:     Pin control: 0x00000020 IN
pcm0:     connections: 1
pcm0:           |
pcm0:           + <- nid=25 [audio mixer]
pcm0: 
pcm0:             nid: 13 [ANALOG]
pcm0:            name: pin: Mic in (jack)
pcm0:      widget_cap: 0x00400581
pcm0:     Parse flags: 0x00000002
pcm0:       Ctl flags: 0x00000081
pcm0:         Pin cap: 0x00000337
pcm0:                  ISC TRQD OUT IN : UNSOL
pcm0:      Pin config: 0x01a19831
pcm0:     Pin control: 0x00000020 IN
pcm0:     connections: 1
pcm0:           |
pcm0:           + <- nid=24 [audio mixer]
pcm0: 
pcm0:             nid: 14 [ANALOG] [DISABLED]
pcm0:            name: pin: speaker (none)
pcm0:      widget_cap: 0x00400581
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:         Pin cap: 0x00000017
pcm0:                  ISC TRQD OUT : UNSOL
pcm0:      Pin config: 0x411111f0
pcm0:     Pin control: 0x00000040 OUT
pcm0:     connections: 1
pcm0:           |
pcm0:           + <- nid=25 [audio mixer]
pcm0: 
pcm0:             nid: 15 [ANALOG]
pcm0:            name: pin: headphones out (jack)
pcm0:      widget_cap: 0x00400581
pcm0:     Parse flags: 0x00000001
pcm0:       Ctl flags: 0x00000000
pcm0:         Pin cap: 0x0000033f
pcm0:                  ISC TRQD HP OUT IN : UNSOL
pcm0:      Pin config: 0x0221401f
pcm0:     Pin control: 0x000000c0 HP OUT
pcm0:     connections: 1
pcm0:           |
pcm0:           + <- nid=26 [audio mixer]
pcm0: 
pcm0:             nid: 16 [ANALOG]
pcm0:            name: pin: Mic in (jack)
pcm0:      widget_cap: 0x00400581
pcm0:     Parse flags: 0x00000002
pcm0:       Ctl flags: 0x00000081
pcm0:         Pin cap: 0x0000033f
pcm0:                  ISC TRQD HP OUT IN : UNSOL
pcm0:      Pin config: 0x02a1983e
pcm0:     Pin control: 0x00000020 IN
pcm0:     connections: 1
pcm0:           |
pcm0:           + <- nid=27 [audio mixer]
pcm0: 
pcm0:             nid: 17 [ANALOG]
pcm0:            name: pin: CD (fixed)
pcm0:      widget_cap: 0x00400001
pcm0:     Parse flags: 0x00000002
pcm0:       Ctl flags: 0x00000101
pcm0:         Pin cap: 0x00000063
pcm0:                  ISC TRQD IN BAL
pcm0:      Pin config: 0x99330132
pcm0:     Pin control: 0x00000020 IN
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 18 [DIGITAL] [DISABLED]
pcm0:            name: pin: SPDIF out (jack)
pcm0:      widget_cap: 0x00400301
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:         Pin cap: 0x00000010
pcm0:                  OUT
pcm0:      Pin config: 0x01451120
pcm0:     Pin control: 0x00000040 OUT
pcm0:     connections: 1
pcm0:           |
pcm0:           + <- nid=7 [audio output] [DISABLED]
pcm0: 
pcm0:             nid: 19 [ANALOG]
pcm0:            name: vendor widget
pcm0:      widget_cap: 0x00f00000
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 20 [ANALOG]
pcm0:            name: audio mixer
pcm0:      widget_cap: 0x0020010b
pcm0:     Parse flags: 0x00000002
pcm0:       Ctl flags: 0x00000081
pcm0:       Input amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 2
pcm0:           |
pcm0:           + <- nid=13 [pin: Mic in (jack)]
pcm0:           |
pcm0:           + <- nid=16 [pin: Mic in (jack)]
pcm0: 
pcm0:             nid: 21 [ANALOG]
pcm0:            name: audio mixer
pcm0:      widget_cap: 0x0020050f
pcm0:     Parse flags: 0x00000002
pcm0:       Ctl flags: 0x000001c1
pcm0:      Output amp: 0x800b0c0c
pcm0:                  mute=1 step=12 size=11 offset=12
pcm0:       Input amp: 0x800b170c
pcm0:                  mute=1 step=23 size=11 offset=12
pcm0:     connections: 3
pcm0:           |
pcm0:           + <- nid=17 [pin: CD (fixed)]
pcm0:           |
pcm0:           + <- nid=20 [audio mixer]
pcm0:           |
pcm0:           + <- nid=28 [audio mixer]
pcm0: 
pcm0:             nid: 22 [ANALOG]
pcm0:            name: audio mixer
pcm0:      widget_cap: 0x0020010b
pcm0:     Parse flags: 0x00000001
pcm0:       Ctl flags: 0x000001d1
pcm0:       Input amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 2
pcm0:           |
pcm0:           + <- nid=3 [audio output]
pcm0:           |
pcm0:           + <- nid=21 [audio mixer]
pcm0: 
pcm0:             nid: 23 [ANALOG]
pcm0:            name: audio mixer
pcm0:      widget_cap: 0x0020010b
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:       Input amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 2
pcm0:           |
pcm0:           + <- nid=4 [audio output]
pcm0:           |
pcm0:           + <- nid=21 [audio mixer]
pcm0: 
pcm0:             nid: 24 [ANALOG]
pcm0:            name: audio mixer
pcm0:      widget_cap: 0x0020010b
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:       Input amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 2
pcm0:           |
pcm0:           + <- nid=5 [audio output]
pcm0:           |
pcm0:           + <- nid=21 [audio mixer]
pcm0: 
pcm0:             nid: 25 [ANALOG]
pcm0:            name: audio mixer
pcm0:      widget_cap: 0x0020010b
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:       Input amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 2
pcm0:           |
pcm0:           + <- nid=6 [audio output]
pcm0:           |
pcm0:           + <- nid=21 [audio mixer]
pcm0: 
pcm0:             nid: 26 [ANALOG]
pcm0:            name: audio mixer
pcm0:      widget_cap: 0x0020010b
pcm0:     Parse flags: 0x00000001
pcm0:       Ctl flags: 0x00000011
pcm0:       Input amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 4
pcm0:           |
pcm0:           + <- nid=4 [audio output]
pcm0:           |
pcm0:           + <- nid=6 [audio output]
pcm0:           |
pcm0:           + <- nid=21 [audio mixer]
pcm0:           |
pcm0:           + <- nid=3 [audio output]
pcm0: 
pcm0:             nid: 27 [ANALOG]
pcm0:            name: audio mixer
pcm0:      widget_cap: 0x0020010b
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:       Input amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 4
pcm0:           |
pcm0:           + <- nid=4 [audio output]
pcm0:           |
pcm0:           + <- nid=6 [audio output]
pcm0:           |
pcm0:           + <- nid=21 [audio mixer]
pcm0:           |
pcm0:           + <- nid=3 [audio output]
pcm0: 
pcm0:             nid: 28 [ANALOG]
pcm0:            name: audio mixer
pcm0:      widget_cap: 0x0020010b
pcm0:     Parse flags: 0x00000002
pcm0:       Ctl flags: 0x00000041
pcm0:       Input amp: 0x80000000
pcm0:                  mute=1 step=0 size=0 offset=0
pcm0:     connections: 2
pcm0:           |
pcm0:           + <- nid=12 [pin: line in (jack)]
pcm0:           |
pcm0:           + <- nid=15 [pin: headphones out (jack)]
pcm0: 
pcm0:             nid: 29 [ANALOG]
pcm0:            name: vendor widget
pcm0:      widget_cap: 0x00f00000
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 30 [ANALOG]
pcm0:            name: vendor widget
pcm0:      widget_cap: 0x00f00000
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 31 [ANALOG] [DISABLED]
pcm0:            name: pin: speaker (none)
pcm0:      widget_cap: 0x00400581
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:         Pin cap: 0x00000017
pcm0:                  ISC TRQD OUT : UNSOL
pcm0:      Pin config: 0x411111f0
pcm0:     Pin control: 0x00000040 OUT
pcm0:     connections: 1
pcm0:           |
pcm0:           + <- nid=24 [audio mixer]
pcm0: 
pcm0:             nid: 32 [ANALOG] [DISABLED]
pcm0:            name: pin: speaker (none)
pcm0:      widget_cap: 0x00400581
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:         Pin cap: 0x00000017
pcm0:                  ISC TRQD OUT : UNSOL
pcm0:      Pin config: 0x411111f0
pcm0:     Pin control: 0x00000040 OUT
pcm0:     connections: 1
pcm0:           |
pcm0:           + <- nid=23 [audio mixer]
pcm0: 
pcm0:             nid: 33 [ANALOG]
pcm0:            name: vendor widget
pcm0:      widget_cap: 0x00f00000
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 34 [ANALOG]
pcm0:            name: vendor widget
pcm0:      widget_cap: 0x00f00000
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000000
pcm0:     connections: 0
pcm0: 
pcm0:             nid: 35 [ANALOG]
pcm0:            name: beep widget
pcm0:      widget_cap: 0x0070000c
pcm0:     Parse flags: 0x00000000
pcm0:       Ctl flags: 0x00000021
pcm0:      Output amp: 0x800b0f0f
pcm0:                  mute=1 step=15 size=11 offset=15
pcm0:     connections: 0
pcm0: 
pcm0: +------------------------+
pcm0: | DUMPING HDA AMPLIFIERS |
pcm0: +------------------------+
pcm0: 
pcm0:   1: nid=3 dir=0x1 index=0 ossmask=0x00000011 ossdev=4
pcm0:   2: nid=4 dir=0x1 index=0 ossmask=0x00000011 ossdev=4
pcm0:   3: nid=5 dir=0x1 index=0 ossmask=0x00000000 ossdev=0
pcm0:   4: nid=6 dir=0x1 index=0 ossmask=0x00000011 ossdev=4
pcm0:   5: nid=7 dir=0x1 index=0 ossmask=0x00000000 ossdev=0 [DISABLED]
pcm0:   6: nid=8 dir=0x2 index=0 ossmask=0x00000800 ossdev=0
pcm0:   7: nid=20 cnid=13 dir=0x2 index=0 ossmask=0x00000081 ossdev=7
pcm0:   8: nid=20 cnid=16 dir=0x2 index=1 ossmask=0x00000081 ossdev=7
pcm0:   9: nid=21 dir=0x1 index=0 ossmask=0x00000000 ossdev=0
pcm0:  10: nid=21 cnid=17 dir=0x2 index=0 ossmask=0x00000101 ossdev=8
pcm0:  11: nid=21 cnid=20 dir=0x2 index=1 ossmask=0x00000000 ossdev=0
pcm0:  12: nid=21 cnid=28 dir=0x2 index=2 ossmask=0x00000000 ossdev=0
pcm0:  13: nid=22 cnid=3 dir=0x2 index=0 ossmask=0x00000000 ossdev=0
pcm0:  14: nid=22 cnid=21 dir=0x2 index=1 ossmask=0x00000000 ossdev=0
pcm0:  15: nid=23 cnid=4 dir=0x2 index=0 ossmask=0x00000000 ossdev=0
pcm0:  16: nid=23 cnid=21 dir=0x2 index=1 ossmask=0x00000000 ossdev=0
pcm0:  17: nid=24 cnid=5 dir=0x2 index=0 ossmask=0x00000000 ossdev=0
pcm0:  18: nid=24 cnid=21 dir=0x2 index=1 ossmask=0x00000000 ossdev=0
pcm0:  19: nid=25 cnid=6 dir=0x2 index=0 ossmask=0x00000000 ossdev=0
pcm0:  20: nid=25 cnid=21 dir=0x2 index=1 ossmask=0x00000000 ossdev=0
pcm0:  21: nid=26 cnid=4 dir=0x2 index=0 ossmask=0x00000000 ossdev=0
pcm0:  22: nid=26 cnid=6 dir=0x2 index=1 ossmask=0x00000000 ossdev=0
pcm0:  23: nid=26 cnid=21 dir=0x2 index=2 ossmask=0x00000000 ossdev=0
pcm0:  24: nid=26 cnid=3 dir=0x2 index=3 ossmask=0x00000000 ossdev=0
pcm0:  25: nid=27 cnid=4 dir=0x2 index=0 ossmask=0x00000000 ossdev=0
pcm0:  26: nid=27 cnid=6 dir=0x2 index=1 ossmask=0x00000000 ossdev=0
pcm0:  27: nid=27 cnid=21 dir=0x2 index=2 ossmask=0x00000000 ossdev=0
pcm0:  28: nid=27 cnid=3 dir=0x2 index=3 ossmask=0x00000000 ossdev=0
pcm0:  29: nid=28 cnid=12 dir=0x2 index=0 ossmask=0x00000041 ossdev=6
pcm0:  30: nid=28 cnid=15 dir=0x2 index=1 ossmask=0x00000000 ossdev=0
pcm0:  31: nid=35 dir=0x1 index=0 ossmask=0x00000021 ossdev=5
pcm0: 
pcm0: +-----------------------------------+
pcm0: | DUMPING HDA AUDIO/VOLUME CONTROLS |
pcm0: +-----------------------------------+
pcm0: 
pcm0: Master Volume (OSS: vol)
pcm0:    |
pcm0:    +-  nid:  3 index:  0           mute: 1 step:   0 size:   0 off:   0 dir=0x1 ossmask=0x00000011
pcm0:    |
pcm0:    +-  nid:  4 index:  0           mute: 1 step:   0 size:   0 off:   0 dir=0x1 ossmask=0x00000011
pcm0:    |
pcm0:    +-  nid:  6 index:  0           mute: 1 step:   0 size:   0 off:   0 dir=0x1 ossmask=0x00000011
pcm0:    |
pcm0:    +-  nid: 20 index:  0 (nid: 13) mute: 1 step:   0 size:   0 off:   0 dir=0x2 ossmask=0x00000081
pcm0:    |
pcm0:    +-  nid: 20 index:  1 (nid: 16) mute: 1 step:   0 size:   0 off:   0 dir=0x2 ossmask=0x00000081
pcm0:    |
pcm0:    +-  nid: 21 index:  0 (nid: 17) mute: 1 step:  23 size:  11 off:  12 dir=0x2 ossmask=0x00000101
pcm0:    |
pcm0:    +-  nid: 28 index:  0 (nid: 12) mute: 1 step:   0 size:   0 off:   0 dir=0x2 ossmask=0x00000041
pcm0:    |
pcm0:    +-  nid: 35 index:  0           mute: 1 step:  15 size:  11 off:  15 dir=0x1 ossmask=0x00000021
pcm0: 
pcm0: PCM Volume (OSS: pcm)
pcm0:    |
pcm0:    +-  nid:  3 index:  0           mute: 1 step:   0 size:   0 off:   0 dir=0x1 ossmask=0x00000011
pcm0:    |
pcm0:    +-  nid:  4 index:  0           mute: 1 step:   0 size:   0 off:   0 dir=0x1 ossmask=0x00000011
pcm0:    |
pcm0:    +-  nid:  6 index:  0           mute: 1 step:   0 size:   0 off:   0 dir=0x1 ossmask=0x00000011
pcm0: 
pcm0: CD Volume (OSS: cd)
pcm0:    |
pcm0:    +-  nid: 21 index:  0 (nid: 17) mute: 1 step:  23 size:  11 off:  12 dir=0x2 ossmask=0x00000101
pcm0: 
pcm0: Microphone Volume (OSS: mic)
pcm0:    |
pcm0:    +-  nid: 20 index:  0 (nid: 13) mute: 1 step:   0 size:   0 off:   0 dir=0x2 ossmask=0x00000081
pcm0:    |
pcm0:    +-  nid: 20 index:  1 (nid: 16) mute: 1 step:   0 size:   0 off:   0 dir=0x2 ossmask=0x00000081
pcm0: 
pcm0: Line-in Volume (OSS: line)
pcm0:    |
pcm0:    +-  nid: 28 index:  0 (nid: 12) mute: 1 step:   0 size:   0 off:   0 dir=0x2 ossmask=0x00000041
pcm0: 
pcm0: Recording Level (OSS: rec)
pcm0:    |
pcm0:    +-  nid:  8 index:  0           mute: 1 step:  13 size:  11 off:   2 dir=0x2 ossmask=0x00000800
pcm0: 
pcm0: Speaker/Beep (OSS: speaker)
pcm0:    |
pcm0:    +-  nid: 35 index:  0           mute: 1 step:  15 size:  11 off:  15 dir=0x1 ossmask=0x00000021
pcm0: 
pcm0: Playback path:
pcm0: 
pcm0:     nid=11 [pin: line out (jack)]
pcm0:       ^
pcm0:       |
pcm0:       +-----<------+
pcm0:                    ^
pcm0:                    |
pcm0:                  nid=22 [audio mixer]
pcm0:                    ^
pcm0:                    |
pcm0:                  nid=3 [audio output]
pcm0: 
pcm0:     nid=15 [pin: headphones out (jack)]
pcm0:       ^
pcm0:       |
pcm0:       +-----<------+
pcm0:                    ^
pcm0:                    |
pcm0:                  nid=26 [audio mixer]
pcm0:                    ^
pcm0:                    |
pcm0:                  nid=4 [audio output]
pcm0: 
pcm0: Recording sources:
pcm0: 
pcm0:     nid=8 [audio input]
pcm0:       |
pcm0:       + <- nid=13 [pin: Mic in (jack)] [recsrc: vol, mic]
pcm0:       |
pcm0:       + <- nid=12 [pin: line in (jack)] [recsrc: vol, line]
pcm0:       |
pcm0:       + <- nid=15 [pin: headphones out (jack)]
pcm0:       |
pcm0:       + <- nid=16 [pin: Mic in (jack)] [recsrc: vol, mic]
pcm0:       |
pcm0:       + <- nid=17 [pin: CD (fixed)] [recsrc: vol, cd]
pcm0:       |
pcm0:       + <- nid=21 [audio mixer] [recsrc: vol, line, mic, cd]
pcm0: 
pcm0: +--------------------------------------+
pcm0: | DUMPING PCM Playback/Record Channels |
pcm0: +--------------------------------------+
pcm0: 
pcm0:    PCM Playback: 1
pcm0:      Stream cap: 0x00000001
pcm0:          Format: PCM
pcm0:         PCM cap: 0x000e0140
pcm0:        PCM size: 16 20 24
pcm0:        PCM rate: 48 96
pcm0:             DAC: 3 4 6
pcm0: 
pcm0:      PCM Record: 1
pcm0:      Stream cap: 0x00000001
pcm0:          Format: PCM
pcm0:         PCM cap: 0x00020140
pcm0:        PCM size: 16
pcm0:        PCM rate: 48 96
pcm0:             ADC: 8


More information about the freebsd-multimedia mailing list