Re: [alsa-devel] HD-Audio device unsuppored (Nvidia G2xx-series GPU implemented)
I forgot this attachment 1.patch and alsa-info.txt.
Stefan Ringel {stefan.ringel@arcor.de}
cid:part1.08000300.03060008@arcor.de
upload=true&script=true&cardinfo= !!################################ !!ALSA Information Script v 0.4.58 !!################################
!!Script ran on: Sat Dec 12 11:36:07 UTC 2009
!!Linux Distribution !!------------------
Welcome to openSUSE 11.2 "Emerald" - Kernel \r (\l). openSUSE 11.2 (x86_64)
!!DMI Information !!---------------
Manufacturer: System manufacturer Product Name: System Product Name
!!Kernel Information !!------------------
Kernel release: 2.6.31.5-0.1-desktop Operating System: GNU/Linux Architecture: x86_64 Processor: x86_64 SMP Enabled: Yes
!!ALSA Version !!------------
Driver version: 1.0.21 Library version: Utilities version: 1.0.21
!!Loaded ALSA modules !!-------------------
snd_hda_intel snd_hda_intel
!!Sound Servers on this system !!----------------------------
ESound Daemon: Installed - Yes (/usr/bin/esd) Running - No
Jack: Installed - Yes (/usr/bin/jackd) Running - No
!!Soundcards recognised by ALSA !!-----------------------------
0 [NVidia ]: HDA-Intel - HDA NVidia HDA NVidia at 0xfe020000 irq 25 1 [NVidia_1 ]: HDA-Intel - HDA NVidia HDA NVidia at 0xfcffc000 irq 26
!!PCI Soundcards installed in the system !!--------------------------------------
00:0e.1 Audio device: nVidia Corporation MCP55 High Definition Audio (rev a2) 01:00.1 Audio device: nVidia Corporation Device 0be3 (rev a1)
!!Advanced information - PCI Vendor/Device/Susbsystem ID's !!--------------------------------------------------------
00:0e.1 0403: 10de:0371 (rev a2) Subsystem: 1043:81f6 -- 01:00.1 0403: 10de:0be3 (rev a1) Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
!!Loaded sound module options !!--------------------------
!!Module: snd_hda_intel bdl_pos_adj : 32,32,-1,-1,-1,-1,-1,-1 beep_mode : 1,1,1,1,1,1,1,1 enable : Y,Y,Y,Y,Y,Y,Y,Y enable_msi : -1 id : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> index : -1,-1,-1,-1,-1,-1,-1,-1 model : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> patch : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> position_fix : 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 probe_only : N,N,N,N,N,N,N,N single_cmd : N
!!Module: snd_hda_intel bdl_pos_adj : 32,32,-1,-1,-1,-1,-1,-1 beep_mode : 1,1,1,1,1,1,1,1 enable : Y,Y,Y,Y,Y,Y,Y,Y enable_msi : -1 id : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> index : -1,-1,-1,-1,-1,-1,-1,-1 model : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> patch : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> position_fix : 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 probe_only : N,N,N,N,N,N,N,N single_cmd : N
!!HDA-Intel Codec information !!--------------------------- --startcollapse--
Codec: Analog Devices AD1988B Address: 0 Function Id: 0x1 Vendor Id: 0x11d4198b Subsystem Id: 0x104381f6 Revision Id: 0x100200 No Modem Function Group found Default PCM: rates [0x7ff]: 8000 11025 16000 22050 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x1]: PCM Default Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Default Amp-Out caps: ofs=0x27, nsteps=0x27, stepsize=0x05, mute=0 GPIO: io=2, 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=1, unsol=0 Node 0x02 [Audio Output] wcaps 0x30311: Stereo Digital Control: name="IEC958 Playback Con Mask", index=0, device=0 Control: name="IEC958 Playback Pro Mask", index=0, device=0 Control: name="IEC958 Playback Default", index=0, device=0 Control: name="IEC958 Playback Switch", index=0, device=0 Control: name="IEC958 Default PCM Playback Switch", index=0, device=0 Device: name="AD198x Digital", type="SPDIF", device=1 Converter: stream=0, channel=0 Digital: Enabled Non-Audio GenLevel Digital category: 0x2 PCM: rates [0x7e0]: 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Delay: 3 samples Connection: 1 0x1d Node 0x03 [Audio Output] wcaps 0x405: Stereo Amp-Out Amp-Out caps: ofs=0x27, nsteps=0x27, stepsize=0x05, mute=0 Amp-Out vals: [0x27 0x27] Converter: stream=0, channel=0 Power states: D0 D3 Power: setting=D0, actual=D0 Node 0x04 [Audio Output] wcaps 0x405: Stereo Amp-Out Control: name="Front Playback Volume", index=0, device=0 Device: name="AD198x Analog", type="Audio", device=0 Amp-Out caps: ofs=0x27, nsteps=0x27, stepsize=0x05, mute=0 Amp-Out vals: [0x1f 0x1f] Converter: stream=0, channel=0 Power states: D0 D3 Power: setting=D0, actual=D0 Node 0x05 [Audio Output] wcaps 0x405: Stereo Amp-Out Control: name="Center Playback Volume", index=0, device=0 Control: name="LFE Playback Volume", index=0, device=0 Amp-Out caps: ofs=0x27, nsteps=0x27, stepsize=0x05, mute=0 Amp-Out vals: [0x00 0x00] Converter: stream=0, channel=0 Power states: D0 D3 Power: setting=D0, actual=D0 Node 0x06 [Audio Output] wcaps 0x405: Stereo Amp-Out Control: name="Surround Playback Volume", index=0, device=0 Amp-Out caps: ofs=0x27, nsteps=0x27, stepsize=0x05, mute=0 Amp-Out vals: [0x1f 0x1f] Converter: stream=0, channel=0 Power states: D0 D3 Power: setting=D0, actual=D0 Node 0x07 [Audio Input] wcaps 0x130391: Stereo Digital Control: name="IEC958 Capture Switch", index=0, device=0 Control: name="IEC958 Capture Default", index=0, device=0 Device: name="AD198x Digital", type="SPDIF", device=1 Converter: stream=0, channel=0 SDI-Select: 0 Digital: Digital category: 0x0 PCM: rates [0x7e0]: 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Delay: 3 samples Connection: 1 0x1c Node 0x08 [Audio Input] wcaps 0x100501: Stereo Device: name="AD198x Analog", type="Audio", device=0 Converter: stream=0, channel=0 SDI-Select: 0 Power states: D0 D3 Power: setting=D0, actual=D0 Connection: 1 0x0c Node 0x09 [Audio Input] wcaps 0x100501: Stereo Converter: stream=0, channel=0 SDI-Select: 0 Power states: D0 D3 Power: setting=D0, actual=D0 Connection: 1 0x0d Node 0x0a [Audio Output] wcaps 0x405: Stereo Amp-Out Control: name="Side Playback Volume", index=0, device=0 Amp-Out caps: ofs=0x27, nsteps=0x27, stepsize=0x05, mute=0 Amp-Out vals: [0x00 0x00] Converter: stream=0, channel=0 Power states: D0 D3 Power: setting=D0, actual=D0 Node 0x0b [Audio Selector] wcaps 0x300301: Stereo Digital Connection: 3 0x08* 0x09 0x0f Node 0x0c [Audio Selector] wcaps 0x30010d: Stereo Amp-Out Control: name="Capture Volume", index=0, device=0 Control: name="Capture Switch", index=0, device=0 Amp-Out caps: ofs=0x27, nsteps=0x36, stepsize=0x05, mute=1 Amp-Out vals: [0x2f 0x2f] Connection: 10 0x38 0x39* 0x3a 0x3b 0x3c 0x18 0x24 0x25 0x3d 0x20 Node 0x0d [Audio Selector] wcaps 0x30010d: Stereo Amp-Out Control: name="Capture Volume", index=1, device=0 Control: name="Capture Switch", index=1, device=0 Amp-Out caps: ofs=0x27, nsteps=0x36, stepsize=0x05, mute=1 Amp-Out vals: [0xa7 0xa7] Connection: 10 0x38 0x39* 0x3a 0x3b 0x3c 0x18 0x24 0x25 0x3d 0x20 Node 0x0e [Audio Selector] wcaps 0x30010d: Stereo Amp-Out Control: name="Capture Volume", index=2, device=0 Control: name="Capture Switch", index=2, device=0 Amp-Out caps: ofs=0x27, nsteps=0x36, stepsize=0x05, mute=1 Amp-Out vals: [0xa7 0xa7] Connection: 10 0x38 0x39* 0x3a 0x3b 0x3c 0x18 0x24 0x25 0x3d 0x20 Node 0x0f [Audio Input] wcaps 0x100501: Stereo Converter: stream=0, channel=0 SDI-Select: 0 Power states: D0 D3 Power: setting=D0, actual=D0 Connection: 1 0x0e Node 0x10 [Beep Generator Widget] wcaps 0x70000c: Mono Amp-Out Control: name="Beep Playback Volume", index=0, device=0 Control: name="Beep Playback Switch", index=0, device=0 Amp-Out caps: ofs=0x0f, nsteps=0x0f, stepsize=0x0b, mute=1 Amp-Out vals: [0x00] Node 0x11 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x0000373f: IN OUT HP Detect Trigger ImpSense Vref caps: HIZ 50 GRD 80 100 Pin Default 0x02214030: [Jack] HP Out at Ext Front Conn = 1/8, Color = Green DefAssociation = 0x3, Sequence = 0x0 Pin-ctls: 0xc0: OUT HP VREF_HIZ Unsolicited: tag=00, enabled=0 Connection: 1 0x22 Node 0x12 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x0001373f: IN OUT HP EAPD Detect Trigger ImpSense Vref caps: HIZ 50 GRD 80 100 EAPD 0x0: Pin Default 0x01014010: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Green DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x40: OUT VREF_HIZ Unsolicited: tag=00, enabled=0 Connection: 1 0x29 Node 0x13 [Pin Complex] wcaps 0x40010c: Mono Amp-Out Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=1 Amp-Out vals: [0x00] Pincap 0x00000010: OUT Pin Default 0x511711f0: [N/A] Speaker at Int Rear Conn = Analog, Color = Black DefAssociation = 0xf, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT Connection: 1 0x2d Node 0x14 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x0000373f: IN OUT HP Detect Trigger ImpSense Vref caps: HIZ 50 GRD 80 100 Pin Default 0x02a1902e: [Jack] Mic at Ext Front Conn = 1/8, Color = Pink DefAssociation = 0x2, Sequence = 0xe Pin-ctls: 0x24: IN VREF_80 Unsolicited: tag=00, enabled=0 Connection: 1 0x2b Node 0x15 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x00013737: IN OUT EAPD Detect Trigger ImpSense Vref caps: HIZ 50 GRD 80 100 EAPD 0x0: Pin Default 0x01813021: [Jack] Line In at Ext Rear Conn = 1/8, Color = Blue DefAssociation = 0x2, Sequence = 0x1 Pin-ctls: 0x20: IN VREF_HIZ Unsolicited: tag=00, enabled=0 Connection: 1 0x2c Node 0x16 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x00003737: IN OUT Detect Trigger ImpSense Vref caps: HIZ 50 GRD 80 100 Pin Default 0x01011012: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Black DefAssociation = 0x1, Sequence = 0x2 Pin-ctls: 0x40: OUT VREF_HIZ Unsolicited: tag=00, enabled=0 Connection: 1 0x2a Node 0x17 [Pin Complex] wcaps 0x40098d: Stereo Amp-Out R/L Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x80 0x80] Pincap 0x00003737: IN OUT Detect Trigger ImpSense Vref caps: HIZ 50 GRD 80 100 Pin Default 0x01a19020: [Jack] Mic at Ext Rear Conn = 1/8, Color = Pink DefAssociation = 0x2, Sequence = 0x0 Pin-ctls: 0x24: IN VREF_80 Unsolicited: tag=00, enabled=0 Connection: 1 0x26 Node 0x18 [Pin Complex] wcaps 0x400001: Stereo Pincap 0x00000020: IN Pin Default 0x99331122: [Fixed] CD at Int ATAPI Conn = ATAPI, Color = Black DefAssociation = 0x2, Sequence = 0x2 Misc = NO_PRESENCE Pin-ctls: 0x20: IN Node 0x19 [Power Widget] wcaps 0x500500: Mono Power states: D0 D3 Power: setting=D0, actual=D0 Connection: 2 0x20 0x21 Node 0x1a [Pin Complex] wcaps 0x400000: Mono Pincap 0x00000020: IN Pin Default 0x91f711f0: [Fixed] Other at Int Rear Conn = Analog, Color = Black DefAssociation = 0xf, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x20: IN Node 0x1b [Pin Complex] wcaps 0x40030d: Stereo Digital Amp-Out Control: name="IEC958 Playback Volume", index=0, device=0 Amp-Out caps: ofs=0x27, nsteps=0x27, stepsize=0x05, mute=1 Amp-Out vals: [0x1f 0x1f] Pincap 0x00000010: OUT Pin Default 0x0145f1f0: [Jack] SPDIF Out at Ext Rear Conn = Optical, Color = Other DefAssociation = 0xf, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x40: OUT Connection: 1 0x02 Node 0x1c [Pin Complex] wcaps 0x40020b: Stereo Digital Amp-In Control: name="IEC958 Capture Volume", index=0, device=0 Amp-In caps: ofs=0x17, nsteps=0x1f, stepsize=0x05, mute=1 Amp-In vals: [0x97 0x97] Pincap 0x00000020: IN Pin Default 0x41c5f1f0: [N/A] SPDIF In at Ext Rear Conn = Optical, Color = Other DefAssociation = 0xf, Sequence = 0x0 Misc = NO_PRESENCE Pin-ctls: 0x20: IN Node 0x1d [Audio Mixer] wcaps 0x200303: Stereo Digital Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x80 0x80] Connection: 2 0x01 0x0b Node 0x1e [Audio Mixer] wcaps 0x200103: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] Connection: 2 0x36 0x21 Node 0x1f [Volume Knob Widget] wcaps 0x600080: Mono Volume-Knob: delta=1, steps=63, direct=0, val=0 Unsolicited: tag=00, enabled=0 Connection: 0 Node 0x20 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In Control: name="CD Playback Volume", index=0, device=0 Control: name="CD Playback Switch", index=0, device=0 Control: name="Front Mic Playback Volume", index=0, device=0 Control: name="Front Mic Playback Switch", index=0, device=0 Control: name="Line Playback Volume", index=0, device=0 Control: name="Line Playback Switch", index=0, device=0 Control: name="Mic Playback Volume", index=0, device=0 Control: name="Mic Playback Switch", index=0, device=0 Amp-In caps: ofs=0x17, nsteps=0x1f, stepsize=0x05, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x17 0x17] [0x80 0x80] Connection: 8 0x39 0x33 0x38 0x3d 0x34 0x3b 0x18 0x1a Node 0x21 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out Control: name="Analog Mix Playback Volume", index=0, device=0 Control: name="Analog Mix Playback Switch", index=0, device=0 Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=1 Amp-Out vals: [0x1f 0x1f] Connection: 1 0x20 Node 0x22 [Audio Mixer] wcaps 0x200103: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x00 0x00] Connection: 2 0x37 0x21 Node 0x23 [Vendor Defined Widget] wcaps 0xf00100: Mono Connection: 18 0x11* 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x24 0x25 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x20 0x21 Node 0x24 [Pin Complex] wcaps 0x40098d: Stereo Amp-Out R/L Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x00000037: IN OUT Detect Trigger ImpSense Pin Default 0x01016011: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Orange DefAssociation = 0x1, Sequence = 0x1 Pin-ctls: 0x40: OUT Unsolicited: tag=00, enabled=0 Connection: 1 0x27 Node 0x25 [Pin Complex] wcaps 0x40018d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-Out vals: [0x00 0x00] Pincap 0x00000037: IN OUT Detect Trigger ImpSense Pin Default 0x01012014: [Jack] Line Out at Ext Rear Conn = 1/8, Color = Grey DefAssociation = 0x1, Sequence = 0x4 Pin-ctls: 0x40: OUT Unsolicited: tag=00, enabled=0 Connection: 1 0x28 Node 0x26 [Audio Mixer] wcaps 0x200103: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] Connection: 2 0x32 0x21 Node 0x27 [Audio Mixer] wcaps 0x200103: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x00 0x00] Connection: 2 0x05 0x21 Node 0x28 [Audio Mixer] wcaps 0x200103: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] Connection: 2 0x0a 0x21 Node 0x29 [Audio Mixer] wcaps 0x200103: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x00 0x00] Connection: 2 0x04 0x21 Node 0x2a [Audio Mixer] wcaps 0x200103: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x00 0x00] [0x00 0x00] Connection: 2 0x06 0x21 Node 0x2b [Audio Mixer] wcaps 0x200103: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] Connection: 2 0x30 0x21 Node 0x2c [Audio Mixer] wcaps 0x200103: Stereo Amp-In Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1 Amp-In vals: [0x80 0x80] [0x80 0x80] Connection: 2 0x31 0x21 Node 0x2d [Audio Mixer] wcaps 0x200100: Mono Connection: 1 0x1e Node 0x2e [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x2f [Vendor Defined Widget] wcaps 0xf00100: Mono Connection: 6 0x11* 0x12 0x14 0x15 0x16 0x17 Node 0x30 [Audio Selector] wcaps 0x300101: Stereo Connection: 3 0x03* 0x04 0x06 Node 0x31 [Audio Selector] wcaps 0x300101: Stereo Connection: 2 0x04* 0x0a Node 0x32 [Audio Selector] wcaps 0x300101: Stereo Connection: 2 0x05* 0x04 Node 0x33 [Audio Selector] wcaps 0x300101: Stereo Connection: 3 0x3a* 0x25 0x24 Node 0x34 [Audio Selector] wcaps 0x300101: Stereo Connection: 3 0x3c* 0x25 0x24 Node 0x35 [Vendor Defined Widget] wcaps 0xf00000: Mono Node 0x36 [Audio Selector] wcaps 0x300101: Stereo Connection: 3 0x03 0x04* 0x06 Node 0x37 [Audio Selector] wcaps 0x300101: Stereo Connection: 3 0x03 0x04* 0x06 Node 0x38 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-Out vals: [0x00 0x00] Connection: 1 0x11 Node 0x39 [Audio Selector] wcaps 0x30010d: Stereo Amp-Out Control: name="Front Mic Boost", index=0, device=0 Amp-Out caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-Out vals: [0x00 0x00] Connection: 1 0x14 Node 0x3a [Audio Selector] wcaps 0x30010d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-Out vals: [0x00 0x00] Connection: 1 0x15 Node 0x3b [Audio Selector] wcaps 0x30010d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-Out vals: [0x00 0x00] Connection: 1 0x16 Node 0x3c [Audio Selector] wcaps 0x30010d: Stereo Amp-Out Control: name="Mic Boost", index=0, device=0 Amp-Out caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-Out vals: [0x00 0x00] Connection: 1 0x17 Node 0x3d [Audio Selector] wcaps 0x30010d: Stereo Amp-Out Amp-Out caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0 Amp-Out vals: [0x00 0x00] Connection: 1 0x12 Codec: Nvidia ID b Address: 0 Function Id: 0x1 Vendor Id: 0x10de000b Subsystem Id: 0x10de0101 Revision Id: 0x100100 No Modem Function Group found Default PCM: rates [0x0]: bits [0x0]: formats [0x0]: Default Amp-In caps: N/A Default Amp-Out caps: N/A GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 Node 0x04 [Audio Output] wcaps 0x72b1: 8-Channels Digital Stripe CP Converter: stream=0, channel=0 Digital: Digital category: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Node 0x05 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP Pincap 0x09000094: OUT Detect HDMI Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Connection: 1 0x04 Codec: Nvidia ID b Address: 1 Function Id: 0x1 Vendor Id: 0x10de000b Subsystem Id: 0x10de0101 Revision Id: 0x100100 No Modem Function Group found Default PCM: rates [0x0]: bits [0x0]: formats [0x0]: Default Amp-In caps: N/A Default Amp-Out caps: N/A GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 Node 0x04 [Audio Output] wcaps 0x72b1: 8-Channels Digital Stripe CP Converter: stream=0, channel=0 Digital: Digital category: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Node 0x05 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP Pincap 0x09000094: OUT Detect HDMI Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Connection: 1 0x04 Codec: Nvidia ID b Address: 2 Function Id: 0x1 Vendor Id: 0x10de000b Subsystem Id: 0x10de0101 Revision Id: 0x100100 No Modem Function Group found Default PCM: rates [0x0]: bits [0x0]: formats [0x0]: Default Amp-In caps: N/A Default Amp-Out caps: N/A GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 Node 0x04 [Audio Output] wcaps 0x72b1: 8-Channels Digital Stripe CP Converter: stream=0, channel=0 Digital: Digital category: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Node 0x05 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP Pincap 0x09000094: OUT Detect HDMI Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Connection: 1 0x04 Codec: Nvidia ID b Address: 3 Function Id: 0x1 Vendor Id: 0x10de000b Subsystem Id: 0x10de0101 Revision Id: 0x100100 No Modem Function Group found Default PCM: rates [0x0]: bits [0x0]: formats [0x0]: Default Amp-In caps: N/A Default Amp-Out caps: N/A GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 Node 0x04 [Audio Output] wcaps 0x72b1: 8-Channels Digital Stripe CP Converter: stream=0, channel=0 Digital: Digital category: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Node 0x05 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP Pincap 0x09000094: OUT Detect HDMI Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Connection: 1 0x04 --endcollapse--
!!ALSA Device nodes !!-----------------
crw-rw----+ 1 root audio 116, 0 Dec 12 10:55 /dev/snd/controlC0 crw-rw----+ 1 root audio 116, 32 Dec 12 10:55 /dev/snd/controlC1 crw-rw----+ 1 root audio 116, 4 Dec 12 10:55 /dev/snd/hwC0D0 crw-rw----+ 1 root audio 116, 36 Dec 12 10:55 /dev/snd/hwC1D0 crw-rw----+ 1 root audio 116, 37 Dec 12 10:55 /dev/snd/hwC1D1 crw-rw----+ 1 root audio 116, 38 Dec 12 10:55 /dev/snd/hwC1D2 crw-rw----+ 1 root audio 116, 39 Dec 12 10:55 /dev/snd/hwC1D3 crw-rw----+ 1 root audio 116, 24 Dec 12 10:55 /dev/snd/pcmC0D0c crw-rw----+ 1 root audio 116, 16 Dec 12 10:55 /dev/snd/pcmC0D0p crw-rw----+ 1 root audio 116, 25 Dec 12 10:55 /dev/snd/pcmC0D1c crw-rw----+ 1 root audio 116, 17 Dec 12 10:55 /dev/snd/pcmC0D1p crw-rw----+ 1 root audio 116, 1 Dec 12 10:55 /dev/snd/seq crw-rw----+ 1 root audio 116, 33 Dec 12 10:55 /dev/snd/timer
/dev/snd/by-path: total 0 drwxr-xr-x 2 root root 80 Dec 12 10:55 . drwxr-xr-x 3 root root 320 Dec 12 10:55 .. lrwxrwxrwx 1 root root 12 Dec 12 10:55 pci-0000:00:0e.1 -> ../controlC0 lrwxrwxrwx 1 root root 12 Dec 12 10:55 pci-0000:01:00.1 -> ../controlC1
!!Aplay/Arecord output !!------------
APLAY
**** List of PLAYBACK Hardware Devices **** card 0: NVidia [HDA NVidia], device 0: AD198x Analog [AD198x Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 1: AD198x Digital [AD198x Digital] Subdevices: 1/1 Subdevice #0: subdevice #0
ARECORD
**** List of CAPTURE Hardware Devices **** card 0: NVidia [HDA NVidia], device 0: AD198x Analog [AD198x Analog] Subdevices: 3/3 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 card 0: NVidia [HDA NVidia], device 1: AD198x Digital [AD198x Digital] Subdevices: 1/1 Subdevice #0: subdevice #0
!!Amixer output !!-------------
!!-------Mixer controls for card 0 [NVidia]
Card hw:0 'NVidia'/'HDA NVidia at 0xfe020000 irq 25' Mixer name : 'Analog Devices AD1988B' Components : 'HDA:11d4198b,104381f6,00100200' Controls : 48 Simple ctrls : 26 Simple mixer control 'Master',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 39 Mono: Playback 31 [79%] [-12.00dB] [on] Simple mixer control 'Headphone',0 Capabilities: pswitch Playback channels: Front Left - Front Right Mono: Front Left: Playback [on] Front Right: Playback [on] Simple mixer control 'PCM',0 Capabilities: pvolume Playback channels: Front Left - Front Right Limits: Playback 0 - 255 Mono: Front Left: Playback 0 [0%] [-51.00dB] Front Right: Playback 0 [0%] [-51.00dB] Simple mixer control 'Front',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 39 Mono: Front Left: Playback 39 [100%] [0.00dB] [on] Front Right: Playback 39 [100%] [0.00dB] [on] Simple mixer control 'Front Mic',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 0 [0%] [-34.50dB] [off] Front Right: Playback 0 [0%] [-34.50dB] [off] Simple mixer control 'Front Mic Boost',0 Capabilities: volume Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: 0 - 3 Front Left: 0 [0%] Front Right: 0 [0%] Simple mixer control 'Surround',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 39 Mono: Front Left: Playback 39 [100%] [0.00dB] [on] Front Right: Playback 39 [100%] [0.00dB] [on] Simple mixer control 'Center',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 39 Mono: Playback 0 [0%] [-58.50dB] [on] Simple mixer control 'LFE',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 39 Mono: Playback 0 [0%] [-58.50dB] [on] Simple mixer control 'Side',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 39 Mono: Front Left: Playback 0 [0%] [-58.50dB] [off] Front Right: Playback 0 [0%] [-58.50dB] [off] Simple mixer control 'Line',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 0 [0%] [-34.50dB] [off] Front Right: Playback 0 [0%] [-34.50dB] [off] Simple mixer control 'CD',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 23 [74%] [0.00dB] [on] Front Right: Playback 23 [74%] [0.00dB] [on] Simple mixer control 'Mic',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 0 [0%] [-34.50dB] [off] Front Right: Playback 0 [0%] [-34.50dB] [off] Simple mixer control 'Mic Boost',0 Capabilities: volume Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: 0 - 3 Front Left: 0 [0%] Front Right: 0 [0%] Simple mixer control 'IEC958',0 Capabilities: pvolume cvolume pswitch pswitch-joined cswitch cswitch-joined Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: Playback 0 - 39 Capture 0 - 31 Front Left: Playback 39 [100%] [0.00dB] [on] Capture 23 [74%] [0.00dB] [off] Front Right: Playback 39 [100%] [0.00dB] [on] Capture 23 [74%] [0.00dB] [off] Simple mixer control 'IEC958 Default PCM',0 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [on] Simple mixer control 'IEC958 Playback Source',0 Capabilities: enum Items: 'PCM' 'ADC1' 'ADC2' 'ADC3' Item0: 'PCM' Simple mixer control 'Beep',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 15 Mono: Playback 15 [100%] [0.00dB] [off] Simple mixer control 'Mono',0 Capabilities: pswitch Playback channels: Front Left - Front Right Mono: Front Left: Playback [off] Front Right: Playback [off] Simple mixer control 'Capture',0 Capabilities: cvolume cswitch Capture channels: Front Left - Front Right Limits: Capture 0 - 54 Front Left: Capture 47 [87%] [12.00dB] [on] Front Right: Capture 47 [87%] [12.00dB] [on] Simple mixer control 'Capture',1 Capabilities: cvolume cswitch Capture channels: Front Left - Front Right Limits: Capture 0 - 54 Front Left: Capture 39 [72%] [0.00dB] [off] Front Right: Capture 39 [72%] [0.00dB] [off] Simple mixer control 'Capture',2 Capabilities: cvolume cswitch Capture channels: Front Left - Front Right Limits: Capture 0 - 54 Front Left: Capture 39 [72%] [0.00dB] [off] Front Right: Capture 39 [72%] [0.00dB] [off] Simple mixer control 'Analog Mix',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 31 [100%] [0.00dB] [on] Front Right: Playback 31 [100%] [0.00dB] [on] Simple mixer control 'Input Source',0 Capabilities: cenum Items: 'Front Mic' 'Line' 'Mic' 'CD' 'Mix' Item0: 'Front Mic' Simple mixer control 'Input Source',1 Capabilities: cenum Items: 'Front Mic' 'Line' 'Mic' 'CD' 'Mix' Item0: 'Front Mic' Simple mixer control 'Input Source',2 Capabilities: cenum Items: 'Front Mic' 'Line' 'Mic' 'CD' 'Mix' Item0: 'Front Mic'
!!-------Mixer controls for card 1 [NVidia_1]
Card hw:1 'NVidia_1'/'HDA NVidia at 0xfcffc000 irq 26' Mixer name : 'Nvidia ID b' Components : 'HDA:10de000b,10de0101,00100100' Controls : 0 Simple ctrls : 0
!!Alsactl output !!-------------
--startcollapse-- state.NVidia { control.1 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'Front Playback Volume' value.0 39 value.1 39 } control.2 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'Surround Playback Volume' value.0 39 value.1 39 } control.3 { comment.access 'read write' comment.type INTEGER comment.count 1 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'Center Playback Volume' value 0 } control.4 { comment.access 'read write' comment.type INTEGER comment.count 1 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'LFE Playback Volume' value 0 } control.5 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'Side Playback Volume' value.0 0 value.1 0 } control.6 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Front Playback Switch' value.0 true value.1 true } control.7 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Surround Playback Switch' value.0 true value.1 true } control.8 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'Center Playback Switch' value true } control.9 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'LFE Playback Switch' value true } control.10 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Side Playback Switch' value.0 false value.1 false } control.11 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Headphone Playback Switch' value.0 true value.1 true } control.12 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Mono Playback Switch' value.0 false value.1 false } control.13 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -3450 comment.dbmax 1200 iface MIXER name 'CD Playback Volume' value.0 23 value.1 23 } control.14 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'CD Playback Switch' value.0 true value.1 true } control.15 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -3450 comment.dbmax 1200 iface MIXER name 'Front Mic Playback Volume' value.0 0 value.1 0 } control.16 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Front Mic Playback Switch' value.0 false value.1 false } control.17 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -3450 comment.dbmax 1200 iface MIXER name 'Line Playback Volume' value.0 0 value.1 0 } control.18 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Line Playback Switch' value.0 false value.1 false } control.19 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -3450 comment.dbmax 1200 iface MIXER name 'Mic Playback Volume' value.0 0 value.1 0 } control.20 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Mic Playback Switch' value.0 false value.1 false } control.21 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -4650 comment.dbmax 0 iface MIXER name 'Analog Mix Playback Volume' value.0 31 value.1 31 } control.22 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Analog Mix Playback Switch' value.0 true value.1 true } control.23 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 3' comment.dbmin 0 comment.dbmax 3000 iface MIXER name 'Front Mic Boost' value.0 0 value.1 0 } control.24 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 3' comment.dbmin 0 comment.dbmax 3000 iface MIXER name 'Mic Boost' value.0 0 value.1 0 } control.25 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 54' comment.dbmin -5850 comment.dbmax 2250 iface MIXER name 'Capture Volume' value.0 47 value.1 47 } control.26 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Capture Switch' value.0 true value.1 true } control.27 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 54' comment.dbmin -5850 comment.dbmax 2250 iface MIXER name 'Capture Volume' index 1 value.0 39 value.1 39 } control.28 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Capture Switch' index 1 value.0 false value.1 false } control.29 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 54' comment.dbmin -5850 comment.dbmax 2250 iface MIXER name 'Capture Volume' index 2 value.0 39 value.1 39 } control.30 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Capture Switch' index 2 value.0 false value.1 false } control.31 { comment.access 'read write' comment.type ENUMERATED comment.count 1 comment.item.0 'Front Mic' comment.item.1 Line comment.item.2 Mic comment.item.3 CD comment.item.4 Mix iface MIXER name 'Input Source' value 'Front Mic' } control.32 { comment.access 'read write' comment.type ENUMERATED comment.count 1 comment.item.0 'Front Mic' comment.item.1 Line comment.item.2 Mic comment.item.3 CD comment.item.4 Mix iface MIXER name 'Input Source' index 1 value 'Front Mic' } control.33 { comment.access 'read write' comment.type ENUMERATED comment.count 1 comment.item.0 'Front Mic' comment.item.1 Line comment.item.2 Mic comment.item.3 CD comment.item.4 Mix iface MIXER name 'Input Source' index 2 value 'Front Mic' } control.34 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'IEC958 Playback Volume' value.0 39 value.1 39 } control.35 { comment.access 'read write' comment.type ENUMERATED comment.count 1 comment.item.0 PCM comment.item.1 ADC1 comment.item.2 ADC2 comment.item.3 ADC3 iface MIXER name 'IEC958 Playback Source' value PCM } control.36 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -3450 comment.dbmax 1200 iface MIXER name 'IEC958 Capture Volume' value.0 23 value.1 23 } control.37 { comment.access read comment.type IEC958 comment.count 1 iface MIXER name 'IEC958 Playback Con Mask' value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' } control.38 { comment.access read comment.type IEC958 comment.count 1 iface MIXER name 'IEC958 Playback Pro Mask' value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' } control.39 { comment.access 'read write' comment.type IEC958 comment.count 1 iface MIXER name 'IEC958 Playback Default' value '0682000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' } control.40 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'IEC958 Playback Switch' value true } control.41 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'IEC958 Default PCM Playback Switch' value true } control.42 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'IEC958 Capture Switch' value false } control.43 { comment.access read comment.type IEC958 comment.count 1 iface MIXER name 'IEC958 Capture Default' value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' } control.44 { comment.access 'read write' comment.type INTEGER comment.count 1 comment.range '0 - 15' comment.dbmin -4500 comment.dbmax 0 iface MIXER name 'Beep Playback Volume' value 15 } control.45 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'Beep Playback Switch' value false } control.46 { comment.access 'read write' comment.type INTEGER comment.count 1 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'Master Playback Volume' value 31 } control.47 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'Master Playback Switch' value true } control.48 { comment.access 'read write user' comment.type INTEGER comment.count 2 comment.range '0 - 255' comment.tlv '0000000100000008ffffec1400000014' comment.dbmin -5100 comment.dbmax 0 iface MIXER name 'PCM Playback Volume' value.0 0 value.1 0 } } state.NVidia_1 { control { } } --endcollapse--
!!All Loaded Modules !!------------------
Module ip6t_LOG xt_tcpudp xt_pkttype ipt_LOG xt_limit snd_pcm_oss snd_mixer_oss snd_seq snd_seq_device af_packet ip6t_REJECT nf_conntrack_ipv6 ip6table_raw xt_NOTRACK ipt_REJECT xt_state iptable_raw iptable_filter ip6table_mangle nf_conntrack_netbios_ns nf_conntrack_ipv4 nf_conntrack nf_defrag_ipv4 ip_tables ip6table_filter cpufreq_conservative cpufreq_userspace cpufreq_powersave powernow_k8 ip6_tables x_tables fuse nls_iso8859_1 nls_cp437 vfat fat loop dm_mod snd_hda_codec_analog ohci1394 sr_mod cdrom sg nvidia amd64_edac_mod ieee1394 serio_raw snd_hda_intel asus_atk0110 snd_hda_codec snd_hwdep pcspkr snd_pcm snd_timer button forcedeth snd snd_page_alloc edac_core k8temp i2c_nforce2 ext4 jbd2 crc16 fan processor ide_pci_generic amd74xx ide_core ata_generic thermal thermal_sys pata_amd sata_nv
!!Sysfs Files !!-----------
/sys/class/sound/hwC0D0/init_pin_configs: 0x11 0x02214030 0x12 0x01014010 0x13 0x511711f0 0x14 0x02a1902e 0x15 0x01813021 0x16 0x01011012 0x17 0x01a19020 0x18 0x99331122 0x1a 0x91f711f0 0x1b 0x0145f1f0 0x1c 0x41c5f1f0 0x24 0x01016011 0x25 0x01012014
/sys/class/sound/hwC0D0/driver_pin_configs:
/sys/class/sound/hwC0D0/user_pin_configs:
/sys/class/sound/hwC0D0/init_verbs:
/sys/class/sound/hwC1D0/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC1D0/driver_pin_configs:
/sys/class/sound/hwC1D0/user_pin_configs:
/sys/class/sound/hwC1D0/init_verbs:
/sys/class/sound/hwC1D1/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC1D1/driver_pin_configs:
/sys/class/sound/hwC1D1/user_pin_configs:
/sys/class/sound/hwC1D1/init_verbs:
/sys/class/sound/hwC1D2/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC1D2/driver_pin_configs:
/sys/class/sound/hwC1D2/user_pin_configs:
/sys/class/sound/hwC1D2/init_verbs:
/sys/class/sound/hwC1D3/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC1D3/driver_pin_configs:
/sys/class/sound/hwC1D3/user_pin_configs:
/sys/class/sound/hwC1D3/init_verbs:
!!ALSA/HDA dmesg !!------------------
[ 6.450119] ACPI: PCI Interrupt Link [AAZA] enabled at IRQ 21 [ 6.457047] HDA Intel 0000:00:0e.1: PCI INT B -> Link[AAZA] -> GSI 21 (level, low) -> IRQ 21 [ 6.464075] alloc irq_desc for 25 on node 0 [ 6.464078] alloc kstat_irqs on node 0 [ 6.464091] HDA Intel 0000:00:0e.1: irq 25 for MSI/MSI-X [ 6.464125] HDA Intel 0000:00:0e.1: setting latency timer to 64 [ 171.641515] ALSA hda_intel.c:694: azx_get_response timeout, switching to polling mode: last cmd=0x000f0000 [ 171.641515] ieee1394: Host added: ID:BUS[0-00:1023] GUID[0011d80000c1c098] [ 171.641515] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:0e.1/input/input5 [ 171.641515] HDA Intel 0000:01:00.1: PCI INT A -> Link[APC5] -> GSI 16 (level, low) -> IRQ 16 [ 171.641515] alloc irq_desc for 26 on node 0 [ 171.641515] alloc kstat_irqs on node 0 [ 171.641515] HDA Intel 0000:01:00.1: irq 26 for MSI/MSI-X [ 171.641515] HDA Intel 0000:01:00.1: setting latency timer to 64 [ 171.641515] EDAC amd64: This node reports that Memory ECC is currently disabled. -- [ 171.641515] forcedeth 0000:00:11.0: highdma csum vlan pwrctl mgmt gbit lnktim msi desc-v3 [ 171.641515] ALSA hda_intel.c:694: azx_get_response timeout, switching to polling mode: last cmd=0x100f0000 [ 171.641515] ALSA hda_generic.c:683: hda_generic: no proper input path found [ 171.641515] ALSA hda_generic.c:431: hda_generic: no proper output path found [ 171.641515] ALSA hda_generic.c:683: hda_generic: no proper input path found [ 171.641515] ALSA hda_generic.c:431: hda_generic: no proper output path found [ 171.641515] ALSA hda_generic.c:683: hda_generic: no proper input path found [ 171.641515] ALSA hda_generic.c:431: hda_generic: no proper output path found [ 171.641515] ALSA hda_generic.c:683: hda_generic: no proper input path found [ 171.641515] ALSA hda_generic.c:431: hda_generic: no proper output path found [ 171.641515] ALSA hda_generic.c:1035: hda_generic: no PCM found [ 171.641515] ALSA hda_generic.c:1035: hda_generic: no PCM found [ 171.641515] ALSA hda_generic.c:1035: hda_generic: no PCM found [ 171.641515] ALSA hda_generic.c:1035: hda_generic: no PCM found [ 171.641515] Adding 2996080k swap on /dev/sda5. Priority:-1 extents:1 across:2996080k
!!ALSA Device nodes !!-----------------
crw-rw----+ 1 root audio 116, 0 Dec 12 10:55 /dev/snd/controlC0 crw-rw----+ 1 root audio 116, 32 Dec 12 10:55 /dev/snd/controlC1 crw-rw----+ 1 root audio 116, 4 Dec 12 10:55 /dev/snd/hwC0D0 crw-rw----+ 1 root audio 116, 36 Dec 12 10:55 /dev/snd/hwC1D0 crw-rw----+ 1 root audio 116, 37 Dec 12 10:55 /dev/snd/hwC1D1 crw-rw----+ 1 root audio 116, 38 Dec 12 10:55 /dev/snd/hwC1D2 crw-rw----+ 1 root audio 116, 39 Dec 12 10:55 /dev/snd/hwC1D3 crw-rw----+ 1 root audio 116, 24 Dec 12 10:55 /dev/snd/pcmC0D0c crw-rw----+ 1 root audio 116, 16 Dec 12 10:55 /dev/snd/pcmC0D0p crw-rw----+ 1 root audio 116, 25 Dec 12 10:55 /dev/snd/pcmC0D1c crw-rw----+ 1 root audio 116, 17 Dec 12 10:55 /dev/snd/pcmC0D1p crw-rw----+ 1 root audio 116, 1 Dec 12 10:55 /dev/snd/seq crw-rw----+ 1 root audio 116, 33 Dec 12 10:55 /dev/snd/timer
/dev/snd/by-path: total 0 drwxr-xr-x 2 root root 80 Dec 12 10:55 . drwxr-xr-x 3 root root 320 Dec 12 10:55 .. lrwxrwxrwx 1 root root 12 Dec 12 10:55 pci-0000:00:0e.1 -> ../controlC0 lrwxrwxrwx 1 root root 12 Dec 12 10:55 pci-0000:01:00.1 -> ../controlC1
!!Aplay/Arecord output !!------------
APLAY
**** List of PLAYBACK Hardware Devices **** card 0: NVidia [HDA NVidia], device 0: AD198x Analog [AD198x Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 1: AD198x Digital [AD198x Digital] Subdevices: 1/1 Subdevice #0: subdevice #0
ARECORD
**** List of CAPTURE Hardware Devices **** card 0: NVidia [HDA NVidia], device 0: AD198x Analog [AD198x Analog] Subdevices: 3/3 Subdevice #0: subdevice #0 Subdevice #1: subdevice #1 Subdevice #2: subdevice #2 card 0: NVidia [HDA NVidia], device 1: AD198x Digital [AD198x Digital] Subdevices: 1/1 Subdevice #0: subdevice #0
!!Amixer output !!-------------
!!-------Mixer controls for card 0 [NVidia]
Card hw:0 'NVidia'/'HDA NVidia at 0xfe020000 irq 25' Mixer name : 'Analog Devices AD1988B' Components : 'HDA:11d4198b,104381f6,00100200' Controls : 48 Simple ctrls : 26 Simple mixer control 'Master',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 39 Mono: Playback 31 [79%] [-12.00dB] [on] Simple mixer control 'Headphone',0 Capabilities: pswitch Playback channels: Front Left - Front Right Mono: Front Left: Playback [on] Front Right: Playback [on] Simple mixer control 'PCM',0 Capabilities: pvolume Playback channels: Front Left - Front Right Limits: Playback 0 - 255 Mono: Front Left: Playback 0 [0%] [-51.00dB] Front Right: Playback 0 [0%] [-51.00dB] Simple mixer control 'Front',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 39 Mono: Front Left: Playback 39 [100%] [0.00dB] [on] Front Right: Playback 39 [100%] [0.00dB] [on] Simple mixer control 'Front Mic',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 0 [0%] [-34.50dB] [off] Front Right: Playback 0 [0%] [-34.50dB] [off] Simple mixer control 'Front Mic Boost',0 Capabilities: volume Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: 0 - 3 Front Left: 0 [0%] Front Right: 0 [0%] Simple mixer control 'Surround',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 39 Mono: Front Left: Playback 39 [100%] [0.00dB] [on] Front Right: Playback 39 [100%] [0.00dB] [on] Simple mixer control 'Center',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 39 Mono: Playback 0 [0%] [-58.50dB] [on] Simple mixer control 'LFE',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 39 Mono: Playback 0 [0%] [-58.50dB] [on] Simple mixer control 'Side',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 39 Mono: Front Left: Playback 0 [0%] [-58.50dB] [off] Front Right: Playback 0 [0%] [-58.50dB] [off] Simple mixer control 'Line',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 0 [0%] [-34.50dB] [off] Front Right: Playback 0 [0%] [-34.50dB] [off] Simple mixer control 'CD',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 23 [74%] [0.00dB] [on] Front Right: Playback 23 [74%] [0.00dB] [on] Simple mixer control 'Mic',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 0 [0%] [-34.50dB] [off] Front Right: Playback 0 [0%] [-34.50dB] [off] Simple mixer control 'Mic Boost',0 Capabilities: volume Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: 0 - 3 Front Left: 0 [0%] Front Right: 0 [0%] Simple mixer control 'IEC958',0 Capabilities: pvolume cvolume pswitch pswitch-joined cswitch cswitch-joined Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: Playback 0 - 39 Capture 0 - 31 Front Left: Playback 39 [100%] [0.00dB] [on] Capture 23 [74%] [0.00dB] [off] Front Right: Playback 39 [100%] [0.00dB] [on] Capture 23 [74%] [0.00dB] [off] Simple mixer control 'IEC958 Default PCM',0 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [on] Simple mixer control 'IEC958 Playback Source',0 Capabilities: enum Items: 'PCM' 'ADC1' 'ADC2' 'ADC3' Item0: 'PCM' Simple mixer control 'Beep',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined Playback channels: Mono Limits: Playback 0 - 15 Mono: Playback 15 [100%] [0.00dB] [off] Simple mixer control 'Mono',0 Capabilities: pswitch Playback channels: Front Left - Front Right Mono: Front Left: Playback [off] Front Right: Playback [off] Simple mixer control 'Capture',0 Capabilities: cvolume cswitch Capture channels: Front Left - Front Right Limits: Capture 0 - 54 Front Left: Capture 47 [87%] [12.00dB] [on] Front Right: Capture 47 [87%] [12.00dB] [on] Simple mixer control 'Capture',1 Capabilities: cvolume cswitch Capture channels: Front Left - Front Right Limits: Capture 0 - 54 Front Left: Capture 39 [72%] [0.00dB] [off] Front Right: Capture 39 [72%] [0.00dB] [off] Simple mixer control 'Capture',2 Capabilities: cvolume cswitch Capture channels: Front Left - Front Right Limits: Capture 0 - 54 Front Left: Capture 39 [72%] [0.00dB] [off] Front Right: Capture 39 [72%] [0.00dB] [off] Simple mixer control 'Analog Mix',0 Capabilities: pvolume pswitch Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 31 [100%] [0.00dB] [on] Front Right: Playback 31 [100%] [0.00dB] [on] Simple mixer control 'Input Source',0 Capabilities: cenum Items: 'Front Mic' 'Line' 'Mic' 'CD' 'Mix' Item0: 'Front Mic' Simple mixer control 'Input Source',1 Capabilities: cenum Items: 'Front Mic' 'Line' 'Mic' 'CD' 'Mix' Item0: 'Front Mic' Simple mixer control 'Input Source',2 Capabilities: cenum Items: 'Front Mic' 'Line' 'Mic' 'CD' 'Mix' Item0: 'Front Mic'
!!-------Mixer controls for card 1 [NVidia_1]
Card hw:1 'NVidia_1'/'HDA NVidia at 0xfcffc000 irq 26' Mixer name : 'Nvidia ID b' Components : 'HDA:10de000b,10de0101,00100100' Controls : 0 Simple ctrls : 0
!!Alsactl output !!-------------
--startcollapse-- state.NVidia { control.1 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'Front Playback Volume' value.0 39 value.1 39 } control.2 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'Surround Playback Volume' value.0 39 value.1 39 } control.3 { comment.access 'read write' comment.type INTEGER comment.count 1 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'Center Playback Volume' value 0 } control.4 { comment.access 'read write' comment.type INTEGER comment.count 1 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'LFE Playback Volume' value 0 } control.5 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'Side Playback Volume' value.0 0 value.1 0 } control.6 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Front Playback Switch' value.0 true value.1 true } control.7 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Surround Playback Switch' value.0 true value.1 true } control.8 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'Center Playback Switch' value true } control.9 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'LFE Playback Switch' value true } control.10 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Side Playback Switch' value.0 false value.1 false } control.11 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Headphone Playback Switch' value.0 true value.1 true } control.12 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Mono Playback Switch' value.0 false value.1 false } control.13 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -3450 comment.dbmax 1200 iface MIXER name 'CD Playback Volume' value.0 23 value.1 23 } control.14 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'CD Playback Switch' value.0 true value.1 true } control.15 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -3450 comment.dbmax 1200 iface MIXER name 'Front Mic Playback Volume' value.0 0 value.1 0 } control.16 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Front Mic Playback Switch' value.0 false value.1 false } control.17 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -3450 comment.dbmax 1200 iface MIXER name 'Line Playback Volume' value.0 0 value.1 0 } control.18 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Line Playback Switch' value.0 false value.1 false } control.19 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -3450 comment.dbmax 1200 iface MIXER name 'Mic Playback Volume' value.0 0 value.1 0 } control.20 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Mic Playback Switch' value.0 false value.1 false } control.21 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -4650 comment.dbmax 0 iface MIXER name 'Analog Mix Playback Volume' value.0 31 value.1 31 } control.22 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Analog Mix Playback Switch' value.0 true value.1 true } control.23 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 3' comment.dbmin 0 comment.dbmax 3000 iface MIXER name 'Front Mic Boost' value.0 0 value.1 0 } control.24 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 3' comment.dbmin 0 comment.dbmax 3000 iface MIXER name 'Mic Boost' value.0 0 value.1 0 } control.25 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 54' comment.dbmin -5850 comment.dbmax 2250 iface MIXER name 'Capture Volume' value.0 47 value.1 47 } control.26 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Capture Switch' value.0 true value.1 true } control.27 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 54' comment.dbmin -5850 comment.dbmax 2250 iface MIXER name 'Capture Volume' index 1 value.0 39 value.1 39 } control.28 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Capture Switch' index 1 value.0 false value.1 false } control.29 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 54' comment.dbmin -5850 comment.dbmax 2250 iface MIXER name 'Capture Volume' index 2 value.0 39 value.1 39 } control.30 { comment.access 'read write' comment.type BOOLEAN comment.count 2 iface MIXER name 'Capture Switch' index 2 value.0 false value.1 false } control.31 { comment.access 'read write' comment.type ENUMERATED comment.count 1 comment.item.0 'Front Mic' comment.item.1 Line comment.item.2 Mic comment.item.3 CD comment.item.4 Mix iface MIXER name 'Input Source' value 'Front Mic' } control.32 { comment.access 'read write' comment.type ENUMERATED comment.count 1 comment.item.0 'Front Mic' comment.item.1 Line comment.item.2 Mic comment.item.3 CD comment.item.4 Mix iface MIXER name 'Input Source' index 1 value 'Front Mic' } control.33 { comment.access 'read write' comment.type ENUMERATED comment.count 1 comment.item.0 'Front Mic' comment.item.1 Line comment.item.2 Mic comment.item.3 CD comment.item.4 Mix iface MIXER name 'Input Source' index 2 value 'Front Mic' } control.34 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'IEC958 Playback Volume' value.0 39 value.1 39 } control.35 { comment.access 'read write' comment.type ENUMERATED comment.count 1 comment.item.0 PCM comment.item.1 ADC1 comment.item.2 ADC2 comment.item.3 ADC3 iface MIXER name 'IEC958 Playback Source' value PCM } control.36 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 31' comment.dbmin -3450 comment.dbmax 1200 iface MIXER name 'IEC958 Capture Volume' value.0 23 value.1 23 } control.37 { comment.access read comment.type IEC958 comment.count 1 iface MIXER name 'IEC958 Playback Con Mask' value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' } control.38 { comment.access read comment.type IEC958 comment.count 1 iface MIXER name 'IEC958 Playback Pro Mask' value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' } control.39 { comment.access 'read write' comment.type IEC958 comment.count 1 iface MIXER name 'IEC958 Playback Default' value '0682000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' } control.40 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'IEC958 Playback Switch' value true } control.41 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'IEC958 Default PCM Playback Switch' value true } control.42 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'IEC958 Capture Switch' value false } control.43 { comment.access read comment.type IEC958 comment.count 1 iface MIXER name 'IEC958 Capture Default' value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' } control.44 { comment.access 'read write' comment.type INTEGER comment.count 1 comment.range '0 - 15' comment.dbmin -4500 comment.dbmax 0 iface MIXER name 'Beep Playback Volume' value 15 } control.45 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'Beep Playback Switch' value false } control.46 { comment.access 'read write' comment.type INTEGER comment.count 1 comment.range '0 - 39' comment.dbmin -5850 comment.dbmax 0 iface MIXER name 'Master Playback Volume' value 31 } control.47 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'Master Playback Switch' value true } control.48 { comment.access 'read write user' comment.type INTEGER comment.count 2 comment.range '0 - 255' comment.tlv '0000000100000008ffffec1400000014' comment.dbmin -5100 comment.dbmax 0 iface MIXER name 'PCM Playback Volume' value.0 0 value.1 0 } } state.NVidia_1 { control { } } --endcollapse--
!!All Loaded Modules !!------------------
Module ip6t_LOG xt_tcpudp xt_pkttype ipt_LOG xt_limit snd_pcm_oss snd_mixer_oss snd_seq snd_seq_device af_packet ip6t_REJECT nf_conntrack_ipv6 ip6table_raw xt_NOTRACK ipt_REJECT xt_state iptable_raw iptable_filter ip6table_mangle nf_conntrack_netbios_ns nf_conntrack_ipv4 nf_conntrack nf_defrag_ipv4 ip_tables ip6table_filter cpufreq_conservative cpufreq_userspace cpufreq_powersave powernow_k8 ip6_tables x_tables fuse nls_iso8859_1 nls_cp437 vfat fat loop dm_mod snd_hda_codec_analog ohci1394 sr_mod cdrom sg nvidia amd64_edac_mod ieee1394 serio_raw snd_hda_intel asus_atk0110 snd_hda_codec snd_hwdep pcspkr snd_pcm snd_timer button forcedeth snd snd_page_alloc edac_core k8temp i2c_nforce2 ext4 jbd2 crc16 fan processor ide_pci_generic amd74xx ide_core ata_generic thermal thermal_sys pata_amd sata_nv
!!Sysfs Files !!-----------
/sys/class/sound/hwC0D0/init_pin_configs: 0x11 0x02214030 0x12 0x01014010 0x13 0x511711f0 0x14 0x02a1902e 0x15 0x01813021 0x16 0x01011012 0x17 0x01a19020 0x18 0x99331122 0x1a 0x91f711f0 0x1b 0x0145f1f0 0x1c 0x41c5f1f0 0x24 0x01016011 0x25 0x01012014
/sys/class/sound/hwC0D0/driver_pin_configs:
/sys/class/sound/hwC0D0/user_pin_configs:
/sys/class/sound/hwC0D0/init_verbs:
/sys/class/sound/hwC1D0/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC1D0/driver_pin_configs:
/sys/class/sound/hwC1D0/user_pin_configs:
/sys/class/sound/hwC1D0/init_verbs:
/sys/class/sound/hwC1D1/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC1D1/driver_pin_configs:
/sys/class/sound/hwC1D1/user_pin_configs:
/sys/class/sound/hwC1D1/init_verbs:
/sys/class/sound/hwC1D2/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC1D2/driver_pin_configs:
/sys/class/sound/hwC1D2/user_pin_configs:
/sys/class/sound/hwC1D2/init_verbs:
/sys/class/sound/hwC1D3/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC1D3/driver_pin_configs:
/sys/class/sound/hwC1D3/user_pin_configs:
/sys/class/sound/hwC1D3/init_verbs:
!!ALSA/HDA dmesg !!------------------
[ 6.450119] ACPI: PCI Interrupt Link [AAZA] enabled at IRQ 21 [ 6.457047] HDA Intel 0000:00:0e.1: PCI INT B -> Link[AAZA] -> GSI 21 (level, low) -> IRQ 21 [ 6.464075] alloc irq_desc for 25 on node 0 [ 6.464078] alloc kstat_irqs on node 0 [ 6.464091] HDA Intel 0000:00:0e.1: irq 25 for MSI/MSI-X [ 6.464125] HDA Intel 0000:00:0e.1: setting latency timer to 64 [ 171.641515] ALSA hda_intel.c:694: azx_get_response timeout, switching to polling mode: last cmd=0x000f0000 [ 171.641515] ieee1394: Host added: ID:BUS[0-00:1023] GUID[0011d80000c1c098] [ 171.641515] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:0e.1/input/input5 [ 171.641515] HDA Intel 0000:01:00.1: PCI INT A -> Link[APC5] -> GSI 16 (level, low) -> IRQ 16 [ 171.641515] alloc irq_desc for 26 on node 0 [ 171.641515] alloc kstat_irqs on node 0 [ 171.641515] HDA Intel 0000:01:00.1: irq 26 for MSI/MSI-X [ 171.641515] HDA Intel 0000:01:00.1: setting latency timer to 64 [ 171.641515] EDAC amd64: This node reports that Memory ECC is currently disabled. -- [ 171.641515] forcedeth 0000:00:11.0: highdma csum vlan pwrctl mgmt gbit lnktim msi desc-v3 [ 171.641515] ALSA hda_intel.c:694: azx_get_response timeout, switching to polling mode: last cmd=0x100f0000 [ 171.641515] ALSA hda_generic.c:683: hda_generic: no proper input path found [ 171.641515] ALSA hda_generic.c:431: hda_generic: no proper output path found [ 171.641515] ALSA hda_generic.c:683: hda_generic: no proper input path found [ 171.641515] ALSA hda_generic.c:431: hda_generic: no proper output path found [ 171.641515] ALSA hda_generic.c:683: hda_generic: no proper input path found [ 171.641515] ALSA hda_generic.c:431: hda_generic: no proper output path found [ 171.641515] ALSA hda_generic.c:683: hda_generic: no proper input path found [ 171.641515] ALSA hda_generic.c:431: hda_generic: no proper output path found [ 171.641515] ALSA hda_generic.c:1035: hda_generic: no PCM found [ 171.641515] ALSA hda_generic.c:1035: hda_generic: no PCM found [ 171.641515] ALSA hda_generic.c:1035: hda_generic: no PCM found [ 171.641515] ALSA hda_generic.c:1035: hda_generic: no PCM found [ 171.641515] Adding 2996080k swap on /dev/sda5. Priority:-1 extents:1 across:2996080k
At Sat, 12 Dec 2009 13:06:11 +0100, Stefan Ringel wrote:
I forgot this attachment 1.patch and alsa-info.txt.
Thanks. Now I added your patch for the Nvidia controller part.
Looking through alsa-info.sh, the new Nvidia provides 4 codecs for 8-channel HDMI, instead of 4 pins in one codec. This is fairly crazy setup, but who knows why...
Could you try the patch below? This is a very quick and blind hack.
thanks,
Takashi
--- diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c index 6afdab0..343ea27 100644 --- a/sound/pci/hda/patch_nvhdmi.c +++ b/sound/pci/hda/patch_nvhdmi.c @@ -391,6 +391,180 @@ static int patch_nvhdmi_2ch(struct hda_codec *codec) return 0; }
+/* 4x 2ch codecs */ + +static int nvhdmi_dig_playback_pcm_close_sep_8ch(struct hda_pcm_stream *hinfo, + struct hda_codec *codec, + struct snd_pcm_substream *substream) +{ + struct nvhdmi_spec *spec = codec->spec; + int i; + for (i = 0; i < 4; i++) { + struct hda_codec *cp = codec->bus->caddr_tbl[i]; + if (!cp) + continue; + snd_hda_codec_write(cp, Nv_Master_Convert_nid, 0, + AC_VERB_SET_CHANNEL_STREAMID, 0); + snd_hda_codec_write(cp, Nv_Master_Convert_nid, 0, + AC_VERB_SET_STREAM_FORMAT, 0); + } + return snd_hda_multi_out_dig_close(codec, &spec->multiout); +} + +static int nvhdmi_dig_playback_pcm_prepare_sep_8ch(struct hda_pcm_stream *hinfo, + struct hda_codec *codec, + unsigned int stream_tag, + unsigned int format, + struct snd_pcm_substream *substream) +{ + int chs; + unsigned int dataDCC1, dataDCC2, chan, chanmask, channel_id; + int i; + + mutex_lock(&codec->spdif_mutex); + + chs = substream->runtime->channels; + chan = chs ? (chs - 1) : 1; + + switch (chs) { + default: + case 0: + case 2: + chanmask = 0x00; + break; + case 4: + chanmask = 0x08; + break; + case 6: + chanmask = 0x0b; + break; + case 8: + chanmask = 0x13; + break; + } + dataDCC1 = AC_DIG1_ENABLE | AC_DIG1_COPYRIGHT; + dataDCC2 = 0x2; + + for (i = 0; i < 4; i++) { + struct hda_codec *cp = codec->bus->caddr_tbl[i]; + if (!cp) + continue; + if (chs == 2) + channel_id = 0; + else + channel_id = i * 2; + + /* set the Audio InforFrame Channel Allocation */ + snd_hda_codec_write(cp, 0x1, 0, + Nv_VERB_SET_Channel_Allocation, chanmask); + + /* turn off SPDIF once; + *otherwise the IEC958 bits won't be updated + */ + if (codec->spdif_status_reset && + (codec->spdif_ctls & AC_DIG1_ENABLE)) + snd_hda_codec_write(cp, + Nv_Master_Convert_nid, + 0, + AC_VERB_SET_DIGI_CONVERT_1, + codec->spdif_ctls & ~AC_DIG1_ENABLE & 0xff); + /* set the stream id */ + snd_hda_codec_write(cp, + Nv_Master_Convert_nid, + 0, + AC_VERB_SET_CHANNEL_STREAMID, + (stream_tag << 4) | channel_id); + /* set the stream format */ + snd_hda_codec_write(cp, + Nv_Master_Convert_nid, + 0, + AC_VERB_SET_STREAM_FORMAT, + format); + /* turn on again (if needed) */ + /* enable and set the channel status audio/data flag */ + if (codec->spdif_status_reset && + (codec->spdif_ctls & AC_DIG1_ENABLE)) { + snd_hda_codec_write(cp, + Nv_Master_Convert_nid, + 0, + AC_VERB_SET_DIGI_CONVERT_1, + codec->spdif_ctls & 0xff); + snd_hda_codec_write(cp, + Nv_Master_Convert_nid, + 0, + AC_VERB_SET_DIGI_CONVERT_2, dataDCC2); + } + + /* set the Audio Info Frame Checksum */ + snd_hda_codec_write(cp, 0x1, 0, + Nv_VERB_SET_Info_Frame_Checksum, + (0x71 - chan - chanmask)); + } + + mutex_unlock(&codec->spdif_mutex); + return 0; +} + +static struct hda_pcm_stream nvhdmi_pcm_digital_playback_sep_8ch = { + .substreams = 1, + .channels_min = 2, + .channels_max = 8, + .nid = Nv_Master_Convert_nid, + .rates = SUPPORTED_RATES, + .maxbps = SUPPORTED_MAXBPS, + .formats = SUPPORTED_FORMATS, + .ops = { + .open = nvhdmi_dig_playback_pcm_open, + .close = nvhdmi_dig_playback_pcm_close_sep_8ch, + .prepare = nvhdmi_dig_playback_pcm_prepare_sep_8ch + }, +}; + +static int nvhdmi_build_pcms_sep_8ch(struct hda_codec *codec) +{ + struct nvhdmi_spec *spec = codec->spec; + struct hda_pcm *info = &spec->pcm_rec; + + codec->num_pcms = 1; + codec->pcm_info = info; + + info->name = "NVIDIA HDMI"; + info->pcm_type = HDA_PCM_TYPE_HDMI; + info->stream[SNDRV_PCM_STREAM_PLAYBACK] + = nvhdmi_pcm_digital_playback_sep_8ch; + + return 0; +} + +static struct hda_codec_ops nvhdmi_patch_ops_sep_8ch = { + .build_controls = nvhdmi_build_controls, + .build_pcms = nvhdmi_build_pcms_sep_8ch, + .init = nvhdmi_init, + .free = nvhdmi_free, +}; + +static int patch_nvhdmi_sep_8ch(struct hda_codec *codec) +{ + struct nvhdmi_spec *spec; + + if (codec->addr > 0) + return 0; + + spec = kzalloc(sizeof(*spec), GFP_KERNEL); + if (spec == NULL) + return -ENOMEM; + + codec->spec = spec; + + spec->multiout.num_dacs = 0; /* no analog */ + spec->multiout.max_channels = 8; + spec->multiout.dig_out_nid = Nv_Master_Convert_nid; + + codec->patch_ops = nvhdmi_patch_ops_sep_8ch; + + return 0; +} + /* * patch entries */ @@ -400,6 +574,8 @@ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { { .id = 0x10de0005, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi_8ch }, + { .id = 0x10de000a, .name = "MCP HDMI", .patch = patch_nvhdmi_sep_8ch }, + { .id = 0x10de000b, .name = "MCP HDMI", .patch = patch_nvhdmi_sep_8ch }, { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, {} /* terminator */ @@ -410,6 +586,8 @@ MODULE_ALIAS("snd-hda-codec-id:10de0003"); MODULE_ALIAS("snd-hda-codec-id:10de0005"); MODULE_ALIAS("snd-hda-codec-id:10de0006"); MODULE_ALIAS("snd-hda-codec-id:10de0007"); +MODULE_ALIAS("snd-hda-codec-id:10de000a"); +MODULE_ALIAS("snd-hda-codec-id:10de000b"); MODULE_ALIAS("snd-hda-codec-id:10de0067"); MODULE_ALIAS("snd-hda-codec-id:10de8001");
Am 14.12.2009 12:32, schrieb Takashi Iwai:
At Sat, 12 Dec 2009 13:06:11 +0100, Stefan Ringel wrote:
I forgot this attachment 1.patch and alsa-info.txt.
Thanks. Now I added your patch for the Nvidia controller part.
Looking through alsa-info.sh, the new Nvidia provides 4 codecs for 8-channel HDMI, instead of 4 pins in one codec. This is fairly crazy setup, but who knows why...
Could you try the patch below? This is a very quick and blind hack.
thanks,
Takashi
diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c index 6afdab0..343ea27 100644 --- a/sound/pci/hda/patch_nvhdmi.c +++ b/sound/pci/hda/patch_nvhdmi.c @@ -391,6 +391,180 @@ static int patch_nvhdmi_2ch(struct hda_codec *codec) return 0; }
+/* 4x 2ch codecs */
+static int nvhdmi_dig_playback_pcm_close_sep_8ch(struct hda_pcm_stream *hinfo,
struct hda_codec *codec,
struct snd_pcm_substream *substream)
+{
- struct nvhdmi_spec *spec = codec->spec;
- int i;
- for (i = 0; i < 4; i++) {
struct hda_codec *cp = codec->bus->caddr_tbl[i];
if (!cp)
continue;
snd_hda_codec_write(cp, Nv_Master_Convert_nid, 0,
AC_VERB_SET_CHANNEL_STREAMID, 0);
snd_hda_codec_write(cp, Nv_Master_Convert_nid, 0,
AC_VERB_SET_STREAM_FORMAT, 0);
- }
- return snd_hda_multi_out_dig_close(codec, &spec->multiout);
+}
+static int nvhdmi_dig_playback_pcm_prepare_sep_8ch(struct hda_pcm_stream *hinfo,
struct hda_codec *codec,
unsigned int stream_tag,
unsigned int format,
struct snd_pcm_substream *substream)
+{
- int chs;
- unsigned int dataDCC1, dataDCC2, chan, chanmask, channel_id;
- int i;
- mutex_lock(&codec->spdif_mutex);
- chs = substream->runtime->channels;
- chan = chs ? (chs - 1) : 1;
- switch (chs) {
- default:
- case 0:
- case 2:
chanmask = 0x00;
break;
- case 4:
chanmask = 0x08;
break;
- case 6:
chanmask = 0x0b;
break;
- case 8:
chanmask = 0x13;
break;
- }
- dataDCC1 = AC_DIG1_ENABLE | AC_DIG1_COPYRIGHT;
- dataDCC2 = 0x2;
- for (i = 0; i < 4; i++) {
struct hda_codec *cp = codec->bus->caddr_tbl[i];
if (!cp)
continue;
if (chs == 2)
channel_id = 0;
else
channel_id = i * 2;
/* set the Audio InforFrame Channel Allocation */
snd_hda_codec_write(cp, 0x1, 0,
Nv_VERB_SET_Channel_Allocation, chanmask);
/* turn off SPDIF once;
*otherwise the IEC958 bits won't be updated
*/
if (codec->spdif_status_reset &&
(codec->spdif_ctls & AC_DIG1_ENABLE))
snd_hda_codec_write(cp,
Nv_Master_Convert_nid,
0,
AC_VERB_SET_DIGI_CONVERT_1,
codec->spdif_ctls & ~AC_DIG1_ENABLE & 0xff);
/* set the stream id */
snd_hda_codec_write(cp,
Nv_Master_Convert_nid,
0,
AC_VERB_SET_CHANNEL_STREAMID,
(stream_tag << 4) | channel_id);
/* set the stream format */
snd_hda_codec_write(cp,
Nv_Master_Convert_nid,
0,
AC_VERB_SET_STREAM_FORMAT,
format);
/* turn on again (if needed) */
/* enable and set the channel status audio/data flag */
if (codec->spdif_status_reset &&
(codec->spdif_ctls & AC_DIG1_ENABLE)) {
snd_hda_codec_write(cp,
Nv_Master_Convert_nid,
0,
AC_VERB_SET_DIGI_CONVERT_1,
codec->spdif_ctls & 0xff);
snd_hda_codec_write(cp,
Nv_Master_Convert_nid,
0,
AC_VERB_SET_DIGI_CONVERT_2, dataDCC2);
}
/* set the Audio Info Frame Checksum */
snd_hda_codec_write(cp, 0x1, 0,
Nv_VERB_SET_Info_Frame_Checksum,
(0x71 - chan - chanmask));
- }
- mutex_unlock(&codec->spdif_mutex);
- return 0;
+}
+static struct hda_pcm_stream nvhdmi_pcm_digital_playback_sep_8ch = {
- .substreams = 1,
- .channels_min = 2,
- .channels_max = 8,
- .nid = Nv_Master_Convert_nid,
- .rates = SUPPORTED_RATES,
- .maxbps = SUPPORTED_MAXBPS,
- .formats = SUPPORTED_FORMATS,
- .ops = {
.open = nvhdmi_dig_playback_pcm_open,
.close = nvhdmi_dig_playback_pcm_close_sep_8ch,
.prepare = nvhdmi_dig_playback_pcm_prepare_sep_8ch
- },
+};
+static int nvhdmi_build_pcms_sep_8ch(struct hda_codec *codec) +{
- struct nvhdmi_spec *spec = codec->spec;
- struct hda_pcm *info = &spec->pcm_rec;
- codec->num_pcms = 1;
- codec->pcm_info = info;
- info->name = "NVIDIA HDMI";
- info->pcm_type = HDA_PCM_TYPE_HDMI;
- info->stream[SNDRV_PCM_STREAM_PLAYBACK]
= nvhdmi_pcm_digital_playback_sep_8ch;
- return 0;
+}
+static struct hda_codec_ops nvhdmi_patch_ops_sep_8ch = {
- .build_controls = nvhdmi_build_controls,
- .build_pcms = nvhdmi_build_pcms_sep_8ch,
- .init = nvhdmi_init,
- .free = nvhdmi_free,
+};
+static int patch_nvhdmi_sep_8ch(struct hda_codec *codec) +{
- struct nvhdmi_spec *spec;
- if (codec->addr > 0)
return 0;
- spec = kzalloc(sizeof(*spec), GFP_KERNEL);
- if (spec == NULL)
return -ENOMEM;
- codec->spec = spec;
- spec->multiout.num_dacs = 0; /* no analog */
- spec->multiout.max_channels = 8;
- spec->multiout.dig_out_nid = Nv_Master_Convert_nid;
- codec->patch_ops = nvhdmi_patch_ops_sep_8ch;
- return 0;
+}
/*
- patch entries
*/ @@ -400,6 +574,8 @@ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { { .id = 0x10de0005, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi_8ch },
- { .id = 0x10de000a, .name = "MCP HDMI", .patch = patch_nvhdmi_sep_8ch },
- { .id = 0x10de000b, .name = "MCP HDMI", .patch = patch_nvhdmi_sep_8ch }, { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, {} /* terminator */
@@ -410,6 +586,8 @@ MODULE_ALIAS("snd-hda-codec-id:10de0003"); MODULE_ALIAS("snd-hda-codec-id:10de0005"); MODULE_ALIAS("snd-hda-codec-id:10de0006"); MODULE_ALIAS("snd-hda-codec-id:10de0007"); +MODULE_ALIAS("snd-hda-codec-id:10de000a"); +MODULE_ALIAS("snd-hda-codec-id:10de000b"); MODULE_ALIAS("snd-hda-codec-id:10de0067"); MODULE_ALIAS("snd-hda-codec-id:10de8001");
hi Takashi,
one codec-id missed (0x10de000d) and codec-name is "G2xx HDMI".
Stefan Ringel stefan.ringel@arcor.de
At Mon, 14 Dec 2009 12:50:26 +0100, Stefan Ringel wrote:
Am 14.12.2009 12:32, schrieb Takashi Iwai:
At Sat, 12 Dec 2009 13:06:11 +0100, Stefan Ringel wrote:
I forgot this attachment 1.patch and alsa-info.txt.
Thanks. Now I added your patch for the Nvidia controller part.
Looking through alsa-info.sh, the new Nvidia provides 4 codecs for 8-channel HDMI, instead of 4 pins in one codec. This is fairly crazy setup, but who knows why...
Could you try the patch below? This is a very quick and blind hack.
thanks,
Takashi
diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c index 6afdab0..343ea27 100644 --- a/sound/pci/hda/patch_nvhdmi.c +++ b/sound/pci/hda/patch_nvhdmi.c @@ -391,6 +391,180 @@ static int patch_nvhdmi_2ch(struct hda_codec *codec) return 0; }
+/* 4x 2ch codecs */
+static int nvhdmi_dig_playback_pcm_close_sep_8ch(struct hda_pcm_stream *hinfo,
struct hda_codec *codec,
struct snd_pcm_substream *substream)
+{
- struct nvhdmi_spec *spec = codec->spec;
- int i;
- for (i = 0; i < 4; i++) {
struct hda_codec *cp = codec->bus->caddr_tbl[i];
if (!cp)
continue;
snd_hda_codec_write(cp, Nv_Master_Convert_nid, 0,
AC_VERB_SET_CHANNEL_STREAMID, 0);
snd_hda_codec_write(cp, Nv_Master_Convert_nid, 0,
AC_VERB_SET_STREAM_FORMAT, 0);
- }
- return snd_hda_multi_out_dig_close(codec, &spec->multiout);
+}
+static int nvhdmi_dig_playback_pcm_prepare_sep_8ch(struct hda_pcm_stream *hinfo,
struct hda_codec *codec,
unsigned int stream_tag,
unsigned int format,
struct snd_pcm_substream *substream)
+{
- int chs;
- unsigned int dataDCC1, dataDCC2, chan, chanmask, channel_id;
- int i;
- mutex_lock(&codec->spdif_mutex);
- chs = substream->runtime->channels;
- chan = chs ? (chs - 1) : 1;
- switch (chs) {
- default:
- case 0:
- case 2:
chanmask = 0x00;
break;
- case 4:
chanmask = 0x08;
break;
- case 6:
chanmask = 0x0b;
break;
- case 8:
chanmask = 0x13;
break;
- }
- dataDCC1 = AC_DIG1_ENABLE | AC_DIG1_COPYRIGHT;
- dataDCC2 = 0x2;
- for (i = 0; i < 4; i++) {
struct hda_codec *cp = codec->bus->caddr_tbl[i];
if (!cp)
continue;
if (chs == 2)
channel_id = 0;
else
channel_id = i * 2;
/* set the Audio InforFrame Channel Allocation */
snd_hda_codec_write(cp, 0x1, 0,
Nv_VERB_SET_Channel_Allocation, chanmask);
/* turn off SPDIF once;
*otherwise the IEC958 bits won't be updated
*/
if (codec->spdif_status_reset &&
(codec->spdif_ctls & AC_DIG1_ENABLE))
snd_hda_codec_write(cp,
Nv_Master_Convert_nid,
0,
AC_VERB_SET_DIGI_CONVERT_1,
codec->spdif_ctls & ~AC_DIG1_ENABLE & 0xff);
/* set the stream id */
snd_hda_codec_write(cp,
Nv_Master_Convert_nid,
0,
AC_VERB_SET_CHANNEL_STREAMID,
(stream_tag << 4) | channel_id);
/* set the stream format */
snd_hda_codec_write(cp,
Nv_Master_Convert_nid,
0,
AC_VERB_SET_STREAM_FORMAT,
format);
/* turn on again (if needed) */
/* enable and set the channel status audio/data flag */
if (codec->spdif_status_reset &&
(codec->spdif_ctls & AC_DIG1_ENABLE)) {
snd_hda_codec_write(cp,
Nv_Master_Convert_nid,
0,
AC_VERB_SET_DIGI_CONVERT_1,
codec->spdif_ctls & 0xff);
snd_hda_codec_write(cp,
Nv_Master_Convert_nid,
0,
AC_VERB_SET_DIGI_CONVERT_2, dataDCC2);
}
/* set the Audio Info Frame Checksum */
snd_hda_codec_write(cp, 0x1, 0,
Nv_VERB_SET_Info_Frame_Checksum,
(0x71 - chan - chanmask));
- }
- mutex_unlock(&codec->spdif_mutex);
- return 0;
+}
+static struct hda_pcm_stream nvhdmi_pcm_digital_playback_sep_8ch = {
- .substreams = 1,
- .channels_min = 2,
- .channels_max = 8,
- .nid = Nv_Master_Convert_nid,
- .rates = SUPPORTED_RATES,
- .maxbps = SUPPORTED_MAXBPS,
- .formats = SUPPORTED_FORMATS,
- .ops = {
.open = nvhdmi_dig_playback_pcm_open,
.close = nvhdmi_dig_playback_pcm_close_sep_8ch,
.prepare = nvhdmi_dig_playback_pcm_prepare_sep_8ch
- },
+};
+static int nvhdmi_build_pcms_sep_8ch(struct hda_codec *codec) +{
- struct nvhdmi_spec *spec = codec->spec;
- struct hda_pcm *info = &spec->pcm_rec;
- codec->num_pcms = 1;
- codec->pcm_info = info;
- info->name = "NVIDIA HDMI";
- info->pcm_type = HDA_PCM_TYPE_HDMI;
- info->stream[SNDRV_PCM_STREAM_PLAYBACK]
= nvhdmi_pcm_digital_playback_sep_8ch;
- return 0;
+}
+static struct hda_codec_ops nvhdmi_patch_ops_sep_8ch = {
- .build_controls = nvhdmi_build_controls,
- .build_pcms = nvhdmi_build_pcms_sep_8ch,
- .init = nvhdmi_init,
- .free = nvhdmi_free,
+};
+static int patch_nvhdmi_sep_8ch(struct hda_codec *codec) +{
- struct nvhdmi_spec *spec;
- if (codec->addr > 0)
return 0;
- spec = kzalloc(sizeof(*spec), GFP_KERNEL);
- if (spec == NULL)
return -ENOMEM;
- codec->spec = spec;
- spec->multiout.num_dacs = 0; /* no analog */
- spec->multiout.max_channels = 8;
- spec->multiout.dig_out_nid = Nv_Master_Convert_nid;
- codec->patch_ops = nvhdmi_patch_ops_sep_8ch;
- return 0;
+}
/*
- patch entries
*/ @@ -400,6 +574,8 @@ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { { .id = 0x10de0005, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi_8ch },
- { .id = 0x10de000a, .name = "MCP HDMI", .patch = patch_nvhdmi_sep_8ch },
- { .id = 0x10de000b, .name = "MCP HDMI", .patch = patch_nvhdmi_sep_8ch }, { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, {} /* terminator */
@@ -410,6 +586,8 @@ MODULE_ALIAS("snd-hda-codec-id:10de0003"); MODULE_ALIAS("snd-hda-codec-id:10de0005"); MODULE_ALIAS("snd-hda-codec-id:10de0006"); MODULE_ALIAS("snd-hda-codec-id:10de0007"); +MODULE_ALIAS("snd-hda-codec-id:10de000a"); +MODULE_ALIAS("snd-hda-codec-id:10de000b"); MODULE_ALIAS("snd-hda-codec-id:10de0067"); MODULE_ALIAS("snd-hda-codec-id:10de8001");
hi Takashi,
one codec-id missed (0x10de000d) and codec-name is "G2xx HDMI".
OK, I'll update. But it doesn't matter right now. I'd like to know just whether this works for 8 channel LPCM output.
thanks,
Takashi
At Mon, 14 Dec 2009 12:52:40 +0100, I wrote:
one codec-id missed (0x10de000d) and codec-name is "G2xx HDMI".
OK, I'll update.
Below is the updated patch. This also replaces the PCI ID check using the generic hd-audio class check.
Takashi
--- diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 9b56f93..93eaf4f 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -2694,32 +2694,10 @@ static struct pci_device_id azx_ids[] = { /* ULI M5461 */ { PCI_DEVICE(0x10b9, 0x5461), .driver_data = AZX_DRIVER_ULI }, /* NVIDIA MCP */ - { PCI_DEVICE(0x10de, 0x026c), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0371), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x03e4), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x03f0), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x044a), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x044b), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x055c), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x055d), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0590), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0774), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0775), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0776), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0777), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x07fc), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x07fd), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0ac0), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0ac1), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0ac2), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0ac3), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0be2), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0be3), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0be4), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0d94), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0d95), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0d96), .driver_data = AZX_DRIVER_NVIDIA }, - { PCI_DEVICE(0x10de, 0x0d97), .driver_data = AZX_DRIVER_NVIDIA }, + { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID), + .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8, + .class_mask = 0xffffff, + .driver_data = AZX_DRIVER_NVIDIA }, /* Teradici */ { PCI_DEVICE(0x6549, 0x1200), .driver_data = AZX_DRIVER_TERA }, /* Creative X-Fi (CA0110-IBG) */ diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c index 6afdab0..09be220 100644 --- a/sound/pci/hda/patch_nvhdmi.c +++ b/sound/pci/hda/patch_nvhdmi.c @@ -391,6 +391,180 @@ static int patch_nvhdmi_2ch(struct hda_codec *codec) return 0; }
+/* 4x 2ch codecs */ + +static int nvhdmi_dig_playback_pcm_close_sep_8ch(struct hda_pcm_stream *hinfo, + struct hda_codec *codec, + struct snd_pcm_substream *substream) +{ + struct nvhdmi_spec *spec = codec->spec; + int i; + for (i = 0; i < 4; i++) { + struct hda_codec *cp = codec->bus->caddr_tbl[i]; + if (!cp) + continue; + snd_hda_codec_write(cp, Nv_Master_Convert_nid, 0, + AC_VERB_SET_CHANNEL_STREAMID, 0); + snd_hda_codec_write(cp, Nv_Master_Convert_nid, 0, + AC_VERB_SET_STREAM_FORMAT, 0); + } + return snd_hda_multi_out_dig_close(codec, &spec->multiout); +} + +static int nvhdmi_dig_playback_pcm_prepare_sep_8ch(struct hda_pcm_stream *hinfo, + struct hda_codec *codec, + unsigned int stream_tag, + unsigned int format, + struct snd_pcm_substream *substream) +{ + int chs; + unsigned int dataDCC1, dataDCC2, chan, chanmask, channel_id; + int i; + + mutex_lock(&codec->spdif_mutex); + + chs = substream->runtime->channels; + chan = chs ? (chs - 1) : 1; + + switch (chs) { + default: + case 0: + case 2: + chanmask = 0x00; + break; + case 4: + chanmask = 0x08; + break; + case 6: + chanmask = 0x0b; + break; + case 8: + chanmask = 0x13; + break; + } + dataDCC1 = AC_DIG1_ENABLE | AC_DIG1_COPYRIGHT; + dataDCC2 = 0x2; + + for (i = 0; i < 4; i++) { + struct hda_codec *cp = codec->bus->caddr_tbl[i]; + if (!cp) + continue; + if (chs == 2) + channel_id = 0; + else + channel_id = i * 2; + + /* set the Audio InforFrame Channel Allocation */ + snd_hda_codec_write(cp, 0x1, 0, + Nv_VERB_SET_Channel_Allocation, chanmask); + + /* turn off SPDIF once; + *otherwise the IEC958 bits won't be updated + */ + if (codec->spdif_status_reset && + (codec->spdif_ctls & AC_DIG1_ENABLE)) + snd_hda_codec_write(cp, + Nv_Master_Convert_nid, + 0, + AC_VERB_SET_DIGI_CONVERT_1, + codec->spdif_ctls & ~AC_DIG1_ENABLE & 0xff); + /* set the stream id */ + snd_hda_codec_write(cp, + Nv_Master_Convert_nid, + 0, + AC_VERB_SET_CHANNEL_STREAMID, + (stream_tag << 4) | channel_id); + /* set the stream format */ + snd_hda_codec_write(cp, + Nv_Master_Convert_nid, + 0, + AC_VERB_SET_STREAM_FORMAT, + format); + /* turn on again (if needed) */ + /* enable and set the channel status audio/data flag */ + if (codec->spdif_status_reset && + (codec->spdif_ctls & AC_DIG1_ENABLE)) { + snd_hda_codec_write(cp, + Nv_Master_Convert_nid, + 0, + AC_VERB_SET_DIGI_CONVERT_1, + codec->spdif_ctls & 0xff); + snd_hda_codec_write(cp, + Nv_Master_Convert_nid, + 0, + AC_VERB_SET_DIGI_CONVERT_2, dataDCC2); + } + + /* set the Audio Info Frame Checksum */ + snd_hda_codec_write(cp, 0x1, 0, + Nv_VERB_SET_Info_Frame_Checksum, + (0x71 - chan - chanmask)); + } + + mutex_unlock(&codec->spdif_mutex); + return 0; +} + +static struct hda_pcm_stream nvhdmi_pcm_digital_playback_sep_8ch = { + .substreams = 1, + .channels_min = 2, + .channels_max = 8, + .nid = Nv_Master_Convert_nid, + .rates = SUPPORTED_RATES, + .maxbps = SUPPORTED_MAXBPS, + .formats = SUPPORTED_FORMATS, + .ops = { + .open = nvhdmi_dig_playback_pcm_open, + .close = nvhdmi_dig_playback_pcm_close_sep_8ch, + .prepare = nvhdmi_dig_playback_pcm_prepare_sep_8ch + }, +}; + +static int nvhdmi_build_pcms_sep_8ch(struct hda_codec *codec) +{ + struct nvhdmi_spec *spec = codec->spec; + struct hda_pcm *info = &spec->pcm_rec; + + codec->num_pcms = 1; + codec->pcm_info = info; + + info->name = "NVIDIA HDMI"; + info->pcm_type = HDA_PCM_TYPE_HDMI; + info->stream[SNDRV_PCM_STREAM_PLAYBACK] + = nvhdmi_pcm_digital_playback_sep_8ch; + + return 0; +} + +static struct hda_codec_ops nvhdmi_patch_ops_sep_8ch = { + .build_controls = nvhdmi_build_controls, + .build_pcms = nvhdmi_build_pcms_sep_8ch, + .init = nvhdmi_init, + .free = nvhdmi_free, +}; + +static int patch_nvhdmi_sep_8ch(struct hda_codec *codec) +{ + struct nvhdmi_spec *spec; + + if (codec->addr > 0) + return 0; + + spec = kzalloc(sizeof(*spec), GFP_KERNEL); + if (spec == NULL) + return -ENOMEM; + + codec->spec = spec; + + spec->multiout.num_dacs = 0; /* no analog */ + spec->multiout.max_channels = 8; + spec->multiout.dig_out_nid = Nv_Master_Convert_nid; + + codec->patch_ops = nvhdmi_patch_ops_sep_8ch; + + return 0; +} + /* * patch entries */ @@ -400,6 +574,9 @@ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { { .id = 0x10de0005, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi_8ch }, + { .id = 0x10de000a, .name = "MCP HDMI", .patch = patch_nvhdmi_sep_8ch }, + { .id = 0x10de000b, .name = "MCP HDMI", .patch = patch_nvhdmi_sep_8ch }, + { .id = 0x10de000d, .name = "MCP HDMI", .patch = patch_nvhdmi_sep_8ch }, { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, {} /* terminator */ @@ -410,6 +587,9 @@ MODULE_ALIAS("snd-hda-codec-id:10de0003"); MODULE_ALIAS("snd-hda-codec-id:10de0005"); MODULE_ALIAS("snd-hda-codec-id:10de0006"); MODULE_ALIAS("snd-hda-codec-id:10de0007"); +MODULE_ALIAS("snd-hda-codec-id:10de000a"); +MODULE_ALIAS("snd-hda-codec-id:10de000b"); +MODULE_ALIAS("snd-hda-codec-id:10de000d"); MODULE_ALIAS("snd-hda-codec-id:10de0067"); MODULE_ALIAS("snd-hda-codec-id:10de8001");
Takashi Iwai <tiwai <at> suse.de> writes:
At Mon, 14 Dec 2009 12:52:40 +0100, I wrote:
one codec-id missed (0x10de000d) and codec-name is "G2xx HDMI".
OK, I'll update.
Below is the updated patch. This also replaces the PCI ID check using the generic hd-audio class check.
Takashi
Hi Takashi,
applied this patch, module loads cleanly, card is visible, but sill no sound through HDMI interface of my G210 - any idea what might be wrong? alsa-info.sh output follows.
Thanks,
Michal
!!################################ !!ALSA Information Script v 0.4.58 !!################################
!!Script ran on: Wed Dec 16 15:08:16 UTC 2009
!!Linux Distribution !!------------------
Ubuntu 9.10 \n \l DISTRIB_ID=Ubuntu DISTRIB_DESCRIPTION="Ubuntu 9.10"
!!DMI Information !!---------------
Manufacturer: MICRO-STAR INTERNATIONAL CO.,LTD Product Name: MS-7521
!!Kernel Information !!------------------
Kernel release: 2.6.31-16-generic Operating System: GNU/Linux Architecture: i686 Processor: unknown SMP Enabled: Yes
!!ALSA Version !!------------
Driver version: 1.0.21 Library version: 1.0.20 Utilities version: 1.0.20
!!Loaded ALSA modules !!-------------------
snd_hda_intel
!!Sound Servers on this system !!----------------------------
No sound servers found.
!!Soundcards recognised by ALSA !!-----------------------------
0 [NVidia ]: HDA-Intel - HDA NVidia HDA NVidia at 0xfe97c000 irq 16
!!PCI Soundcards installed in the system !!--------------------------------------
01:00.1 Audio device: nVidia Corporation Device 0be3 (rev a1)
!!Advanced information - PCI Vendor/Device/Susbsystem ID's !!--------------------------------------------------------
01:00.1 0403: 10de:0be3 (rev a1) Subsystem: 10b0:1401
!!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-us122l: index=-2 snd-usb-usx2y: index=-2 snd-usb-caiaq: index=-2 snd-cmipci: mpu_port=0x330 fm_port=0x388 snd-pcsp: index=-2 snd-hda-intel: power_save=10 power_save_controller=N
!!Loaded sound module options !!--------------------------
!!Module: snd_hda_intel bdl_pos_adj : 32,-1,-1,-1,-1,-1,-1,-1 enable : Y,Y,Y,Y,Y,Y,Y,Y enable_msi : 0 id : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> index : -1,-1,-1,-1,-1,-1,-1,-1 model : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> patch : <NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL>,<NULL> position_fix : 0,0,0,0,0,0,0,0 power_save : 10 power_save_controller : N probe_mask : -1,-1,-1,-1,-1,-1,-1,-1 probe_only : N,N,N,N,N,N,N,N single_cmd : N
!!HDA-Intel Codec information !!--------------------------- --startcollapse--
Codec: Nvidia MCP HDMI Address: 0 Function Id: 0x1 Vendor Id: 0x10de000b Subsystem Id: 0x10de0101 Revision Id: 0x100100 No Modem Function Group found Default PCM: rates [0x0]: bits [0x0]: formats [0x0]: Default Amp-In caps: N/A Default Amp-Out caps: N/A GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 Node 0x04 [Audio Output] wcaps 0x72b1: 8-Channels Digital Stripe CP Converter: stream=0, channel=0 Digital: Enabled GenLevel Digital category: 0x2 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Node 0x05 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP Pincap 0x09000094: OUT Detect HDMI Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x45: OUT Unsolicited: tag=00, enabled=0 Connection: 1 0x04 Codec: Nvidia MCP HDMI Address: 1 Function Id: 0x1 Vendor Id: 0x10de000b Subsystem Id: 0x10de0101 Revision Id: 0x100100 No Modem Function Group found Default PCM: rates [0x0]: bits [0x0]: formats [0x0]: Default Amp-In caps: N/A Default Amp-Out caps: N/A GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 Node 0x04 [Audio Output] wcaps 0x72b1: 8-Channels Digital Stripe CP Converter: stream=0, channel=0 Digital: Digital category: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Node 0x05 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP Pincap 0x09000094: OUT Detect HDMI Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Connection: 1 0x04 Codec: Nvidia MCP HDMI Address: 2 Function Id: 0x1 Vendor Id: 0x10de000b Subsystem Id: 0x10de0101 Revision Id: 0x100100 No Modem Function Group found Default PCM: rates [0x0]: bits [0x0]: formats [0x0]: Default Amp-In caps: N/A Default Amp-Out caps: N/A GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 Node 0x04 [Audio Output] wcaps 0x72b1: 8-Channels Digital Stripe CP Converter: stream=0, channel=0 Digital: Digital category: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Node 0x05 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP Pincap 0x09000094: OUT Detect HDMI Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Connection: 1 0x04 Codec: Nvidia MCP HDMI Address: 3 Function Id: 0x1 Vendor Id: 0x10de000b Subsystem Id: 0x10de0101 Revision Id: 0x100100 No Modem Function Group found Default PCM: rates [0x0]: bits [0x0]: formats [0x0]: Default Amp-In caps: N/A Default Amp-Out caps: N/A GPIO: io=0, o=0, i=0, unsolicited=0, wake=0 Node 0x04 [Audio Output] wcaps 0x72b1: 8-Channels Digital Stripe CP Converter: stream=0, channel=0 Digital: Digital category: 0x0 PCM: rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000 bits [0xe]: 16 20 24 formats [0x5]: PCM AC3 Unsolicited: tag=00, enabled=0 Node 0x05 [Pin Complex] wcaps 0x407381: 8-Channels Digital CP Pincap 0x09000094: OUT Detect HDMI Pin Default 0x18560010: [Jack] Digital Out at Int HDMI Conn = Digital, Color = Unknown DefAssociation = 0x1, Sequence = 0x0 Pin-ctls: 0x00: Unsolicited: tag=00, enabled=0 Connection: 1 0x04 --endcollapse--
!!ALSA Device nodes !!-----------------
crw-rw---- 1 root audio 116, 0 Dec 16 15:55 /dev/snd/controlC0 crw-rw---- 1 root audio 116, 4 Dec 16 15:55 /dev/snd/hwC0D0 crw-rw---- 1 root audio 116, 5 Dec 16 15:55 /dev/snd/hwC0D1 crw-rw---- 1 root audio 116, 6 Dec 16 15:55 /dev/snd/hwC0D2 crw-rw---- 1 root audio 116, 7 Dec 16 15:55 /dev/snd/hwC0D3 crw-rw---- 1 root audio 116, 19 Dec 16 15:55 /dev/snd/pcmC0D3p crw-rw---- 1 root audio 116, 1 Dec 16 15:55 /dev/snd/seq crw-rw---- 1 root audio 116, 33 Dec 16 15:55 /dev/snd/timer
/dev/snd/by-path: total 0 drwxr-xr-x 2 root root 60 Dec 16 15:55 . drwxr-xr-x 3 root root 220 Dec 16 15:55 .. lrwxrwxrwx 1 root root 12 Dec 16 15:55 pci-0000:01:00.1 -> ../controlC0
!!Aplay/Arecord output !!------------
APLAY
**** List of PLAYBACK Hardware Devices **** card 0: NVidia [HDA NVidia], device 3: NVIDIA HDMI [NVIDIA HDMI] Subdevices: 1/1 Subdevice #0: subdevice #0
ARECORD
**** List of CAPTURE Hardware Devices ****
!!Amixer output !!-------------
!!-------Mixer controls for card 0 [NVidia]
Card hw:0 'NVidia'/'HDA NVidia at 0xfe97c000 irq 16' Mixer name : 'Nvidia MCP HDMI' Components : 'HDA:10de000b,10de0101,00100100' Controls : 4 Simple ctrls : 1 Simple mixer control 'IEC958',0 Capabilities: pswitch pswitch-joined Playback channels: Mono Mono: Playback [on]
!!Alsactl output !!-------------
--startcollapse-- state.NVidia { control.1 { comment.access read comment.type IEC958 comment.count 1 iface MIXER name 'IEC958 Playback Con Mask' value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000' } control.2 { comment.access read comment.type IEC958 comment.count 1 iface MIXER name 'IEC958 Playback Pro Mask' value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000' } control.3 { comment.access 'read write' comment.type IEC958 comment.count 1 iface MIXER name 'IEC958 Playback Default' value '0482000200000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000' } control.4 { comment.access 'read write' comment.type BOOLEAN comment.count 1 iface MIXER name 'IEC958 Playback Switch' value true } } --endcollapse--
!!All Loaded Modules !!------------------
Module snd_hda_codec_nvhdmi snd_hda_intel snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy snd_seq_oss snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer snd_seq_device ppdev parport_pc lirc_mceusb lp ohci1394 snd lirc_dev parport nvidia soundcore ieee1394 psmouse snd_page_alloc serio_raw dm_crypt nfs lockd nfs_acl auth_rpcgss sunrpc usb_storage r8169 mii intel_agp agpgart
!!Sysfs Files !!-----------
/sys/class/sound/hwC0D0/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC0D0/driver_pin_configs:
/sys/class/sound/hwC0D0/user_pin_configs:
/sys/class/sound/hwC0D0/init_verbs:
/sys/class/sound/hwC0D1/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC0D1/driver_pin_configs:
/sys/class/sound/hwC0D1/user_pin_configs:
/sys/class/sound/hwC0D1/init_verbs:
/sys/class/sound/hwC0D2/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC0D2/driver_pin_configs:
/sys/class/sound/hwC0D2/user_pin_configs:
/sys/class/sound/hwC0D2/init_verbs:
/sys/class/sound/hwC0D3/init_pin_configs: 0x05 0x18560010
/sys/class/sound/hwC0D3/driver_pin_configs:
/sys/class/sound/hwC0D3/user_pin_configs:
/sys/class/sound/hwC0D3/init_verbs:
!!ALSA/HDA dmesg !!------------------
[ 8.800188] usb 5-1: reset full speed USB device using uhci_hcd and address 2 [ 8.929843] HDA Intel 0000:01:00.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 8.929868] HDA Intel 0000:01:00.1: setting latency timer to 64 [ 8.957671] lirc_dev: lirc_register_driver: sample_rate: 0
At Wed, 16 Dec 2009 15:20:56 +0000 (UTC), Michal Halva wrote:
Takashi Iwai <tiwai <at> suse.de> writes:
At Mon, 14 Dec 2009 12:52:40 +0100, I wrote:
one codec-id missed (0x10de000d) and codec-name is "G2xx HDMI".
OK, I'll update.
Below is the updated patch. This also replaces the PCI ID check using the generic hd-audio class check.
Takashi
Hi Takashi,
applied this patch, module loads cleanly, card is visible, but sill no sound through HDMI interface of my G210 - any idea what might be wrong? alsa-info.sh output follows.
It might be also the video driver side. For example, when a wrong EDID is set up in X config, the audio part also doesn't work. There were similar bug reports with the older Nvidia cihpset.
Of course, it can be a driver bug. How did you test exactly? A preferred way is to run like: % aplay -Dhdmi foo.wav It might be -Dhdmi:1, too, depending on the h/w.
Let's check firstly from the 2ch samples.
Takashi
Takashi Iwai <tiwai <at> suse.de> writes:
It might be also the video driver side. For example, when a wrong EDID is set up in X config, the audio part also doesn't work. There were similar bug reports with the older Nvidia cihpset.
definitely - but changing driver versions does not help - tried 185.x,190.x,195.x with the same results replugging HDMI cable from receiver directly to TV or using custom EDID in xorg.conf does not help either
Of course, it can be a driver bug. How did you test exactly? A preferred way is to run like: % aplay -Dhdmi foo.wav It might be -Dhdmi:1, too, depending on the h/w.
Let's check firstly from the 2ch samples.
I was testing with speaker-test -c2 -Dhdmi ... interestingly enough alsa-driver 1.0.22 behaves differently than 1.0.21
1.0.21 - no warning message in kernel log, speaker test was switching amongst channels (like it was really playing something)
1.0.22 - warning message in kernel log [ 10.096043] ALSA hda_intel.c:694: azx_get_response timeout, switching to polling mode: last cmd=0x100f0000 speaker-test/aplay just hangs forever until ^C
in both cases neither av receiver nor tv detects any audio on HDMI
Takashi
Thanks,
Michal
Am 14.12.2009 18:45, schrieb Takashi Iwai:
At Mon, 14 Dec 2009 12:52:40 +0100, I wrote:
one codec-id missed (0x10de000d) and codec-name is "G2xx HDMI".
OK, I'll update.
Below is the updated patch. This also replaces the PCI ID check using the generic hd-audio class check.
Takashi
Hi Takashi,
I have a theory,
4 codec with 2 channels bundling to one pcm device for 8 channels uncompressed lpcm audio and compressed audio over first codec.
Actual configuration is 4 separate pcm device.
At Wed, 16 Dec 2009 22:15:50 +0100, Stefan Ringel wrote:
Am 14.12.2009 18:45, schrieb Takashi Iwai:
At Mon, 14 Dec 2009 12:52:40 +0100, I wrote:
one codec-id missed (0x10de000d) and codec-name is "G2xx HDMI".
OK, I'll update.
Below is the updated patch. This also replaces the PCI ID check using the generic hd-audio class check.
Takashi
Hi Takashi,
I have a theory,
4 codec with 2 channels bundling to one pcm device for 8 channels uncompressed lpcm audio and compressed audio over first codec.
Yeah, that's my guess, too.
Actual configuration is 4 separate pcm device.
I'm not sure about this. The other 8ch Nvidia codecs have also separate audio widgets, namely, one master + 4 slave. Of course, the new one has no master, so it might be really with separated 2ch PCM streams instead of 8ch interleaved format.
Takashi
Am 16.12.2009 22:15, schrieb Stefan Ringel:
Am 14.12.2009 18:45, schrieb Takashi Iwai:
At Mon, 14 Dec 2009 12:52:40 +0100, I wrote:
one codec-id missed (0x10de000d) and codec-name is "G2xx HDMI".
OK, I'll update.
Below is the updated patch. This also replaces the PCI ID check using the generic hd-audio class check.
Takashi
Hi Takashi,
I have a theory,
4 codec with 2 channels bundling to one pcm device for 8 channels uncompressed lpcm audio and compressed audio over first codec.
Actual configuration is 4 separate pcm device.
Hi Takashi,
I tested your patch and it doesn't work. I checked caps from nodes 0x04 and 0x05 and comparing with http://download.intel.com/standards/hdaudio/pdf/hda034-a2.pdf. document. The configuration is 4 full HDMI codec not 4 2-channels pcm codec. It have CP-flag, ext-channel and in pin-widget that HDMI-flag.
Stefan Ringel stefan.ringel@arcor.de
At Sat, 19 Dec 2009 13:36:23 +0100, Stefan Ringel wrote:
Am 16.12.2009 22:15, schrieb Stefan Ringel:
Am 14.12.2009 18:45, schrieb Takashi Iwai:
At Mon, 14 Dec 2009 12:52:40 +0100, I wrote:
> one codec-id missed (0x10de000d) and codec-name is "G2xx HDMI". >
OK, I'll update.
Below is the updated patch. This also replaces the PCI ID check using the generic hd-audio class check.
Takashi
Hi Takashi,
I have a theory,
4 codec with 2 channels bundling to one pcm device for 8 channels uncompressed lpcm audio and compressed audio over first codec.
Actual configuration is 4 separate pcm device.
Hi Takashi,
I tested your patch and it doesn't work. I checked caps from nodes 0x04 and 0x05 and comparing with http://download.intel.com/standards/hdaudio/pdf/hda034-a2.pdf. document. The configuration is 4 full HDMI codec not 4 2-channels pcm codec. It have CP-flag, ext-channel and in pin-widget that HDMI-flag.
But still it's not sure whether it's really compliant. Nvidia HDMI codecs have been incompatible with that standard although they have already supported 8 channels. And, one wonders why there are 4 HDMI codecs there.
Anyway, try to set up just one codec and don't do anything else. If it's a standard codec, patch_intelhdmi.c would work. Create a new patch code that ignores the instances with codec->addr > 1, so that you concentrate on only the first codec address. Or, patch_atihdmi.c can be used by changing the fixed pins...
Takashi
Am 21.12.2009 11:55, schrieb Takashi Iwai:
At Sat, 19 Dec 2009 13:36:23 +0100, Stefan Ringel wrote:
Am 16.12.2009 22:15, schrieb Stefan Ringel:
Am 14.12.2009 18:45, schrieb Takashi Iwai:
At Mon, 14 Dec 2009 12:52:40 +0100, I wrote:
>> one codec-id missed (0x10de000d) and codec-name is "G2xx HDMI". >> >>
OK, I'll update.
Below is the updated patch. This also replaces the PCI ID check using the generic hd-audio class check.
Takashi
Hi Takashi,
I have a theory,
4 codec with 2 channels bundling to one pcm device for 8 channels uncompressed lpcm audio and compressed audio over first codec.
Actual configuration is 4 separate pcm device.
Hi Takashi,
I tested your patch and it doesn't work. I checked caps from nodes 0x04 and 0x05 and comparing with http://download.intel.com/standards/hdaudio/pdf/hda034-a2.pdf. document. The configuration is 4 full HDMI codec not 4 2-channels pcm codec. It have CP-flag, ext-channel and in pin-widget that HDMI-flag.
But still it's not sure whether it's really compliant. Nvidia HDMI codecs have been incompatible with that standard although they have already supported 8 channels. And, one wonders why there are 4 HDMI codecs there.
Anyway, try to set up just one codec and don't do anything else. If it's a standard codec, patch_intelhdmi.c would work. Create a new patch code that ignores the instances with codec->addr > 1, so that you concentrate on only the first codec address. Or, patch_atihdmi.c can be used by changing the fixed pins...
Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
I tested your patch with using HDA-Analyzer once again. I enabled and disabled the codecs step to step and as I enabled the second codec I hear rear left and rear right, but not other channels. As I enabled all codecs I hear only rear left and rear right.
Stefan Ringel stefan.ringel@arcor.de
Am 21.12.2009 15:41, schrieb Stefan Ringel:
Am 21.12.2009 11:55, schrieb Takashi Iwai:
At Sat, 19 Dec 2009 13:36:23 +0100, Stefan Ringel wrote:
Am 16.12.2009 22:15, schrieb Stefan Ringel:
Am 14.12.2009 18:45, schrieb Takashi Iwai:
At Mon, 14 Dec 2009 12:52:40 +0100, I wrote:
> > >
>>> one codec-id missed (0x10de000d) and codec-name is "G2xx HDMI". >>> >>> >>> > > > OK, I'll update. > > >
Below is the updated patch. This also replaces the PCI ID check using the generic hd-audio class check.
Takashi
Hi Takashi,
I have a theory,
4 codec with 2 channels bundling to one pcm device for 8 channels uncompressed lpcm audio and compressed audio over first codec.
Actual configuration is 4 separate pcm device.
Hi Takashi,
I tested your patch and it doesn't work. I checked caps from nodes 0x04 and 0x05 and comparing with http://download.intel.com/standards/hdaudio/pdf/hda034-a2.pdf. document. The configuration is 4 full HDMI codec not 4 2-channels pcm codec. It have CP-flag, ext-channel and in pin-widget that HDMI-flag.
But still it's not sure whether it's really compliant. Nvidia HDMI codecs have been incompatible with that standard although they have already supported 8 channels. And, one wonders why there are 4 HDMI codecs there.
Anyway, try to set up just one codec and don't do anything else. If it's a standard codec, patch_intelhdmi.c would work. Create a new patch code that ignores the instances with codec->addr > 1, so that you concentrate on only the first codec address. Or, patch_atihdmi.c can be used by changing the fixed pins...
Takashi
I tested your patch with using HDA-Analyzer once again. I enabled and disabled the codecs step to step and as I enabled the second codec I hear rear left and rear right, but not other channels. As I enabled all codecs I hear only rear left and rear right.
Stefan Ringel stefan.ringel@arcor.de
Hi Takashi,
I have tested with patch_intelhdmi.c and it works, and I have tested with patch_atihdmi.c (changing convert nid and pin nid) and it works also. But I have problems to attach codec #2 and #3. Next I'm updating patch_nvhdmi.c and testing it.
At Sun, 27 Dec 2009 17:20:25 +0100, Stefan Ringel wrote:
I have tested with patch_intelhdmi.c and it works, and I have tested with patch_atihdmi.c (changing convert nid and pin nid) and it works also. But I have problems to attach codec #2 and #3. Next I'm updating patch_nvhdmi.c and testing it.
Did you test also more than 2 channels? Each codec looks supporting to 8 channels output, so it might do actually. But, it might be also separated 4x2 channels.
So far, only two HDMI codecs are supported individually. For using these four codecs, we'd need a hack.
thanks,
Takashi
At Mon, 28 Dec 2009 22:34:09 +0100, I wrote:
At Sun, 27 Dec 2009 17:20:25 +0100, Stefan Ringel wrote:
I have tested with patch_intelhdmi.c and it works, and I have tested with patch_atihdmi.c (changing convert nid and pin nid) and it works also. But I have problems to attach codec #2 and #3. Next I'm updating patch_nvhdmi.c and testing it.
Did you test also more than 2 channels? Each codec looks supporting to 8 channels output, so it might do actually. But, it might be also separated 4x2 channels.
So far, only two HDMI codecs are supported individually. For using these four codecs, we'd need a hack.
Something like below...
Takashi
--- diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c index 6afdab0..bad7fab 100644 --- a/sound/pci/hda/patch_nvhdmi.c +++ b/sound/pci/hda/patch_nvhdmi.c @@ -392,6 +392,136 @@ static int patch_nvhdmi_2ch(struct hda_codec *codec) }
/* + * Quad 2ch codecs on G2x + * + * 4 x 2ch codecs for 8 channels output + */ +static int nvhdmi_pcm_prepare_quad_2ch(struct hda_pcm_stream *hinfo, + struct hda_codec *codec, + unsigned int stream_tag, + unsigned int format, + struct snd_pcm_substream *substream) +{ + int i, ncodecs; + struct hda_codec *c; + + mutex_lock(&codec->spdif_mutex); + ncodecs = substream->runtime->channels / 2; + /* turn off SPDIF once */ + if (codec->spdif_status_reset && (codec->spdif_ctls & AC_DIG1_ENABLE)) { + unsigned int ctls = codec->spdif_ctls & ~AC_DIG1_ENABLE & 0xff; + for (i = 0; i < ncodecs; i++) { + c = codec->bus->caddr_tbl[i]; + if (c) + snd_hda_codec_write(c, Nv_Master_Convert_nid, 0, + AC_VERB_SET_DIGI_CONVERT_1, + ctls); + } + } + + /* set the stream id */ + for (i = 0; i < ncodecs; i++) { + c = codec->bus->caddr_tbl[i]; + if (c) + snd_hda_codec_setup_stream(c, Nv_Master_Convert_nid, + stream_tag, i << 1, format); + } + + /* turn on SPDIF again (if needed) */ + if (codec->spdif_status_reset && (codec->spdif_ctls & AC_DIG1_ENABLE)) { + for (i = 0; i < ncodecs; i++) { + c = codec->bus->caddr_tbl[i]; + if (c) { + snd_hda_codec_write(c, Nv_Master_Convert_nid, 0, + AC_VERB_SET_DIGI_CONVERT_1, + codec->spdif_ctls & 0xff); + snd_hda_codec_write(c, Nv_Master_Convert_nid, 0, + AC_VERB_SET_DIGI_CONVERT_2, + codec->spdif_ctls >> 8); + } + } + } + mutex_unlock(&codec->spdif_mutex); + return 0; +} + +static int nvhdmi_pcm_cleanup_quad_2ch(struct hda_pcm_stream *hinfo, + struct hda_codec *codec, + struct snd_pcm_substream *substream) +{ + int i, ncodecs; + struct hda_codec *c; + + mutex_lock(&codec->spdif_mutex); + ncodecs = substream->runtime->channels / 2; + for (i = 0; i < ncodecs; i++) { + c = codec->bus->caddr_tbl[i]; + if (c) + snd_hda_codec_cleanup_stream(c, Nv_Master_Convert_nid); + } + mutex_unlock(&codec->spdif_mutex); + return 0; +} + +static struct hda_pcm_stream nvhdmi_pcm_playback_quad_2ch = { + .substreams = 1, + .channels_min = 2, + .channels_max = 8, + .nid = Nv_Master_Convert_nid, + .rates = SUPPORTED_RATES, + .maxbps = SUPPORTED_MAXBPS, + .formats = SUPPORTED_FORMATS, + .ops = { + .prepare = nvhdmi_pcm_prepare_quad_2ch, + .cleanup = nvhdmi_pcm_cleanup_quad_2ch, + }, +}; + +static int nvhdmi_build_pcms_quad_2ch(struct hda_codec *codec) +{ + struct nvhdmi_spec *spec = codec->spec; + struct hda_pcm *info = &spec->pcm_rec; + + codec->num_pcms = 1; + codec->pcm_info = info; + + info->name = "NVIDIA HDMI"; + info->pcm_type = HDA_PCM_TYPE_HDMI; + info->stream[SNDRV_PCM_STREAM_PLAYBACK] = nvhdmi_pcm_playback_quad_2ch; + + return 0; +} + +static struct hda_codec_ops nvhdmi_patch_ops_quad_2ch = { + .build_controls = nvhdmi_build_controls, + .build_pcms = nvhdmi_build_pcms_quad_2ch, + .init = nvhdmi_init, + .free = nvhdmi_free, +}; + +static int patch_nvhdmi_quad_2ch(struct hda_codec *codec) +{ + struct nvhdmi_spec *spec; + + if (codec->addr > 0) + return 0; + + spec = kzalloc(sizeof(*spec), GFP_KERNEL); + if (spec == NULL) + return -ENOMEM; + + codec->spec = spec; + + spec->multiout.num_dacs = 0; /* no analog */ + spec->multiout.max_channels = 8; + spec->multiout.dig_out_nid = Nv_Master_Convert_nid; + + codec->patch_ops = nvhdmi_patch_ops_quad_2ch; + + return 0; +} + +/* * patch entries */ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { @@ -400,6 +530,9 @@ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { { .id = 0x10de0005, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi_8ch }, + { .id = 0x10de000a, .name = "G2x HDMI", .patch = patch_nvhdmi_quad_2ch }, + { .id = 0x10de000b, .name = "G2x HDMI", .patch = patch_nvhdmi_quad_2ch }, + { .id = 0x10de000d, .name = "G2x HDMI", .patch = patch_nvhdmi_quad_2ch }, { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, {} /* terminator */ @@ -410,6 +543,9 @@ MODULE_ALIAS("snd-hda-codec-id:10de0003"); MODULE_ALIAS("snd-hda-codec-id:10de0005"); MODULE_ALIAS("snd-hda-codec-id:10de0006"); MODULE_ALIAS("snd-hda-codec-id:10de0007"); +MODULE_ALIAS("snd-hda-codec-id:10de000a"); +MODULE_ALIAS("snd-hda-codec-id:10de000b"); +MODULE_ALIAS("snd-hda-codec-id:10de000d"); MODULE_ALIAS("snd-hda-codec-id:10de0067"); MODULE_ALIAS("snd-hda-codec-id:10de8001");
Am 28.12.2009 23:23, schrieb Takashi Iwai:
At Mon, 28 Dec 2009 22:34:09 +0100, I wrote:
At Sun, 27 Dec 2009 17:20:25 +0100, Stefan Ringel wrote:
I have tested with patch_intelhdmi.c and it works, and I have tested with patch_atihdmi.c (changing convert nid and pin nid) and it works also. But I have problems to attach codec #2 and #3. Next I'm updating patch_nvhdmi.c and testing it.
Did you test also more than 2 channels? Each codec looks supporting to 8 channels output, so it might do actually. But, it might be also separated 4x2 channels.
So far, only two HDMI codecs are supported individually. For using these four codecs, we'd need a hack.
Something like below...
Takashi
diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c index 6afdab0..bad7fab 100644 --- a/sound/pci/hda/patch_nvhdmi.c +++ b/sound/pci/hda/patch_nvhdmi.c @@ -392,6 +392,136 @@ static int patch_nvhdmi_2ch(struct hda_codec *codec) }
/*
- Quad 2ch codecs on G2x
- 4 x 2ch codecs for 8 channels output
- */
+static int nvhdmi_pcm_prepare_quad_2ch(struct hda_pcm_stream *hinfo,
struct hda_codec *codec,
unsigned int stream_tag,
unsigned int format,
struct snd_pcm_substream *substream)
+{
- int i, ncodecs;
- struct hda_codec *c;
- mutex_lock(&codec->spdif_mutex);
- ncodecs = substream->runtime->channels / 2;
- /* turn off SPDIF once */
- if (codec->spdif_status_reset && (codec->spdif_ctls & AC_DIG1_ENABLE)) {
unsigned int ctls = codec->spdif_ctls & ~AC_DIG1_ENABLE & 0xff;
for (i = 0; i < ncodecs; i++) {
c = codec->bus->caddr_tbl[i];
if (c)
snd_hda_codec_write(c, Nv_Master_Convert_nid, 0,
AC_VERB_SET_DIGI_CONVERT_1,
ctls);
}
- }
- /* set the stream id */
- for (i = 0; i < ncodecs; i++) {
c = codec->bus->caddr_tbl[i];
if (c)
snd_hda_codec_setup_stream(c, Nv_Master_Convert_nid,
stream_tag, i << 1, format);
- }
- /* turn on SPDIF again (if needed) */
- if (codec->spdif_status_reset && (codec->spdif_ctls & AC_DIG1_ENABLE)) {
for (i = 0; i < ncodecs; i++) {
c = codec->bus->caddr_tbl[i];
if (c) {
snd_hda_codec_write(c, Nv_Master_Convert_nid, 0,
AC_VERB_SET_DIGI_CONVERT_1,
codec->spdif_ctls & 0xff);
snd_hda_codec_write(c, Nv_Master_Convert_nid, 0,
AC_VERB_SET_DIGI_CONVERT_2,
codec->spdif_ctls >> 8);
}
}
- }
- mutex_unlock(&codec->spdif_mutex);
- return 0;
+}
+static int nvhdmi_pcm_cleanup_quad_2ch(struct hda_pcm_stream *hinfo,
struct hda_codec *codec,
struct snd_pcm_substream *substream)
+{
- int i, ncodecs;
- struct hda_codec *c;
- mutex_lock(&codec->spdif_mutex);
- ncodecs = substream->runtime->channels / 2;
- for (i = 0; i < ncodecs; i++) {
c = codec->bus->caddr_tbl[i];
if (c)
snd_hda_codec_cleanup_stream(c, Nv_Master_Convert_nid);
- }
- mutex_unlock(&codec->spdif_mutex);
- return 0;
+}
+static struct hda_pcm_stream nvhdmi_pcm_playback_quad_2ch = {
- .substreams = 1,
- .channels_min = 2,
- .channels_max = 8,
- .nid = Nv_Master_Convert_nid,
- .rates = SUPPORTED_RATES,
- .maxbps = SUPPORTED_MAXBPS,
- .formats = SUPPORTED_FORMATS,
- .ops = {
.prepare = nvhdmi_pcm_prepare_quad_2ch,
.cleanup = nvhdmi_pcm_cleanup_quad_2ch,
- },
+};
+static int nvhdmi_build_pcms_quad_2ch(struct hda_codec *codec) +{
- struct nvhdmi_spec *spec = codec->spec;
- struct hda_pcm *info = &spec->pcm_rec;
- codec->num_pcms = 1;
- codec->pcm_info = info;
- info->name = "NVIDIA HDMI";
- info->pcm_type = HDA_PCM_TYPE_HDMI;
- info->stream[SNDRV_PCM_STREAM_PLAYBACK] = nvhdmi_pcm_playback_quad_2ch;
- return 0;
+}
+static struct hda_codec_ops nvhdmi_patch_ops_quad_2ch = {
- .build_controls = nvhdmi_build_controls,
- .build_pcms = nvhdmi_build_pcms_quad_2ch,
- .init = nvhdmi_init,
- .free = nvhdmi_free,
+};
+static int patch_nvhdmi_quad_2ch(struct hda_codec *codec) +{
- struct nvhdmi_spec *spec;
- if (codec->addr > 0)
return 0;
- spec = kzalloc(sizeof(*spec), GFP_KERNEL);
- if (spec == NULL)
return -ENOMEM;
- codec->spec = spec;
- spec->multiout.num_dacs = 0; /* no analog */
- spec->multiout.max_channels = 8;
- spec->multiout.dig_out_nid = Nv_Master_Convert_nid;
- codec->patch_ops = nvhdmi_patch_ops_quad_2ch;
- return 0;
+}
+/*
- patch entries
*/ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { @@ -400,6 +530,9 @@ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { { .id = 0x10de0005, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi_8ch },
- { .id = 0x10de000a, .name = "G2x HDMI", .patch = patch_nvhdmi_quad_2ch },
- { .id = 0x10de000b, .name = "G2x HDMI", .patch = patch_nvhdmi_quad_2ch },
- { .id = 0x10de000d, .name = "G2x HDMI", .patch = patch_nvhdmi_quad_2ch }, { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, {} /* terminator */
@@ -410,6 +543,9 @@ MODULE_ALIAS("snd-hda-codec-id:10de0003"); MODULE_ALIAS("snd-hda-codec-id:10de0005"); MODULE_ALIAS("snd-hda-codec-id:10de0006"); MODULE_ALIAS("snd-hda-codec-id:10de0007"); +MODULE_ALIAS("snd-hda-codec-id:10de000a"); +MODULE_ALIAS("snd-hda-codec-id:10de000b"); +MODULE_ALIAS("snd-hda-codec-id:10de000d"); MODULE_ALIAS("snd-hda-codec-id:10de0067"); MODULE_ALIAS("snd-hda-codec-id:10de8001");
I think it's false. It must initialize in native mode (EPT) -> this patch can't sound, I'd tested it.
At Tue, 29 Dec 2009 09:57:24 +0100, Stefan Ringel wrote:
Am 28.12.2009 23:23, schrieb Takashi Iwai:
At Mon, 28 Dec 2009 22:34:09 +0100, I wrote:
At Sun, 27 Dec 2009 17:20:25 +0100, Stefan Ringel wrote:
I have tested with patch_intelhdmi.c and it works, and I have tested with patch_atihdmi.c (changing convert nid and pin nid) and it works also. But I have problems to attach codec #2 and #3. Next I'm updating patch_nvhdmi.c and testing it.
Did you test also more than 2 channels? Each codec looks supporting to 8 channels output, so it might do actually. But, it might be also separated 4x2 channels.
So far, only two HDMI codecs are supported individually. For using these four codecs, we'd need a hack.
Something like below...
Takashi
diff --git a/sound/pci/hda/patch_nvhdmi.c b/sound/pci/hda/patch_nvhdmi.c index 6afdab0..bad7fab 100644 --- a/sound/pci/hda/patch_nvhdmi.c +++ b/sound/pci/hda/patch_nvhdmi.c @@ -392,6 +392,136 @@ static int patch_nvhdmi_2ch(struct hda_codec *codec) }
/*
- Quad 2ch codecs on G2x
- 4 x 2ch codecs for 8 channels output
- */
+static int nvhdmi_pcm_prepare_quad_2ch(struct hda_pcm_stream *hinfo,
struct hda_codec *codec,
unsigned int stream_tag,
unsigned int format,
struct snd_pcm_substream *substream)
+{
- int i, ncodecs;
- struct hda_codec *c;
- mutex_lock(&codec->spdif_mutex);
- ncodecs = substream->runtime->channels / 2;
- /* turn off SPDIF once */
- if (codec->spdif_status_reset && (codec->spdif_ctls & AC_DIG1_ENABLE)) {
unsigned int ctls = codec->spdif_ctls & ~AC_DIG1_ENABLE & 0xff;
for (i = 0; i < ncodecs; i++) {
c = codec->bus->caddr_tbl[i];
if (c)
snd_hda_codec_write(c, Nv_Master_Convert_nid, 0,
AC_VERB_SET_DIGI_CONVERT_1,
ctls);
}
- }
- /* set the stream id */
- for (i = 0; i < ncodecs; i++) {
c = codec->bus->caddr_tbl[i];
if (c)
snd_hda_codec_setup_stream(c, Nv_Master_Convert_nid,
stream_tag, i << 1, format);
- }
- /* turn on SPDIF again (if needed) */
- if (codec->spdif_status_reset && (codec->spdif_ctls & AC_DIG1_ENABLE)) {
for (i = 0; i < ncodecs; i++) {
c = codec->bus->caddr_tbl[i];
if (c) {
snd_hda_codec_write(c, Nv_Master_Convert_nid, 0,
AC_VERB_SET_DIGI_CONVERT_1,
codec->spdif_ctls & 0xff);
snd_hda_codec_write(c, Nv_Master_Convert_nid, 0,
AC_VERB_SET_DIGI_CONVERT_2,
codec->spdif_ctls >> 8);
}
}
- }
- mutex_unlock(&codec->spdif_mutex);
- return 0;
+}
+static int nvhdmi_pcm_cleanup_quad_2ch(struct hda_pcm_stream *hinfo,
struct hda_codec *codec,
struct snd_pcm_substream *substream)
+{
- int i, ncodecs;
- struct hda_codec *c;
- mutex_lock(&codec->spdif_mutex);
- ncodecs = substream->runtime->channels / 2;
- for (i = 0; i < ncodecs; i++) {
c = codec->bus->caddr_tbl[i];
if (c)
snd_hda_codec_cleanup_stream(c, Nv_Master_Convert_nid);
- }
- mutex_unlock(&codec->spdif_mutex);
- return 0;
+}
+static struct hda_pcm_stream nvhdmi_pcm_playback_quad_2ch = {
- .substreams = 1,
- .channels_min = 2,
- .channels_max = 8,
- .nid = Nv_Master_Convert_nid,
- .rates = SUPPORTED_RATES,
- .maxbps = SUPPORTED_MAXBPS,
- .formats = SUPPORTED_FORMATS,
- .ops = {
.prepare = nvhdmi_pcm_prepare_quad_2ch,
.cleanup = nvhdmi_pcm_cleanup_quad_2ch,
- },
+};
+static int nvhdmi_build_pcms_quad_2ch(struct hda_codec *codec) +{
- struct nvhdmi_spec *spec = codec->spec;
- struct hda_pcm *info = &spec->pcm_rec;
- codec->num_pcms = 1;
- codec->pcm_info = info;
- info->name = "NVIDIA HDMI";
- info->pcm_type = HDA_PCM_TYPE_HDMI;
- info->stream[SNDRV_PCM_STREAM_PLAYBACK] = nvhdmi_pcm_playback_quad_2ch;
- return 0;
+}
+static struct hda_codec_ops nvhdmi_patch_ops_quad_2ch = {
- .build_controls = nvhdmi_build_controls,
- .build_pcms = nvhdmi_build_pcms_quad_2ch,
- .init = nvhdmi_init,
- .free = nvhdmi_free,
+};
+static int patch_nvhdmi_quad_2ch(struct hda_codec *codec) +{
- struct nvhdmi_spec *spec;
- if (codec->addr > 0)
return 0;
- spec = kzalloc(sizeof(*spec), GFP_KERNEL);
- if (spec == NULL)
return -ENOMEM;
- codec->spec = spec;
- spec->multiout.num_dacs = 0; /* no analog */
- spec->multiout.max_channels = 8;
- spec->multiout.dig_out_nid = Nv_Master_Convert_nid;
- codec->patch_ops = nvhdmi_patch_ops_quad_2ch;
- return 0;
+}
+/*
- patch entries
*/ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { @@ -400,6 +530,9 @@ static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { { .id = 0x10de0005, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi_8ch },
- { .id = 0x10de000a, .name = "G2x HDMI", .patch = patch_nvhdmi_quad_2ch },
- { .id = 0x10de000b, .name = "G2x HDMI", .patch = patch_nvhdmi_quad_2ch },
- { .id = 0x10de000d, .name = "G2x HDMI", .patch = patch_nvhdmi_quad_2ch }, { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch }, {} /* terminator */
@@ -410,6 +543,9 @@ MODULE_ALIAS("snd-hda-codec-id:10de0003"); MODULE_ALIAS("snd-hda-codec-id:10de0005"); MODULE_ALIAS("snd-hda-codec-id:10de0006"); MODULE_ALIAS("snd-hda-codec-id:10de0007"); +MODULE_ALIAS("snd-hda-codec-id:10de000a"); +MODULE_ALIAS("snd-hda-codec-id:10de000b"); +MODULE_ALIAS("snd-hda-codec-id:10de000d"); MODULE_ALIAS("snd-hda-codec-id:10de0067"); MODULE_ALIAS("snd-hda-codec-id:10de8001");
I think it's false. It must initialize in native mode (EPT) -> this patch can't sound, I'd tested it.
Possibly. It was just too quick.
Anyway, Wei seems preparing the patches for new codecs, so I'll keep my hands away from this.
Takashi
On Tue, Dec 29, 2009 at 2:27 AM, Takashi Iwai tiwai@suse.de wrote:
Anyway, Wei seems preparing the patches for new codecs, so I'll keep my hands away from this.
Hi. Have the GT2XX cards been supported officially yet?
Thanks.
At Mon, 1 Mar 2010 15:19:34 -0800, VDR User wrote:
On Tue, Dec 29, 2009 at 2:27 AM, Takashi Iwai tiwai@suse.de wrote:
Anyway, Wei seems preparing the patches for new codecs, so I'll keep my hands away from this.
Hi. Have the GT2XX cards been supported officially yet?
Not yet merged; it's being discussed.
Takashi
participants (4)
-
Michal Halva
-
Stefan Ringel
-
Takashi Iwai
-
VDR User