[alsa-devel] Support new HDA codec

Takashi Iwai tiwai at suse.de
Fri Feb 24 16:51:13 CET 2012


At Tue, 21 Feb 2012 12:14:02 +0100,
Jorge Fernandez Monteagudo wrote:
> 
> Hi all,
> 
> This is my first email to the devel mailing list. I'm asking the same question in the user mailing list
> but I suspect that I'll have to add some code in order to get this hda codec from Wolfson to work.

The topology looks simple, so it would fit to some existing parsers,
such as Realtek, VIA or IDT codecs.  The problem seems to be in the
capture path: both Realtek and VIA parsers can't handle these paths
correctly, so far.

The generic parser in the current form can support only the very
limited functions.  I think it's good to start moving the code from
these vendor-specific parsers to the generic parser slowly now...

That being said, if nothing special is needed, the support of this
codec wouldn't be too difficult, I suppose.  But, sometimes codecs
need special vendor-specific verbs, and we can't know without the help
of vendors.

Maybe Mark can tell us.


Takashi

> Attached is the log I get from alsa-info.sh. This codec has three output paths:
> 
> 1) Node 0x06, DAC1, and Node 0x11, Port A, the stereo headphone playback, which is the
>     default one and it seems it works because I can see the stream set to 5 when a sound is played.
> 
> 2) Node 0x04, SPDIF Tx1, and Node 0x0f, SPDIF OUT, the SPDIF transmit functionality provides
>     an IEC-60958-3 compatible S/PIDF output which I would like to enable but without luck yet.
>     I can enable the node 0x04, with hda-verb, and the spdif amplifier receives spdif frames but
>     without audio info.
> 
> 3) Node 0x07, DAC2, and Node 0x12, Port G, the stereo line playback with a differential
>     stereo output wich I would like to enable but without luck again. I just can mute/unmute the node
>     but without effect in the outputs.
> 
> I would like to know if I have to develop a patch for this device or with the attached log info I
> can expect to use it with the current code in kernel. Now, with alsamixer and other config tools
> I can't see any control related to the outputs for 2) and 3)...
> 
> Any hint is welcome!
> Thanks
> Jorge
> 
> ---
> 
> upload=true&script=true&cardinfo=
> !!################################
> !!ALSA Information Script v 0.4.60
> !!################################
> 
> !!Script ran on: Tue Feb 21 09:44:41 UTC 2012
> 
> 
> !!Linux Distribution
> !!------------------
> 
> Ubuntu 11.10 \n \l DISTRIB_ID=Ubuntu DISTRIB_DESCRIPTION="Ubuntu 11.10"
> 
> 
> !!DMI Information
> !!---------------
> 
> Manufacturer:      nVidia
> Product Name:      MMP9-ION
> Product Version:   To Be Filled By O.E.M.
> 
> 
> !!Kernel Information
> !!------------------
> 
> Kernel release:    3.0.0-12-generic
> Operating System:  GNU/Linux
> Architecture:      i686
> Processor:         i686
> SMP Enabled:       Yes
> 
> 
> !!ALSA Version
> !!------------
> 
> Driver version:     1.0.24
> Library version:    1.0.24.1
> Utilities version:  1.0.24.2
> 
> 
> !!Loaded ALSA modules
> !!-------------------
> 
> snd_hda_intel
> 
> 
> !!Sound Servers on this system
> !!----------------------------
> 
> Pulseaudio:
>       Installed - Yes (/usr/bin/pulseaudio)
>       Running - Yes
> 
> ESound Daemon:
>       Installed - Yes (/usr/bin/esd)
>       Running - No
> 
> 
> !!Soundcards recognised by ALSA
> !!-----------------------------
> 
>  0 [NVidia         ]: HDA-Intel - HDA NVidia
>                       HDA NVidia at 0xfae78000 irq 20
> 
> 
> !!PCI Soundcards installed in the system
> !!--------------------------------------
> 
> 00:08.0 Audio device: nVidia Corporation MCP79 High Definition Audio (rev b1)
> 
> 
> !!Advanced information - PCI Vendor/Device/Subsystem ID's
> !!--------------------------------------------------------
> 
> 00:08.0 0403: 10de:0ac0 (rev b1)
>         Subsystem: 10de:cb84
> 
> 
> !!Modprobe options (Sound related)
> !!--------------------------------
> 
> snd-atiixp-modem: index=-2
> snd-intel8x0m: index=-2
> snd-via82xx-modem: index=-2
> snd-usb-audio: index=-2
> snd-usb-caiaq: index=-2
> snd-usb-ua101: index=-2
> snd-usb-us122l: index=-2
> snd-usb-usx2y: index=-2
> snd-cmipci: mpu_port=0x330 fm_port=0x388
> snd-pcsp: index=-2
> snd-usb-audio: index=-2
> 
> 
> !!Loaded sound module options
> !!--------------------------
> 
> !!Module: snd_hda_intel
>         bdl_pos_adj : 32,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
>         beep_mode : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
>         enable : Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y
>         enable_msi : -1
>         id : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null)
>         index : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
>         model : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null)
>         patch : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null)
>         position_fix : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
>         power_save : 0
>         power_save_controller : Y
>         probe_mask : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
>         probe_only : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
>         single_cmd : N
> 
> 
> !!HDA-Intel Codec information
> !!---------------------------
> --startcollapse--
> 
> Codec: Wolfson Microelectronics ID 8800
> Address: 0
> AFG Function Id: 0x1 (unsol 1)
> Vendor Id: 0x1aec8800
> Subsystem Id: 0x00000100
> Revision Id: 0x100301
> No Modem Function Group found
> Default PCM:
>     rates [0x0]:
>     bits [0x0]:
>     formats [0x0]:
> Default Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
> Default Amp-Out caps: ofs=0x7f, nsteps=0x7f, stepsize=0x01, mute=1
> GPIO: io=2, o=0, i=0, unsolicited=1, wake=1
>   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=1, unsol=0
> Node 0x02 [Audio Input] wcaps 0x1005d1: Stereo
>   Device: name="HDA Generic", type="Audio", device=0
>   Converter: stream=1, channel=0
>   SDI-Select: 0
>   PCM:
>     rates [0x1ff]: 8000 11025 16000 22050 32000 44100 48000 88200 96000
>     bits [0x1e]: 16 20 24 32
>     formats [0x3]: PCM FLOAT
>   Unsolicited: tag=02, enabled=0
>   Power states:  D0 D1 D2 D3
>   Power: setting=D0, actual=D0
>   Connection: 1
>      0x0a
>   Processing caps: benign=0, ncoeff=0
> Node 0x03 [Audio Input] wcaps 0x1005d1: Stereo
>   Converter: stream=0, channel=0
>   SDI-Select: 0
>   PCM:
>     rates [0x7f]: 8000 11025 16000 22050 32000 44100 48000
>     bits [0x1e]: 16 20 24 32
>     formats [0x3]: PCM FLOAT
>   Unsolicited: tag=03, enabled=0
>   Power states:  D0 D1 D2 D3
>   Power: setting=D0, actual=D0
>   Connection: 1
>      0x09
>   Processing caps: benign=0, ncoeff=0
> Node 0x04 [Audio Output] wcaps 0x2d1: Stereo Digital
>   Converter: stream=0, channel=0
>   Digital:
>   Digital category: 0x0
>   PCM:
>     rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
>     bits [0x1e]: 16 20 24 32
>     formats [0x3]: PCM FLOAT
>   Unsolicited: tag=04, enabled=0
>   Processing caps: benign=0, ncoeff=0
> Node 0x05 [Audio Input] wcaps 0x1003d1: Stereo Digital
>   Converter: stream=0, channel=0
>   SDI-Select: 0
>   Digital: Copyright
>   Digital category: 0x0
>   PCM:
>     rates [0x1f0]: 32000 44100 48000 88200 96000
>     bits [0x1e]: 16 20 24 32
>     formats [0x3]: PCM FLOAT
>   Unsolicited: tag=05, enabled=0
>   Connection: 1
>      0x10
>   Processing caps: benign=0, ncoeff=0
> Node 0x06 [Audio Output] wcaps 0x495: Stereo Amp-Out
>   Control: name="Master Playback Switch", index=0, device=0
>     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
>   Control: name="Master Playback Volume", index=0, device=0
>     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
>   Device: name="HDA Generic", type="Audio", device=0
>   Amp-Out caps: N/A
>   Amp-Out vals:  [0x57 0x57]
>   Converter: stream=5, channel=0
>   PCM:
>     rates [0x7ff]: 8000 11025 16000 22050 32000 44100 48000 88200 96000 176400 192000
>     bits [0x1e]: 16 20 24 32
>     formats [0x3]: PCM FLOAT
>   Unsolicited: tag=06, enabled=0
>   Power states:  D0 D1 D2 D3
>   Power: setting=D0, actual=D0
> Node 0x07 [Audio Output] wcaps 0x495: Stereo Amp-Out
>   Amp-Out caps: N/A
>   Amp-Out vals:  [0xff 0xff]
>   Converter: stream=0, channel=0
>   PCM:
>     rates [0x7ff]: 8000 11025 16000 22050 32000 44100 48000 88200 96000 176400 192000
>     bits [0x1e]: 16 20 24 32
>     formats [0x3]: PCM FLOAT
>   Unsolicited: tag=07, enabled=0
>   Power states:  D0 D1 D2 D3
>   Power: setting=D0, actual=D0
> Node 0x08 [Audio Output] wcaps 0x495: Stereo Amp-Out
>   Amp-Out caps: N/A
>   Amp-Out vals:  [0xff 0xff]
>   Converter: stream=0, channel=0
>   PCM:
>     rates [0x7ff]: 8000 11025 16000 22050 32000 44100 48000 88200 96000 176400 192000
>     bits [0x1e]: 16 20 24 32
>     formats [0x3]: PCM FLOAT
>   Unsolicited: tag=08, enabled=0
>   Power states:  D0 D1 D2 D3
>   Power: setting=D0, actual=D0
> Node 0x09 [Audio Selector] wcaps 0x300101: Stereo
>   Connection: 2
>      0x0b* 0x0e
> Node 0x0a [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
>   Amp-Out caps: ofs=0x18, nsteps=0x30, stepsize=0x01, mute=1
>   Amp-Out vals:  [0x18 0x18]
>   Connection: 1
>      0x0c
> Node 0x0b [Audio Selector] wcaps 0x30010d: Stereo Amp-Out
>   Amp-Out caps: ofs=0x18, nsteps=0x30, stepsize=0x01, mute=1
>   Amp-Out vals:  [0x98 0x98]
>   Connection: 1
>      0x0d
> Node 0x0c [Pin Complex] wcaps 0x400081: Stereo
>   Pincap 0x00000064: IN Detect Balanced
>   Pin Default 0x018130f0: [Jack] Line In at Ext Rear
>     Conn = 1/8, Color = Blue
>     DefAssociation = 0xf, Sequence = 0x0
>   Pin-ctls: 0x20: IN
>   Unsolicited: tag=0c, enabled=0
> Node 0x0d [Pin Complex] wcaps 0x400083: Stereo Amp-In
>   Amp-In caps: N/A
>   Amp-In vals:  [0x00 0x00]
>   Pincap 0x00001767: IN Detect Balanced Trigger ImpSense
>     Vref caps: HIZ 50 GRD 80
>   Pin Default 0x02a190f0: [Jack] Mic at Ext Front
>     Conn = 1/8, Color = Pink
>     DefAssociation = 0xf, Sequence = 0x0
>   Pin-ctls: 0x20: IN VREF_HIZ
>   Unsolicited: tag=0d, enabled=0
> Node 0x0e [Pin Complex] wcaps 0x40020b: Stereo Digital Amp-In
>   Amp-In caps: ofs=0x18, nsteps=0x58, stepsize=0x01, mute=1
>   Amp-In vals:  [0x18 0x18]
>   Pincap 0x00000020: IN
>   Pin Default 0x10a600f0: [Jack] Mic at Int N/A
>     Conn = Digital, Color = Unknown
>     DefAssociation = 0xf, Sequence = 0x0
>   Pin-ctls: 0x20: IN
> Node 0x0f [Pin Complex] wcaps 0x400381: Stereo Digital
>   Pincap 0x00000014: OUT Detect
>   Pin Default 0x014190f0: [Jack] SPDIF Out at Ext Rear
>     Conn = 1/8, Color = Pink
>     DefAssociation = 0xf, Sequence = 0x0
>   Pin-ctls: 0x40: OUT
>   Unsolicited: tag=0f, enabled=0
>   Connection: 1
>      0x04
> Node 0x10 [Pin Complex] wcaps 0x400281: Stereo Digital
>   Pincap 0x00000020: IN
>   Pin Default 0x01c520f0: [Jack] SPDIF In at Ext Rear
>     Conn = Optical, Color = Grey
>     DefAssociation = 0xf, Sequence = 0x0
>   Pin-ctls: 0x20: IN
>   Unsolicited: tag=10, enabled=0
> Node 0x11 [Pin Complex] wcaps 0x400181: Stereo
>   Pincap 0x0000001c: OUT HP Detect
>   Pin Default 0x01014020: [Jack] Line Out at Ext Rear
>     Conn = 1/8, Color = Green
>     DefAssociation = 0x2, Sequence = 0x0
>   Pin-ctls: 0xc0: OUT HP
>   Unsolicited: tag=11, enabled=0
>   Connection: 1
>      0x06
> Node 0x12 [Pin Complex] wcaps 0x400181: Stereo
>   Pincap 0x00000014: OUT Detect
>   Pin Default 0x01016121: [Jack] Line Out at Ext Rear
>     Conn = 1/8, Color = Orange
>     DefAssociation = 0x2, Sequence = 0x1
>     Misc = NO_PRESENCE
>   Pin-ctls: 0x40: OUT
>   Unsolicited: tag=12, enabled=0
>   Connection: 1
>      0x07
> Node 0x13 [Pin Complex] wcaps 0x400181: Stereo
>   Pincap 0x00000014: OUT Detect
>   Pin Default 0x01011022: [Jack] Line Out at Ext Rear
>     Conn = 1/8, Color = Black
>     DefAssociation = 0x2, Sequence = 0x2
>   Pin-ctls: 0x40: OUT
>   Unsolicited: tag=13, enabled=0
>   Connection: 1
>      0x08
> Node 0x14 [Beep Generator Widget] wcaps 0x70000c: Mono Amp-Out
>   Amp-Out caps: ofs=0x04, nsteps=0x04, stepsize=0x17, mute=0
>   Amp-Out vals:  [0x04]
> Node 0x15 [Audio Input] wcaps 0x1003d1: Stereo Digital
>   Converter: stream=0, channel=2
>   Digital:
>   Digital category: 0x0
>   PCM:
>     rates [0x7f]: 8000 11025 16000 22050 32000 44100 48000
>     bits [0x1e]: 16 20 24 32
>     formats [0x3]: PCM FLOAT
>   Unsolicited: tag=15, enabled=0
>   Connection: 1
>      0x16
>   Processing caps: benign=0, ncoeff=0
> Node 0x16 [Pin Complex] wcaps 0x40030b: Stereo Digital Amp-In
>   Amp-In caps: ofs=0x18, nsteps=0x58, stepsize=0x01, mute=1
>   Amp-In vals:  [0x18 0x18]
>   Pincap 0x00000030: IN OUT
>   Pin Default 0x10a601f0: [Jack] Mic at Int N/A
>     Conn = Digital, Color = Unknown
>     DefAssociation = 0xf, Sequence = 0x0
>     Misc = NO_PRESENCE
>   Pin-ctls: 0x20: IN
>   Connection: 1
>      0x17
> Node 0x17 [Audio Output] wcaps 0x291: Stereo Digital
>   Converter: stream=0, channel=0
>   Digital:
>   Digital category: 0x0
>   PCM:
>     rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
>     bits [0x1e]: 16 20 24 32
>     formats [0x3]: PCM FLOAT
>   Unsolicited: tag=17, enabled=0
> --endcollapse--
> 
> 
> !!Aplay/Arecord output
> !!------------
> 
> APLAY
> 
> **** List of PLAYBACK Hardware Devices ****
> card 0: NVidia [HDA NVidia], device 0: HDA Generic [HDA Generic]
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> 
> ARECORD
> 
> **** List of CAPTURE Hardware Devices ****
> card 0: NVidia [HDA NVidia], device 0: HDA Generic [HDA Generic]
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> 
> !!Amixer output
> !!-------------
> 
> !!-------Mixer controls for card 0 [NVidia]
> 
> Card hw:0 'NVidia'/'HDA NVidia at 0xfae78000 irq 20'
>   Mixer name    : 'Wolfson Microelectronics ID 8800'
>   Components    : 'HDA:1aec8800,00000100,00100301'
>   Controls      : 3
>   Simple ctrls  : 2
> Simple mixer control 'Master',0
>   Capabilities: pvolume pswitch penum
>   Playback channels: Front Left - Front Right
>   Limits: Playback 0 - 127
>   Mono:
>   Front Left: Playback 87 [69%] [-20.00dB] [on]
>   Front Right: Playback 87 [69%] [-20.00dB] [on]
> Simple mixer control 'PCM',0
>   Capabilities: pvolume penum
>   Playback channels: Front Left - Front Right
>   Limits: Playback 0 - 255
>   Mono:
>   Front Left: Playback 255 [100%] [0.00dB]
>   Front Right: Playback 255 [100%] [0.00dB]
> 
> 
> !!Alsactl output
> !!-------------
> 
> --startcollapse--
> state.NVidia {
>         control.1 {
>                 iface MIXER
>                 name 'Master Playback Switch'
>                 value.0 true
>                 value.1 true
>                 comment {
>                         access 'read write'
>                         type BOOLEAN
>                         count 2
>                 }
>         }
>         control.2 {
>                 iface MIXER
>                 name 'Master Playback Volume'
>                 value.0 87
>                 value.1 87
>                 comment {
>                         access 'read write'
>                         type INTEGER
>                         count 2
>                         range '0 - 127'
>                         dbmin -6350
>                         dbmax 0
>                         dbvalue.0 -2000
>                         dbvalue.1 -2000
>                 }
>         }
>         control.3 {
>                 iface MIXER
>                 name 'PCM Playback Volume'
>                 value.0 255
>                 value.1 255
>                 comment {
>                         access 'read write user'
>                         type INTEGER
>                         count 2
>                         range '0 - 255'
>                         tlv '0000000100000008ffffec1400000014'
>                         dbmin -5100
>                         dbmax 0
>                         dbvalue.0 0
>                         dbvalue.1 0
>                 }
>         }
> }
> --endcollapse--
> 
> 
> !!ALSA Device nodes
> !!-----------------
> 
> crw-rw----+ 1 root audio 116,  5 Feb 21 09:38 /dev/snd/controlC0
> crw-rw----+ 1 root audio 116,  4 Feb 21 09:38 /dev/snd/hwC0D0
> crw-rw----+ 1 root audio 116,  3 Feb 21 09:38 /dev/snd/pcmC0D0c
> crw-rw----+ 1 root audio 116,  2 Feb 21 09:39 /dev/snd/pcmC0D0p
> crw-rw----+ 1 root audio 116,  1 Feb 21 09:37 /dev/snd/seq
> crw-rw----+ 1 root audio 116, 33 Feb 21 09:37 /dev/snd/timer
> 
> /dev/snd/by-path:
> total 0
> drwxr-xr-x 2 root root  60 Feb 21 09:38 .
> drwxr-xr-x 3 root root 180 Feb 21 09:38 ..
> lrwxrwxrwx 1 root root  12 Feb 21 09:38 pci-0000:00:08.0 -> ../controlC0
> 
> 
> Este mensaje se dirige exclusivamente a su destinatario y puede contener información privilegiada o CONFIDENCIAL. Si no es vd. el destinatario indicado, queda notificado de que la utilización, divulgación y/o copia sin autorización está prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.
> 
> This message is intended exclusively for its addressee and may contain information that is CONFIDENTIAL and protected by professional privilege.
> If you are not the intended recipient you are hereby notified that any dissemination, copy or disclosure of this communication is strictly prohibited by law. If this message has been received in error, please immediately notify us via e-mail and delete it.
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel


More information about the Alsa-devel mailing list