RFC: snd_hda(4) -- Intel High Definition Audio driver
Yuri Pankov
y.pankov at irbis.net.ru
Wed Sep 6 14:03:43 UTC 2006
On Wed, 2006-09-06 at 10:46 +0200, Søren Schmidt wrote:
> Joel Dahl wrote:
> > Hi all,
> >
> > Ariff Abdullah (ariff@) has been working on snd_hda(4) for a while now,
> > which is a High Definition Audio driver and should enable basic audio
> > capabilities on a lot of new machines on the market. He's been busy
> > with improving the driver lately, so he asked me to send out an
> > announcement and a call for testers -- yes, the driver is ready for a
> > wider audience now. :-)
> >
> > This driver is based on Stephane E. Potvin's HDA driver, although big
> > parts have been rewritten since then. The driver is still in an early
> > form and many parts needs refinements, but basic audio capabilities such
> > as playback/recording should work and we would like to get this into
> > CURRENT soon, if everything goes according to the plan.
> >
> OK, tried this on an ASUS A8N-VM CSM (nVidia 6150/MCP51 based) and
> although it does produce sound there are a few problems:
>
> 1. the output on line-out has a constant highpitched tone along side the
> sound leaving that extremely annoying to listen on.
> However both the line-in and mix-in jacks produce perfect sound
> output, so it seems some signal routing is wrong...
>
> 2. if I touch any of the mixer settings, ie change the volume, all sound
> goes totally silent, no messages or anything just silence.
> I've found no way to get sound back without rebooting as the module
> doesn't want to unload.
>
>
> Diverse output attached, let me know if there is anything to test/try etc...
>
> God work so far! much appreciated!
>
> -Søren
>
Hi,
I've tested it on Intel 82801F HDA controller (motherboard make unknown,
can't open the case) and have the same problem as Søren - constant
highpitched tone, and also line-in and mic-in produce normal sound.
Problem with volume settings is present too, but I was able to kldunload
driver, and after loading it again, all worked fine.
pcm0: <Intel 82801F High Definition Audio Controller> mem
0xdfef8000-0xdfefbfff irq 16 at device 27.0 on pci0
pcm0: Reserved 0x4000 bytes for rid 0x10 type 3 at 0xdfef8000
pcm0: [MPSAFE]
pcm0: Vendor: 0x000011d4
pcm0: Device: 0x00001986
pcm0: Revision: 0x00000005
pcm0: Stepping: 0x00000000
pcm0: PCI Subvendor: 0x818f1043
pcm0: Nodes: start=2 endnode=44 total=42
pcm0: node 18: WARNING!!! Connection length=8 != found=7
pcm0: sndbuf_setmap 1e248000, 4000; 0xd6679000 -> 1e248000
pcm0: sndbuf_setmap 1e206000, 4000; 0xd667d000 -> 1e206000
pcm0: <HDA Driver Revision: 20060906_001>
pcm0:
pcm0: +-------------------+
pcm0: | DUMPING HDA NODES |
pcm0: +-------------------+
pcm0:
pcm0: Default Parameter
pcm0: -----------------
pcm0: Stream cap: 0x00000001
pcm0: Format: PCM
pcm0: PCM cap: 0x000e007f
pcm0: PCM size: 16 20 24
pcm0: PCM rate: 44 48 88 96 176 192
pcm0: IN amp: 0x80000000
pcm0: OUT amp: 0x80051f1f
pcm0:
pcm0: nid: 2 [DIGITAL] [DISABLED]
pcm0: name: audio output
pcm0: widget_cap: 0x00030311
pcm0: Stream cap: 0x00000005
pcm0: Format: AC3 PCM
pcm0: PCM cap: 0x00020060
pcm0: PCM size: 16
pcm0: PCM rate: 44 48
pcm0: connections: 2
pcm0: |
pcm0: + <- nid=1 [GHOST!] [UNKNOWN]
pcm0: |
pcm0: + <- nid=6 [audio input]
pcm0:
pcm0: nid: 3 [ANALOG]
pcm0: name: audio output
pcm0: widget_cap: 0x0000044d
pcm0: Stream cap: 0x00000001
pcm0: Format: PCM
pcm0: PCM cap: 0x000e007f
pcm0: PCM size: 16 20 24
pcm0: PCM rate: 44 48 88 96 176 192
pcm0: Output amp: 0x80051f17
pcm0: mute=1 step=31 size=5 offset=23
pcm0: connections: 0
pcm0:
pcm0: nid: 4 [ANALOG]
pcm0: name: audio output
pcm0: widget_cap: 0x0000040d
pcm0: Stream cap: 0x00000001
pcm0: Format: PCM
pcm0: PCM cap: 0x000e007f
pcm0: PCM size: 16 20 24
pcm0: PCM rate: 44 48 88 96 176 192
pcm0: Output amp: 0x80051f17
pcm0: mute=1 step=31 size=5 offset=23
pcm0: connections: 0
pcm0:
pcm0: nid: 5 [ANALOG]
pcm0: name: audio output
pcm0: widget_cap: 0x0000040d
pcm0: Stream cap: 0x00000001
pcm0: Format: PCM
pcm0: PCM cap: 0x000e007f
pcm0: PCM size: 16 20 24
pcm0: PCM rate: 44 48 88 96 176 192
pcm0: Output amp: 0x80051f17
pcm0: mute=1 step=31 size=5 offset=23
pcm0: connections: 0
pcm0:
pcm0: nid: 6 [ANALOG]
pcm0: name: audio input
pcm0: widget_cap: 0x00100511
pcm0: Stream cap: 0x00000001
pcm0: Format: PCM
pcm0: PCM cap: 0x0006007f
pcm0: PCM size: 16 20
pcm0: PCM rate: 44 48 88 96 176 192
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=18 [audio selector]
pcm0:
pcm0: nid: 7 [ANALOG]
pcm0: name: audio mixer
pcm0: widget_cap: 0x00200101
pcm0: connections: 8
pcm0: |
pcm0: + <- nid=3 [audio output]
pcm0: |
pcm0: + <- nid=9 [audio mixer]
pcm0: |
pcm0: + <- nid=19 [audio selector]
pcm0: |
pcm0: + <- nid=20 [audio selector]
pcm0: |
pcm0: + <- nid=21 [audio selector]
pcm0: |
pcm0: + <- nid=22 [audio selector]
pcm0: |
pcm0: + <- nid=23 [audio selector]
pcm0: |
pcm0: + <- nid=24 [audio selector]
pcm0:
pcm0: nid: 8 [ANALOG]
pcm0: name: audio mixer
pcm0: widget_cap: 0x00200100
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=7 [audio mixer]
pcm0:
pcm0: nid: 9 [ANALOG]
pcm0: name: audio mixer
pcm0: widget_cap: 0x0020010e
pcm0: Output amp: 0x80000000
pcm0: mute=1 step=0 size=0 offset=0
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=5 [audio output]
pcm0:
pcm0: nid: 10 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x00300101
pcm0: connections: 3
pcm0: |
pcm0: + <- nid=7 [audio mixer] (selected)
pcm0: |
pcm0: + <- nid=4 [audio output]
pcm0: |
pcm0: + <- nid=5 [audio output]
pcm0:
pcm0: nid: 11 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x00300101
pcm0: connections: 2
pcm0: |
pcm0: + <- nid=7 [audio mixer] (selected)
pcm0: |
pcm0: + <- nid=4 [audio output]
pcm0:
pcm0: nid: 12 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x00300101
pcm0: connections: 2
pcm0: |
pcm0: + <- nid=4 [audio output] (selected)
pcm0: |
pcm0: + <- nid=7 [audio mixer]
pcm0:
pcm0: nid: 13 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x00300101
pcm0: connections: 2
pcm0: |
pcm0: + <- nid=5 [audio output] (selected)
pcm0: |
pcm0: + <- nid=8 [audio mixer]
pcm0:
pcm0: nid: 14 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x00300100
pcm0: connections: 2
pcm0: |
pcm0: + <- nid=8 [audio mixer] (selected)
pcm0: |
pcm0: + <- nid=17 [audio selector]
pcm0:
pcm0: nid: 15 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x0030010d
pcm0: Output amp: 0x270300
pcm0: mute=0 step=3 size=39 offset=0
pcm0: connections: 8
pcm0: |
pcm0: + <- nid=31 [pin: Mic in (jack)] (selected)
pcm0: |
pcm0: + <- nid=32 [pin: line in (jack)]
pcm0: |
pcm0: + <- nid=29 [pin: line out (jack)]
pcm0: |
pcm0: + <- nid=29 [pin: line out (jack)]
pcm0: |
pcm0: + <- nid=39 [audio mixer]
pcm0: |
pcm0: + <- nid=40 [audio mixer]
pcm0: |
pcm0: + <- nid=41 [audio mixer]
pcm0: |
pcm0: + <- nid=42 [audio mixer]
pcm0:
pcm0: nid: 16 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x00300101
pcm0: connections: 3
pcm0: |
pcm0: + <- nid=32 [pin: line in (jack)] (selected)
pcm0: |
pcm0: + <- nid=28 [pin: line out (jack)]
pcm0: |
pcm0: + <- nid=31 [pin: Mic in (jack)]
pcm0:
pcm0: nid: 17 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x00300941
pcm0: connections: 2
pcm0: |
pcm0: + <- nid=15 [audio selector] (selected)
pcm0: |
pcm0: + <- nid=43 [audio mixer]
pcm0:
pcm0: nid: 18 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x0030010d
pcm0: Output amp: 0x80050f00
pcm0: mute=1 step=15 size=5 offset=0
pcm0: connections: 8
pcm0: |
pcm0: + <- nid=17 [audio selector] (selected)
pcm0: |
pcm0: + <- nid=34 [pin: CD (fixed)]
pcm0: |
pcm0: + <- nid=33 [pin: AUX (none)]
pcm0: |
pcm0: + <- nid=16 [audio selector]
pcm0: |
pcm0: + <- nid=7 [audio mixer]
pcm0: |
pcm0: + <- nid=8 [audio mixer]
pcm0: |
pcm0: + <- nid=35 [pin: telephony (none)]
pcm0: |
pcm0: + <- nid=0 [GHOST!] [UNKNOWN]
pcm0:
pcm0: nid: 19 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x0030010d
pcm0: Output amp: 0x80051f17
pcm0: mute=1 step=31 size=5 offset=23
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=17 [audio selector]
pcm0:
pcm0: nid: 20 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x0030010c
pcm0: Output amp: 0x80051f17
pcm0: mute=1 step=31 size=5 offset=23
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=35 [pin: telephony (none)]
pcm0:
pcm0: nid: 21 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x0030010d
pcm0: Output amp: 0x80051f17
pcm0: mute=1 step=31 size=5 offset=23
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=34 [pin: CD (fixed)]
pcm0:
pcm0: nid: 22 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x0030010d
pcm0: Output amp: 0x80051f17
pcm0: mute=1 step=31 size=5 offset=23
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=33 [pin: AUX (none)]
pcm0:
pcm0: nid: 23 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x0030010d
pcm0: Output amp: 0x80051f17
pcm0: mute=1 step=31 size=5 offset=23
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=16 [audio selector]
pcm0:
pcm0: nid: 24 [ANALOG]
pcm0: name: audio selector
pcm0: widget_cap: 0x0030010c
pcm0: Output amp: 0x800b0f0f
pcm0: mute=1 step=15 size=11 offset=15
pcm0: connections: 2
pcm0: |
pcm0: + <- nid=25 [beep widget] (selected)
pcm0: |
pcm0: + <- nid=36 [pin: other (none)]
pcm0:
pcm0: nid: 25 [ANALOG]
pcm0: name: beep widget
pcm0: widget_cap: 0x00700000
pcm0: connections: 0
pcm0:
pcm0: nid: 26 [ANALOG]
pcm0: name: pin: headphones out (jack)
pcm0: widget_cap: 0x00400185
pcm0: Pin cap: 0x0000001f
pcm0: ISC TRQD HP OUT : UNSOL
pcm0: Output amp: 0x80051f1f
pcm0: mute=1 step=31 size=5 offset=31
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=10 [audio selector]
pcm0:
pcm0: nid: 27 [ANALOG]
pcm0: name: pin: line out (jack)
pcm0: widget_cap: 0x00400185
pcm0: Pin cap: 0x0001001f
pcm0: ISC TRQD HP OUT EAPD : UNSOL
pcm0: Output amp: 0x80051f1f
pcm0: mute=1 step=31 size=5 offset=31
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=11 [audio selector]
pcm0:
pcm0: nid: 28 [ANALOG]
pcm0: name: pin: line out (jack)
pcm0: widget_cap: 0x00400185
pcm0: Pin cap: 0x00000037
pcm0: ISC TRQD OUT IN : UNSOL
pcm0: Output amp: 0x80051f1f
pcm0: mute=1 step=31 size=5 offset=31
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=12 [audio selector]
pcm0:
pcm0: nid: 29 [ANALOG]
pcm0: name: pin: line out (jack)
pcm0: widget_cap: 0x00400985
pcm0: Pin cap: 0x00001737
pcm0: ISC TRQD OUT IN : UNSOL
pcm0: Output amp: 0x80051f1f
pcm0: mute=1 step=31 size=5 offset=31
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=13 [audio selector]
pcm0:
pcm0: nid: 30 [ANALOG]
pcm0: name: pin: speaker (none)
pcm0: widget_cap: 0x00400104
pcm0: Pin cap: 0x00000010
pcm0: OUT
pcm0: Output amp: 0x80051f1f
pcm0: mute=1 step=31 size=5 offset=31
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=14 [audio selector]
pcm0:
pcm0: nid: 31 [ANALOG]
pcm0: name: pin: Mic in (jack)
pcm0: widget_cap: 0x00400081
pcm0: Pin cap: 0x00001727
pcm0: ISC TRQD IN : UNSOL
pcm0: connections: 0
pcm0:
pcm0: nid: 32 [ANALOG]
pcm0: name: pin: line in (jack)
pcm0: widget_cap: 0x00400081
pcm0: Pin cap: 0x00001727
pcm0: ISC TRQD IN : UNSOL
pcm0: connections: 0
pcm0:
pcm0: nid: 33 [ANALOG]
pcm0: name: pin: AUX (none)
pcm0: widget_cap: 0x00400081
pcm0: Pin cap: 0x00000027
pcm0: ISC TRQD IN : UNSOL
pcm0: connections: 0
pcm0:
pcm0: nid: 34 [ANALOG]
pcm0: name: pin: CD (fixed)
pcm0: widget_cap: 0x00400001
pcm0: Pin cap: 0x00000020
pcm0: IN
pcm0: connections: 0
pcm0:
pcm0: nid: 35 [ANALOG]
pcm0: name: pin: telephony (none)
pcm0: widget_cap: 0x00400000
pcm0: Pin cap: 0x00000020
pcm0: IN
pcm0: connections: 0
pcm0:
pcm0: nid: 36 [ANALOG]
pcm0: name: pin: other (none)
pcm0: widget_cap: 0x00400000
pcm0: Pin cap: 0x00000020
pcm0: IN
pcm0: connections: 0
pcm0:
pcm0: nid: 37 [DIGITAL] [DISABLED]
pcm0: name: pin: SPDIF out (jack)
pcm0: widget_cap: 0x00400301
pcm0: Pin cap: 0x00000010
pcm0: OUT
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=2 [audio output] [DISABLED]
pcm0:
pcm0: nid: 38 [ANALOG]
pcm0: name: power widget
pcm0: widget_cap: 0x00500500
pcm0: connections: 8
pcm0: |
pcm0: + <- nid=7 [audio mixer] (selected)
pcm0: |
pcm0: + <- nid=8 [audio mixer]
pcm0: |
pcm0: + <- nid=19 [audio selector]
pcm0: |
pcm0: + <- nid=20 [audio selector]
pcm0: |
pcm0: + <- nid=21 [audio selector]
pcm0: |
pcm0: + <- nid=22 [audio selector]
pcm0: |
pcm0: + <- nid=23 [audio selector]
pcm0: |
pcm0: + <- nid=24 [audio selector]
pcm0:
pcm0: nid: 39 [ANALOG]
pcm0: name: audio mixer
pcm0: widget_cap: 0x00200101
pcm0: connections: 2
pcm0: |
pcm0: + <- nid=31 [pin: Mic in (jack)]
pcm0: |
pcm0: + <- nid=29 [pin: line out (jack)]
pcm0:
pcm0: nid: 40 [ANALOG]
pcm0: name: audio mixer
pcm0: widget_cap: 0x00200101
pcm0: connections: 2
pcm0: |
pcm0: + <- nid=31 [pin: Mic in (jack)]
pcm0: |
pcm0: + <- nid=32 [pin: line in (jack)]
pcm0:
pcm0: nid: 41 [ANALOG]
pcm0: name: audio mixer
pcm0: widget_cap: 0x00200101
pcm0: connections: 2
pcm0: |
pcm0: + <- nid=29 [pin: line out (jack)]
pcm0: |
pcm0: + <- nid=32 [pin: line in (jack)]
pcm0:
pcm0: nid: 42 [ANALOG]
pcm0: name: audio mixer
pcm0: widget_cap: 0x00200101
pcm0: connections: 3
pcm0: |
pcm0: + <- nid=31 [pin: Mic in (jack)]
pcm0: |
pcm0: + <- nid=29 [pin: line out (jack)]
pcm0: |
pcm0: + <- nid=32 [pin: line in (jack)]
pcm0:
pcm0: nid: 43 [ANALOG]
pcm0: name: audio mixer
pcm0: widget_cap: 0x00200100
pcm0: connections: 1
pcm0: |
pcm0: + <- nid=15 [audio selector]
pcm0:
pcm0: +-----------------------------------+
pcm0: | DUMPING HDA AUDIO/VOLUME CONTROLS |
pcm0: +-----------------------------------+
pcm0:
pcm0: Master Volume (OSS: vol)
pcm0: |
pcm0: +- nid: 9 index: 0 (nid: 4) mute: 1 step: 0 size: 0
off: 0 dir=0x2
pcm0: |
pcm0: +- nid: 9 index: 1 (nid: 5) mute: 1 step: 0 size: 0
off: 0 dir=0x2
pcm0: |
pcm0: +- nid: 15 index: 0 mute: 0 step: 3 size: 39
off: 0 dir=0x1
pcm0: |
pcm0: +- nid: 21 index: 0 mute: 1 step: 31 size: 5
off: 23 dir=0x1
pcm0:
pcm0: PCM Volume (OSS: pcm)
pcm0: |
pcm0: +- nid: 9 index: 0 (nid: 4) mute: 1 step: 0 size: 0
off: 0 dir=0x2
pcm0: |
pcm0: +- nid: 9 index: 1 (nid: 5) mute: 1 step: 0 size: 0
off: 0 dir=0x2
pcm0:
pcm0: CD Volume (OSS: cd)
pcm0: |
pcm0: +- nid: 21 index: 0 mute: 1 step: 31 size: 5
off: 23 dir=0x1
pcm0:
pcm0: Microphone Volume (OSS: mic)
pcm0: |
pcm0: +- nid: 15 index: 0 mute: 0 step: 3 size: 39
off: 0 dir=0x1
pcm0:
pcm0: Line-in Volume (OSS: line)
pcm0: |
pcm0: +- nid: 15 index: 0 mute: 0 step: 3 size: 39
off: 0 dir=0x1
pcm0:
pcm0: Recording Level (OSS: rec)
pcm0: |
pcm0: +- nid: 18 index: 0 mute: 1 step: 15 size: 5
off: 0 dir=0x1
pcm0:
pcm0: Recording sources:
pcm0:
pcm0: nid=18 [audio selector]
pcm0: |
pcm0: + <- nid=17 [audio selector] [recsrc: vol, mic]
pcm0: |
pcm0: + <- nid=34 [pin: CD (fixed)] [recsrc: vol, cd]
pcm0: |
pcm0: + <- nid=33 [pin: AUX (none)]
pcm0: |
pcm0: + <- nid=16 [audio selector]
pcm0: |
pcm0: + <- nid=7 [audio mixer] [recsrc: vol, pcm, mic, cd]
pcm0: |
pcm0: + <- nid=8 [audio mixer] [recsrc: vol, pcm]
pcm0: |
pcm0: + <- nid=35 [pin: telephony (none)]
pcm0:
pcm0: +--------------------------------------+
pcm0: | DUMPING PCM Playback/Record Channels |
pcm0: +--------------------------------------+
pcm0:
pcm0: PCM Playback: 1
pcm0: Stream cap: 0x00000001
pcm0: Format: PCM
pcm0: PCM cap: 0x000e007f
pcm0: PCM size: 16 20 24
pcm0: PCM rate: 44 48 88 96 176 192
pcm0:
pcm0: PCM Record: 1
pcm0: Stream cap: 0x00000001
pcm0: Format: PCM
pcm0: PCM cap: 0x000e007f
pcm0: PCM size: 16 20 24
pcm0: PCM rate: 44 48 88 96 176 192
FreeBSD sierra.irbis.net.ru 6.1-STABLE FreeBSD 6.1-STABLE #0: Tue Jul 25
15:43:39 MSD 2006 root at sierra.irbis.net.ru:/usr/obj/usr/src/sys/SIERRA
i386
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel 82801F High Definition Audio Controller> at memory
0xdfef8000 irq 16 kld snd_hda [20060906_001] (1p/1r/0v channels duplex
default)
[pcm0:play:0:dsp0.0]: spd 44100/48000, fmt 0x10000010, flags
0x00003030, 0x00000010, pid 95908
interrupts 3865, underruns 0, ready 20480 [b:16384/8192/2|
bs:20480/1024/20]
{userland} -> feeder_root(0x10000010) -> feeder_rate(44100 ->
48000) -> {hardware}
[pcm0:record:0:dsp0.1]: spd 0, fmt 0x00000000/0x00000008, flags
0x00000000, 0x00000000
interrupts 0, overruns 0, hfree 16384, sfree 0 [b:16384/8192/2|
bs:0/0/0]
{hardware} -> feeder_root(0x00000000) -> {userland}
hw.snd.report_soft_formats: 1
hw.snd.targetirqrate: 32
hw.snd.verbose: 2
hw.snd.maxautovchans: 0
hw.snd.unit: 0
hw.snd.pcm0.buffersize: 16384
hw.snd.pcm0.vchans: 0
Mixer vol is currently set to 75:75
Mixer pcm is currently set to 75:75
Mixer mic is currently set to 0:0
Mixer cd is currently set to 75:75
Mixer rec is currently set to 0:0
Recording source: mic
Yuri
More information about the freebsd-multimedia
mailing list