sound/pci/hda: CX20549 cleanup/fixes
cover sound/pci/hda: CX20549 cleanup/fixes
This series of patches fixes recording on a Gigabyte W551N laptop that seems to be identical to the BenW R55E. The Audio Codec uses the same subsystem ID, which is assigned to Quanta. The Gigabyte laptop is based on the Quanta TW3 ODM.
(for the whole series)
At Thu, 05 Apr 2012 15:29:37 +0200,
Quoted 5 lines · Michael Karcher
This series of patches fixes recording on a Gigabyte W551N laptop that seems to be identical to the BenW R55E. The Audio Codec uses the same subsystem ID, which is assigned to Quanta. The Gigabyte laptop is based on the Quanta TW3 ODM.
Thanks for the patch.
I'll review and give comments back for each.
Quoted 2 lines
(for the whole series)
Signed-off-by Michael Karcher <[email protected]>
Please give your sign-off in each patch changelog, so that I can apply the patches directly via git-am.
Also, the subject lines should be with ALSA: prefix. Take a look at other git commits to that file as an example.
Takashi
At Thu, 05 Apr 2012 16:27:01 +0200,
Quoted 12 lines · Takashi Iwai
At Thu, 05 Apr 2012 15:29:37 +0200,
Quoted 5 lines · Michael Karcher
This series of patches fixes recording on a Gigabyte W551N laptop that seems to be identical to the BenW R55E. The Audio Codec uses the same subsystem ID, which is assigned to Quanta. The Gigabyte laptop is based on the Quanta TW3 ODM.
Thanks for the patch.
I'll review and give comments back for each.
Quoted 8 lines
Quoted 2 lines
(for the whole series)
Signed-off-by Michael Karcher <[email protected]>Please give your sign-off in each patch changelog, so that I can apply the patches directly via git-am.
Also, the subject lines should be with ALSA: prefix. Take a look at other git commits to that file as an example.
BTW, did you try model=auto option to enable the auto-parser? If it doesn't work well for you, let me know.
In anyway, give alsa-info.sh output (run with --no-upload option) for better checks.
thanks,
Takashi
Quoted 2 lines · Takashi Iwai
BTW, did you try model=auto option to enable the auto-parser? If it doesn't work well for you, let me know.
I tried the model=auto option, too. It works mostly, but the mixer node seems to not be utilized correctly/at all. The capture source list does not contain "mixer" anymore, and there are no playback controls for Internal Mic/Mic/Line. The Capture setup seems to be built correctly (except for the missing mixer). The auto setup adds two extra input devices for jack sense.
Quoted 2 lines
In anyway, give
alsa-info.shoutput (run with --no-upload option) for better checks.
alsa-info for the revised patch-set (mailed soon) with and without model=auto is attached. Information I consider irrelevant (non-sound modules and dmesg context not relating to sound) has been edited out.
BTW: I seem to have encountered an ALSA user-space bug: The codec provides a "master capture switch", i.e. the "mute" of the adc in amp. It also provides a "capture source selection enum", i.e. the "Connection Select" of the adc widget. The enum provides mutually exclusive capture sources that have no volume control, whilst the master capture switch is coupled with the capture volume control, and should not be related to the source enumeration. But if I play around with capture sources in alsamixer, the "Capture Switch" is turned off as soon as I switch the source from the first item in the Mux list to something else.
This happens with both the patched hard-coded "BenQ" configuration and the auto configuration.
Regards,
Michael Karcher
upload=true&script=true&cardinfo=
!!################################
!!ALSA Information Script v 0.4.60
!!################################
!!Script ran on: Fri Apr 6 12:31:13 UTC 2012
!!Linux Distribution
!!------------------
Debian GNU/Linux wheezy/sid \n \l
!!DMI Information
!!---------------
Manufacturer: GIGABYTE Product Name: W551 Product Version: Not Applicable
!!Kernel Information
!!------------------
Kernel release: 3.3.0-trunk-amd64 Operating System: GNU/Linux Architecture: x86_64 Processor: unknown SMP Enabled: Yes
!!ALSA Version
!!------------
Driver version: 1.0.24 Library version: 1.0.25 Utilities version: 1.0.25
!!Loaded ALSA modules
!!-------------------
snd_hda_intel
!!Sound Servers on this system
!!----------------------------
Pulseaudio:
Installed - Yes (/usr/bin/pulseaudio)
Running - No
ESound Daemon:
Installed - Yes (/usr/bin/esd)
Running - No
!!Soundcards recognised by ALSA
!!-----------------------------
0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0xde300000 irq 46
!!PCI Soundcards installed in the system
!!--------------------------------------
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02)
!!Advanced information - PCI Vendor/Device/Subsystem ID's !!--------------------------------------------------------
00:1b.0 0403: 8086:27d8 (rev 02)
Subsystem: 152d:0753
!!Loaded sound module options
!!--------------------------
!!Module: snd_hda_intel
align_buffer_size : Y bdl_pos_adj : 1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 beep_mode : 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 enable : Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y enable_msi : -1 id : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) index : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 model : auto,(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) patch : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) position_fix : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 power_save : 0 power_save_controller : Y probe_mask : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 probe_only : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 single_cmd : N snoop : Y
!!HDA-Intel Codec information
!!---------------------------
--startcollapse--
Codec: Conexant CX20549 (Venice)
Address: 0
AFG Function Id: 0x1 (unsol 0)
MFG Function Id: 0x2 (unsol 1)
Vendor Id: 0x14f15045
Subsystem Id: 0x152d0753
Revision Id: 0x100100
Modem Function Group: 0x2
Default PCM:
rates [0x140]: 48000 96000
bits [0xe]: 16 20 24
formats [0x1]: PCMDefault Amp-In caps: N/A
Default Amp-Out caps: N/A
GPIO: io=0, o=0, i=0, unsolicited=0, wake=0
Node 0x10 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
Control: name="Master Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=Out, idx=0, ofs=0
Control: name="Master Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=Out, idx=0, ofs=0
Amp-Out caps: ofs=0x2b, nsteps=0x2b, stepsize=0x05, mute=1
Amp-Out vals: [0x80 0x80]
Pincap 0x00010014: OUT EAPD Detect
EAPD 0x2: EAPD
Pin Default 0x951701f0: [Fixed] Speaker at Int Top
Conn = Analog, Color = Unknown
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x40: OUT
Unsolicited: tag=00, enabled=0
Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Connection: 2
0x19* 0x17Node 0x11 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
Control: name="Line Jack", index=0, device=0 Amp-Out caps: ofs=0x2b, nsteps=0x2b, stepsize=0x05, mute=1 Amp-Out vals: [0x26 0x26]
Pincap 0x0000113c: IN OUT HP Detect
Vref caps: HIZ 80
Pin Default 0x02813011: [Jack] Line In at Ext Front
Conn = 1/8, Color = Blue
DefAssociation = 0x1, Sequence = 0x1
Pin-ctls: 0x20: IN VREF_HIZ
Unsolicited: tag=02, enabled=1
Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Connection: 2
0x19 0x17*
Node 0x12 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
Control: name="Mic Jack", index=0, device=0 Amp-Out caps: ofs=0x2b, nsteps=0x2b, stepsize=0x05, mute=1 Amp-Out vals: [0xab 0xab]
Pincap 0x0000113c: IN OUT HP Detect
Vref caps: HIZ 80
Pin Default 0x02a19010: [Jack] Mic at Ext Front
Conn = 1/8, Color = Pink
DefAssociation = 0x1, Sequence = 0x0
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=01, enabled=1
Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Connection: 2
0x19* 0x17
Node 0x13 [Pin Complex] wcaps 0x400301: Stereo Digital
Pincap 0x00000010: OUT
Pin Default 0x22454130: [Jack] SPDIF Out at Sep Front
Conn = Optical, Color = Green DefAssociation = 0x3, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x40: OUT
Connection: 1
0x18
Node 0x14 [Pin Complex] wcaps 0x400081: Stereo
Pincap 0x00001124: IN Detect
Vref caps: HIZ 80
Pin Default 0x95a7011e: [Fixed] Mic at Int Top
Conn = Analog, Color = Unknown
DefAssociation = 0x1, Sequence = 0xe
Misc = NO_PRESENCE
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=00, enabled=0
Node 0x15 [Pin Complex] wcaps 0x400001: Stereo
Pincap 0x00000020: IN
Pin Default 0x400001f0: [N/A] Line Out at Ext N/A
Conn = Unknown, Color = Unknown
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x00:
Node 0x16 [Beep Generator Widget] wcaps 0x70000c: Mono Amp-Out
Control: name="Beep Playback Volume", index=0, device=0
ControlAmp: chs=1, dir=Out, idx=0, ofs=0
Control: name="Beep Playback Switch", index=0, device=0
ControlAmp: chs=1, dir=Out, idx=0, ofs=0 Amp-Out caps: ofs=0x07, nsteps=0x07, stepsize=0x0b, mute=1 Amp-Out vals: [0x06]
Node 0x17 [Audio Mixer] wcaps 0x20050b: Stereo Amp-In
Amp-In caps: ofs=0x14, nsteps=0x2b, stepsize=0x05, mute=1 Amp-In vals: [0x94 0x94] [0x94 0x94] [0x94 0x94] [0x94 0x94] [0x94 0x94] Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Connection: 5
0x19 0x14 0x12 0x11 0x15
Node 0x18 [Audio Output] wcaps 0x211: 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="Conexant Digital", type="SPDIF", device=1
Converter: stream=0, channel=0
Digital:
Digital category: 0x0
PCM:
rates [0x40]: 48000
bits [0x6]: 16 20
formats [0x5]: PCM AC3Node 0x19 [Audio Output] wcaps 0xc11: Stereo R/L
Device: name="CONEXANT Analog", type="Audio", device=0
Converter: stream=0, channel=0
PCM:
rates [0x540]: 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Node 0x1a [Audio Input] wcaps 0x100d0b: Stereo Amp-In R/L
Control: name="Capture Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Control: name="Capture Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Device: name="CONEXANT Analog", type="Audio", device=0
Amp-In caps: ofs=0x00, nsteps=0x17, stepsize=0x05, mute=1
Amp-In vals: [0x80 0x80]
Converter: stream=0, channel=0
SDI-Select: 0
Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Connection: 5
0x17 0x14 0x12* 0x11 0x15Node 0x1b [Vendor Defined Widget] wcaps 0xf00000: Mono --endcollapse--
!!ALSA Device nodes
!!-----------------
crw-rw---T 1 root audio 116, 6 Apr 6 14:30 /dev/snd/controlC0 crw-rw---T 1 root audio 116, 5 Apr 6 14:30 /dev/snd/hwC0D0 crw-rw---T 1 root audio 116, 4 Apr 6 14:30 /dev/snd/pcmC0D0c crw-rw---T 1 root audio 116, 3 Apr 6 14:30 /dev/snd/pcmC0D0p crw-rw---T 1 root audio 116, 2 Apr 6 14:30 /dev/snd/pcmC0D1p crw-rw---T+ 1 root audio 116, 1 Apr 5 10:25 /dev/snd/seq crw-rw---T+ 1 root audio 116, 33 Apr 5 10:25 /dev/snd/timer
/dev/snd/by-path:
total 0
drwxr-xr-x 2 root root 60 Apr 6 14:30 . drwxr-xr-x 3 root root 200 Apr 6 14:30 .. lrwxrwxrwx 1 root root 12 Apr 6 14:30 pci-0000:00:1b.0 -> ../controlC0
!!Aplay/Arecord output
!!------------
APLAY
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: CONEXANT Analog [CONEXANT Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: Conexant Digital [Conexant Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
ARECORD
**** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: CONEXANT Analog [CONEXANT Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
!!Amixer output
!!-------------
!!-------Mixer controls for card 0 [Intel]
Card hw:0 'Intel'/'HDA Intel at 0xde300000 irq 46'
Mixer name : 'Conexant CX20549 (Venice)'
Components : 'HDA:14f15045,152d0753,00100100'
Controls : 15
Simple ctrls : 9
Simple mixer control 'Master',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 43
Mono:
Front Left: Playback 15 [35%] [-42.00dB] [on]
Front Right: Playback 15 [35%] [-42.00dB] [on]
Simple mixer control 'PCM',0
Capabilities: pvolume penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 255
Mono:
Front Left: Playback 255 [100%] [0.00dB]
Front Right: Playback 255 [100%] [0.00dB]
Simple mixer control 'Line',0
Capabilities: cswitch cswitch-joined cswitch-exclusive penum Capture exclusive group: 0
Capture channels: Mono
Mono: Capture [off]
Simple mixer control 'Mic',0
Capabilities: cswitch cswitch-joined cswitch-exclusive penum Capture exclusive group: 0
Capture channels: Mono
Mono: Capture [on]
Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
Simple mixer control 'IEC958 Default PCM',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
Simple mixer control 'Beep',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum Playback channels: Mono
Limits: Playback 0 - 7
Mono: Playback 6 [86%] [-3.00dB] [on]
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch penum
Capture channels: Front Left - Front Right
Limits: Capture 0 - 23
Front Left: Capture 23 [100%] [34.50dB] [off]
Front Right: Capture 23 [100%] [34.50dB] [off]
Simple mixer control 'Internal Mic',0
Capabilities: cswitch cswitch-joined cswitch-exclusive penum Capture exclusive group: 0
Capture channels: Mono
Mono: Capture [off]
!!Alsactl output
!!-------------
--startcollapse--
state.Intel {
control.1 {
iface MIXER
name 'Master Playback Volume'
value.0 15
value.1 15
comment {
access 'read write'
type INTEGER
count 2
range '0 - 43'
dbmin -6450
dbmax 0
dbvalue.0 -4200
dbvalue.1 -4200
}
}
control.2 {
iface MIXER
name 'Master Playback Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.3 {
iface MIXER
name 'Capture Volume'
value.0 23
value.1 23
comment {
access 'read write'
type INTEGER
count 2
range '0 - 23'
dbmin 0
dbmax 3450
dbvalue.0 3450
dbvalue.1 3450
}
}
control.4 {
iface MIXER
name 'Capture Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.5 {
iface MIXER
name 'Capture Source'
value Mic
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Mic
item.1 'Internal Mic'
item.2 Line
}
}
control.6 {
iface MIXER
name 'IEC958 Playback Con Mask'
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.7 {
iface MIXER
name 'IEC958 Playback Pro Mask'
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.8 {
iface MIXER
name 'IEC958 Playback Default'
value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read write'
type IEC958
count 1
}
}
control.9 {
iface MIXER
name 'IEC958 Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.10 {
iface MIXER
name 'IEC958 Default PCM Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.11 {
iface MIXER
name 'Beep Playback Volume'
value 6
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -2100
dbmax 0
dbvalue.0 -300
}
}
control.12 {
iface MIXER
name 'Beep Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.13 {
iface CARD
name 'Mic Jack'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.14 {
iface CARD
name 'Line Jack'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.15 {
iface MIXER
name 'PCM Playback Volume'
value.0 255
value.1 255
comment {
access 'read write user'
type INTEGER
count 2
range '0 - 255'
tlv '0000000100000008ffffec1400000014'
dbmin -5100
dbmax 0
dbvalue.0 0
dbvalue.1 0
}
}
}--endcollapse--
!!All Loaded Modules
!!------------------
Module
(limited to sound modules)snd_hda_intelsnd_hda_codec_conexantsnd_hda_codecsnd_hwdepsnd_hrtimersnd_pcm_osssnd_mixer_osssnd_pcmsnd_page_allocsnd_seq_midisnd_seq_midi_eventsnd_rawmidisnd_seqsnd_seq_devicesnd_timer
snd
soundcore
!!Sysfs Files
!!-----------
/sys/class/sound/hwC0D0/init_pin_configs:0x10 0x951701f00x11 0x028130110x12 0x02a190100x13 0x224541300x14 0x95a7011e0x15 0x400001f0
/sys/class/sound/hwC0D0/driver_pin_configs:
/sys/class/sound/hwC0D0/user_pin_configs:
/sys/class/sound/hwC0D0/init_verbs:
!!ALSA/HDA dmesg
!!------------------
(irrelevant context removed)
[ 8.617779] snd_hda_intel 0000:00:1b.0: irq 46 for MSI/MSI-X [ 8.727179] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input8 -- [13552.526261] snd_hda_intel 0000:00:1b.0: irq 46 for MSI/MSI-X -- [16815.941187] hda-intel: IRQ timing workaround is activated for card #0. Suggest a bigger bdl_pos_adj. [21013.152341] snd_hda_intel 0000:00:1b.0: irq 46 for MSI/MSI-X [21013.191274] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input12 [21855.192698] snd_hda_intel 0000:00:1b.0: irq 46 for MSI/MSI-X [21855.226590] hda_codec: CX20549 (Venice): BIOS auto-probing. [21855.227567] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input13 [21855.228977] input: HDA Intel Line as /devices/pci0000:00/0000:00:1b.0/sound/card0/input14 [21855.231842] input: HDA Intel Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input15
upload=true&script=true&cardinfo=
!!################################
!!ALSA Information Script v 0.4.60
!!################################
!!Script ran on: Fri Apr 6 12:25:42 UTC 2012
!!Linux Distribution
!!------------------
Debian GNU/Linux wheezy/sid \n \l
!!DMI Information
!!---------------
Manufacturer: GIGABYTE Product Name: W551 Product Version: Not Applicable
!!Kernel Information
!!------------------
Kernel release: 3.3.0-trunk-amd64 Operating System: GNU/Linux Architecture: x86_64 Processor: unknown SMP Enabled: Yes
!!ALSA Version
!!------------
Driver version: 1.0.24 Library version: 1.0.25 Utilities version: 1.0.25
!!Loaded ALSA modules
!!-------------------
snd_hda_intel
!!Sound Servers on this system
!!----------------------------
Pulseaudio:
Installed - Yes (/usr/bin/pulseaudio)
Running - Yes
ESound Daemon:
Installed - Yes (/usr/bin/esd)
Running - No
!!Soundcards recognised by ALSA
!!-----------------------------
0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0xde300000 irq 46
!!PCI Soundcards installed in the system
!!--------------------------------------
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02) 05:01.2 Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
!!Advanced information - PCI Vendor/Device/Subsystem ID's !!--------------------------------------------------------
00:1b.0 0403: 8086:27d8 (rev 02)
Subsystem: 152d:0753
!!Loaded sound module options
!!--------------------------
!!Module: snd_hda_intel
align_buffer_size : Y bdl_pos_adj : 1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 beep_mode : 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 enable : Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y enable_msi : -1 id : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) index : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 model : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) patch : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) position_fix : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 power_save : 0 power_save_controller : Y probe_mask : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 probe_only : 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 single_cmd : N snoop : Y
!!HDA-Intel Codec information
!!---------------------------
--startcollapse--
Codec: Conexant CX20549 (Venice)
Address: 0
AFG Function Id: 0x1 (unsol 0)
MFG Function Id: 0x2 (unsol 1)
Vendor Id: 0x14f15045
Subsystem Id: 0x152d0753
Revision Id: 0x100100
Modem Function Group: 0x2
Default PCM:
rates [0x140]: 48000 96000
bits [0xe]: 16 20 24
formats [0x1]: PCMDefault Amp-In caps: N/A
Default Amp-Out caps: N/A
GPIO: io=0, o=0, i=0, unsolicited=0, wake=0
Node 0x10 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
Amp-Out caps: ofs=0x2b, nsteps=0x2b, stepsize=0x05, mute=1 Amp-Out vals: [0x26 0x26]
Pincap 0x00010014: OUT EAPD Detect
EAPD 0x2: EAPD
Pin Default 0x951701f0: [Fixed] Speaker at Int Top
Conn = Analog, Color = Unknown
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x40: OUT
Unsolicited: tag=00, enabled=0
Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Connection: 2
0x19 0x17*
Node 0x11 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
Amp-Out caps: ofs=0x2b, nsteps=0x2b, stepsize=0x05, mute=1 Amp-Out vals: [0x26 0x26]
Pincap 0x0000113c: IN OUT HP Detect
Vref caps: HIZ 80
Pin Default 0x02813011: [Jack] Line In at Ext Front
Conn = 1/8, Color = Blue
DefAssociation = 0x1, Sequence = 0x1
Pin-ctls: 0x20: IN VREF_HIZ
Unsolicited: tag=00, enabled=0
Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Connection: 2
0x19 0x17*
Node 0x12 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
Amp-Out caps: ofs=0x2b, nsteps=0x2b, stepsize=0x05, mute=1 Amp-Out vals: [0xab 0xab]
Pincap 0x0000113c: IN OUT HP Detect
Vref caps: HIZ 80
Pin Default 0x02a19010: [Jack] Mic at Ext Front
Conn = 1/8, Color = Pink
DefAssociation = 0x1, Sequence = 0x0
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=00, enabled=0
Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Connection: 2
0x19* 0x17
Node 0x13 [Pin Complex] wcaps 0x400301: Stereo Digital
Pincap 0x00000010: OUT
Pin Default 0x22454130: [Jack] SPDIF Out at Sep Front
Conn = Optical, Color = Green DefAssociation = 0x3, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x40: OUT
Connection: 1
0x18
Node 0x14 [Pin Complex] wcaps 0x400081: Stereo
Pincap 0x00001124: IN Detect
Vref caps: HIZ 80
Pin Default 0x95a7011e: [Fixed] Mic at Int Top
Conn = Analog, Color = Unknown
DefAssociation = 0x1, Sequence = 0xe
Misc = NO_PRESENCE
Pin-ctls: 0x24: IN VREF_80
Unsolicited: tag=00, enabled=0
Node 0x15 [Pin Complex] wcaps 0x400001: Stereo
Pincap 0x00000020: IN
Pin Default 0x400001f0: [N/A] Line Out at Ext N/A
Conn = Unknown, Color = Unknown
DefAssociation = 0xf, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x00:
Node 0x16 [Beep Generator Widget] wcaps 0x70000c: Mono Amp-Out
Control: name="Beep Playback Volume", index=0, device=0
ControlAmp: chs=1, dir=Out, idx=0, ofs=0
Control: name="Beep Playback Switch", index=0, device=0
ControlAmp: chs=1, dir=Out, idx=0, ofs=0 Amp-Out caps: ofs=0x07, nsteps=0x07, stepsize=0x0b, mute=1 Amp-Out vals: [0x06]
Node 0x17 [Audio Mixer] wcaps 0x20050b: Stereo Amp-In
Control: name="PCM Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Control: name="PCM Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Control: name="Internal Mic Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=1, ofs=0
Control: name="Internal Mic Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=1, ofs=0
Control: name="Mic Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=2, ofs=0
Control: name="Mic Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=2, ofs=0
Control: name="Line Playback Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=3, ofs=0
Control: name="Line Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=3, ofs=0
Amp-In caps: ofs=0x14, nsteps=0x2b, stepsize=0x05, mute=1
Amp-In vals: [0x14 0x14] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Connection: 5
0x19 0x14 0x12 0x11 0x15Node 0x18 [Audio Output] wcaps 0x211: 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="Conexant Digital", type="SPDIF", device=1
Converter: stream=8, channel=0
Digital: Enabled
Digital category: 0x0
PCM:
rates [0x40]: 48000
bits [0x6]: 16 20
formats [0x5]: PCM AC3Node 0x19 [Audio Output] wcaps 0xc11: Stereo R/L
Device: name="CONEXANT Analog", type="Audio", device=0
Converter: stream=8, channel=0
PCM:
rates [0x540]: 48000 96000 192000
bits [0xe]: 16 20 24
formats [0x1]: PCM Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Node 0x1a [Audio Input] wcaps 0x100d0b: Stereo Amp-In R/L
Control: name="Capture Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Control: name="Capture Switch", index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Device: name="CONEXANT Analog", type="Audio", device=0
Amp-In caps: ofs=0x00, nsteps=0x17, stepsize=0x05, mute=1
Amp-In vals: [0x97 0x97]
Converter: stream=4, channel=0
SDI-Select: 0
Power states: D0 D1 D2 D3
Power: setting=D0, actual=D0
Connection: 5
0x17* 0x14 0x12 0x11 0x15Node 0x1b [Vendor Defined Widget] wcaps 0xf00000: Mono --endcollapse--
!!ALSA Device nodes
!!-----------------
crw-rw---T+ 1 root audio 116, 6 Apr 6 14:16 /dev/snd/controlC0 crw-rw---T+ 1 root audio 116, 5 Apr 6 14:16 /dev/snd/hwC0D0 crw-rw---T+ 1 root audio 116, 4 Apr 6 14:17 /dev/snd/pcmC0D0c crw-rw---T+ 1 root audio 116, 3 Apr 6 14:17 /dev/snd/pcmC0D0p crw-rw---T+ 1 root audio 116, 2 Apr 6 14:17 /dev/snd/pcmC0D1p crw-rw---T+ 1 root audio 116, 1 Apr 5 10:25 /dev/snd/seq crw-rw---T+ 1 root audio 116, 33 Apr 5 10:25 /dev/snd/timer
/dev/snd/by-path:
total 0
drwxr-xr-x 2 root root 60 Apr 6 14:16 . drwxr-xr-x 3 root root 200 Apr 6 14:16 .. lrwxrwxrwx 1 root root 12 Apr 6 14:16 pci-0000:00:1b.0 -> ../controlC0
!!Aplay/Arecord output
!!------------
APLAY
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: CONEXANT Analog [CONEXANT Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: Conexant Digital [Conexant Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
ARECORD
**** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: CONEXANT Analog [CONEXANT Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
!!Amixer output
!!-------------
!!-------Mixer controls for card 0 [Intel]
Card hw:0 'Intel'/'HDA Intel at 0xde300000 irq 46'
Mixer name : 'Conexant CX20549 (Venice)'
Components : 'HDA:14f15045,152d0753,00100100'
Controls : 20
Simple ctrls : 10
Simple mixer control 'Master',0
Capabilities: pvolume pswitch pswitch-joined penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 43
Mono:
Front Left: Playback 38 [88%] [-7.50dB] [on]
Front Right: Playback 38 [88%] [-7.50dB] [on]
Simple mixer control 'PCM',0
Capabilities: pvolume pswitch penum
Playback channels: Front Left - Front Right
Limits: Playback 0 - 43
Mono:
Front Left: Playback 20 [47%] [0.00dB] [on]
Front Right: Playback 20 [47%] [0.00dB] [on]
Simple mixer control 'Line',0
Capabilities: pvolume pswitch cswitch cswitch-joined cswitch-exclusive penum Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Mono
Limits: Playback 0 - 43
Mono: Capture [off]
Front Left: Playback 0 [0%] [-30.00dB] [off]
Front Right: Playback 0 [0%] [-30.00dB] [off]
Simple mixer control 'Mic',0
Capabilities: pvolume pswitch cswitch cswitch-joined cswitch-exclusive penum Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Mono
Limits: Playback 0 - 43
Mono: Capture [off]
Front Left: Playback 0 [0%] [-30.00dB] [off]
Front Right: Playback 0 [0%] [-30.00dB] [off]
Simple mixer control 'IEC958',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
Simple mixer control 'IEC958 Default PCM',0
Capabilities: pswitch pswitch-joined penum
Playback channels: Mono
Mono: Playback [on]
Simple mixer control 'Beep',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum Playback channels: Mono
Limits: Playback 0 - 7
Mono: Playback 6 [86%] [-3.00dB] [on]
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch penum
Capture channels: Front Left - Front Right
Limits: Capture 0 - 23
Front Left: Capture 23 [100%] [34.50dB] [off]
Front Right: Capture 23 [100%] [34.50dB] [off]
Simple mixer control 'Mixer',0
Capabilities: cswitch cswitch-joined cswitch-exclusive penum Capture exclusive group: 0
Capture channels: Mono
Mono: Capture [on]
Simple mixer control 'Internal Mic',0
Capabilities: pvolume pswitch cswitch cswitch-joined cswitch-exclusive penum Capture exclusive group: 0
Playback channels: Front Left - Front Right
Capture channels: Mono
Limits: Playback 0 - 43
Mono: Capture [off]
Front Left: Playback 0 [0%] [-30.00dB] [off]
Front Right: Playback 0 [0%] [-30.00dB] [off]
!!Alsactl output
!!-------------
--startcollapse--
state.Intel {
control.1 {
iface MIXER
name 'Capture Volume'
value.0 23
value.1 23
comment {
access 'read write'
type INTEGER
count 2
range '0 - 23'
dbmin 0
dbmax 3450
dbvalue.0 3450
dbvalue.1 3450
}
}
control.2 {
iface MIXER
name 'Capture Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.3 {
iface MIXER
name 'PCM Playback Volume'
value.0 20
value.1 20
comment {
access 'read write'
type INTEGER
count 2
range '0 - 43'
dbmin -3000
dbmax 3450
dbvalue.0 0
dbvalue.1 0
}
}
control.4 {
iface MIXER
name 'PCM Playback Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.5 {
iface MIXER
name 'Internal Mic Playback Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 43'
dbmin -3000
dbmax 3450
dbvalue.0 -3000
dbvalue.1 -3000
}
}
control.6 {
iface MIXER
name 'Internal Mic Playback Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.7 {
iface MIXER
name 'Mic Playback Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 43'
dbmin -3000
dbmax 3450
dbvalue.0 -3000
dbvalue.1 -3000
}
}
control.8 {
iface MIXER
name 'Mic Playback Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.9 {
iface MIXER
name 'Master Playback Volume'
value.0 38
value.1 38
comment {
access 'read write'
type INTEGER
count 2
range '0 - 43'
dbmin -6450
dbmax 0
dbvalue.0 -750
dbvalue.1 -750
}
}
control.10 {
iface MIXER
name 'Master Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.11 {
iface MIXER
name 'Line Playback Volume'
value.0 0
value.1 0
comment {
access 'read write'
type INTEGER
count 2
range '0 - 43'
dbmin -3000
dbmax 3450
dbvalue.0 -3000
dbvalue.1 -3000
}
}
control.12 {
iface MIXER
name 'Line Playback Switch'
value.0 false
value.1 false
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.13 {
iface MIXER
name 'IEC958 Playback Con Mask'
value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.14 {
iface MIXER
name 'IEC958 Playback Pro Mask'
value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access read
type IEC958
count 1
}
}
control.15 {
iface MIXER
name 'IEC958 Playback Default'
value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read write'
type IEC958
count 1
}
}
control.16 {
iface MIXER
name 'IEC958 Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.17 {
iface MIXER
name 'IEC958 Default PCM Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.18 {
iface MIXER
name 'Capture Source'
value Mixer
comment {
access 'read write'
type ENUMERATED
count 1
item.0 'Internal Mic'
item.1 Mic
item.2 Line
item.3 Mixer
}
}
control.19 {
iface MIXER
name 'Beep Playback Volume'
value 6
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -2100
dbmax 0
dbvalue.0 -300
}
}
control.20 {
iface MIXER
name 'Beep Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
}--endcollapse--
!!All Loaded Modules
!!------------------
Module
(limited to sound modules)snd_hda_codec_conexantsnd_hda_intelsnd_hda_codecsnd_hwdepsnd_hrtimersnd_pcm_osssnd_mixer_osssnd_pcmsnd_page_allocsnd_seq_midisnd_seq_midi_eventsnd_rawmidisnd_seqsnd_seq_devicesnd_timer
snd
soundcore
!!Sysfs Files
!!-----------
/sys/class/sound/hwC0D0/init_pin_configs:0x10 0x951701f00x11 0x028130110x12 0x02a190100x13 0x224541300x14 0x95a7011e0x15 0x400001f0
/sys/class/sound/hwC0D0/driver_pin_configs:
/sys/class/sound/hwC0D0/user_pin_configs:
/sys/class/sound/hwC0D0/init_verbs:
!!ALSA/HDA dmesg
!!------------------
(irrelevant context removed)
[ 8.617779] snd_hda_intel 0000:00:1b.0: irq 46 for MSI/MSI-X [ 8.727179] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input8 -- [13552.526261] snd_hda_intel 0000:00:1b.0: irq 46 for MSI/MSI-X -- [16815.941187] hda-intel: IRQ timing workaround is activated for card #0. Suggest a bigger bdl_pos_adj. [21013.152341] snd_hda_intel 0000:00:1b.0: irq 46 for MSI/MSI-X [21013.191274] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input12
cover ALSA: hda - CX20549 cleanup/fixes
In reply to Takashi IwaiThis is the revised patch series for the CX20549 (and related stuff)
Changes:
Patch 1/6:
- spec->single_adc_amp has been moved to codec->single_adc_amp to fix printing in /proc.
Patch 2/6:
- "Line In" has been changed to "Line".
- This change has also been performed on the Mixer Labels.
Patch 4/6:
- .num_items has been adjusted, too.
- A comment about physical testing has been added to the commit message.
Patch 5/6:
- pin_amp_workaround is not set for CX20549 in auto-setup, too
PATCH 1/6 ALSA: hda - Fix proc output for ADC amp values of CX20549
The CX20549 has only one single input amp on it's input converter widget. Fix printing of values in the codec file in /proc/asound.
--- sound/pci/hda/hda_codec.h | 3 +++ sound/pci/hda/hda_proc.c | 13 ++++++++++--- sound/pci/hda/patch_conexant.c | 8 ++++---- 3 files changed, 17 insertions(+), 7 deletions(-)
sound/pci/hda/hda_codec.h +3 -0
@@ -851,6 +851,9 @@ struct hda_codec { unsigned int pin_amp_workaround:1; /* pin out-amp takes index* (e.g. Conexant codecs) */ + unsigned int single_adc_amp:1; /* adc in-amp takes no index +* (e.g. CX20549 codec) +*/ unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */ unsigned int pins_shutup:1; /* pins are shut up */ unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
sound/pci/hda/hda_proc.c +10 -3
@@ -651,9 +651,16 @@ static void print_codec_info(struct snd_info_entry *entry,snd_iprintf (buffer," Amp-In caps: " );print_amp_caps (buffer, codec, nid,HDA_INPUT );snd_iprintf (buffer," Amp-In vals: " ); -print_amp_vals (buffer, codec, nid,HDA_INPUT , - wid_caps &AC_WCAP_STEREO , - wid_type ==AC_WID_PIN ?1 : conn_len); +if (wid_type ==AC_WID_PIN || + (codec->single_adc_amp && + wid_type ==AC_WID_AUD_IN )) +print_amp_vals (buffer, codec, nid,HDA_INPUT , + wid_caps &AC_WCAP_STEREO , +1 ); +else +print_amp_vals (buffer, codec, nid,HDA_INPUT , + wid_caps &AC_WCAP_STEREO , + conn_len); }if (wid_caps &AC_WCAP_OUT_AMP ) {snd_iprintf (buffer," Amp-Out caps: " );
sound/pci/hda/patch_conexant.c +4 -4
@@ -141,7 +141,6 @@ struct conexant_spec { unsigned int hp_laptop:1; unsigned int asus:1; unsigned int pin_eapd_ctrls:1; - unsigned int single_adc_amp:1; unsigned int adc_switching:1;
@@ -1111,6 +1110,7 @@ static int patch_cxt5045(struct hda_codec *codec)return -ENOMEM ; codec->spec = spec; codec->pin_amp_workaround =1 ; + codec->single_adc_amp =1 ; spec->multiout.max_channels =2 ; spec->multiout.num_dacs =ARRAY_SIZE (cxt5045_dac_nids);
@@ -4220,7 +4220,7 @@ static int cx_auto_add_capture_volume(struct hda_codec *codec, hda_nid_t nid,int idx =get_input_connection (codec, adc_nid, nid);if (idx <0 )continue ; -if (spec->single_adc_amp) +if (codec->single_adc_amp) idx =0 ;return cx_auto_add_volume_idx (codec, label, pfx, cidx, adc_nid,HDA_INPUT , idx);
@@ -4275,7 +4275,7 @@ static int cx_auto_build_input_controls(struct hda_codec *codec)if (cidx <0 )continue ; input_conn[i] = spec->imux_info[i].adc; -if (!spec->single_adc_amp) +if (!codec->single_adc_amp) input_conn[i] |= cidx <<8 ;if (i >0 && input_conn[i] != input_conn[0 ]) multi_connection =1 ;
@@ -4470,7 +4470,7 @@ static int patch_conexant_auto(struct hda_codec *codec)switch (codec->vendor_id) {case 0x14f15045 : - spec->single_adc_amp =1 ; + codec->single_adc_amp =1 ;break ;case 0x14f15051 :add_cx5051_fake_mutes (codec);
Signature · 1 line
1.7.9.1
PATCH 2/6 ALSA: hda - Rename capture sources of CX20549 to match common conventions
In reply to Michael KarcherThis includes renaming "Line In" to line, also in the mixer settings.
--- sound/pci/hda/patch_conexant.c | 26 +++++++++++++------------- 1 files changed, 13 insertions(+), 13 deletions(-)
sound/pci/hda/patch_conexant.c +13 -13
@@ -686,27 +686,27 @@ static const struct hda_channel_mode cxt5045_modes[1] = {static const struct hda_input_mux cxt5045_capture_source = { .num_items =2 , .items = { - {"IntMic" ,0x1 }, - {"ExtMic" ,0x2 }, + {"Internal Mic" ,0x1 }, + {"Mic" ,0x2 }, } };static const struct hda_input_mux cxt5045_capture_source_benq = { .num_items =5 , .items = { - {"IntMic" ,0x1 }, - {"ExtMic" ,0x2 }, - {"LineIn" ,0x3 }, - {"CD" ,0x4 }, - {"Mixer" ,0x0 }, + {"CD" ,0x4 }, + {"Internal Mic" ,0x1 }, + {"Mic" ,0x2 }, + {"Line" ,0x3 }, + {"Mixer" ,0x0 }, } };static const struct hda_input_mux cxt5045_capture_source_hp530 = { .num_items =2 , .items = { - {"ExtMic" ,0x1 }, - {"IntMic" ,0x2 }, + {"Mic" ,0x1 }, + {"Internal Mic" ,0x2 }, } };
@@ -826,10 +826,10 @@ static const struct snd_kcontrol_new cxt5045_benq_mixers[] = {HDA_CODEC_VOLUME ("CD Playback Volume" ,0x17 ,0x4 ,HDA_INPUT ),HDA_CODEC_MUTE ("CD Playback Switch" ,0x17 ,0x4 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Line In Capture Volume" ,0x1a ,0x03 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Line In Capture Switch" ,0x1a ,0x03 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Line In Playback Volume" ,0x17 ,0x3 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Line In Playback Switch" ,0x17 ,0x3 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("Line Capture Volume" ,0x1a ,0x03 ,HDA_INPUT ), +HDA_CODEC_MUTE ("Line Capture Switch" ,0x1a ,0x03 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("Line Playback Volume" ,0x17 ,0x3 ,HDA_INPUT ), +HDA_CODEC_MUTE ("Line Playback Switch" ,0x17 ,0x3 ,HDA_INPUT ),HDA_CODEC_VOLUME ("Mixer Capture Volume" ,0x1a ,0x0 ,HDA_INPUT ), HDA_CODEC_MUTE("Mixer Capture Switch", 0x1a, 0x0, HDA_INPUT),
Signature · 1 line
1.7.9.1
PATCH 3/6 ALSA: hda - fix record volume controls of CX20459 ("Venice")
In reply to Michael KarcherThe "input converter" widget of the CX20459 has only one input amplifier, expose that one as "Capture Volume/Capture Switch". The actual record source selection is already exposed through the separately installed input mux.
--- sound/pci/hda/patch_conexant.c | 31 ++++++------------------------- 1 files changed, 6 insertions(+), 25 deletions(-)
sound/pci/hda/patch_conexant.c +6 -25
@@ -797,10 +797,8 @@ static void cxt5045_hp_unsol_event(struct hda_codec *codec, }static const struct snd_kcontrol_new cxt5045_mixers[] = { -HDA_CODEC_VOLUME ("Internal Mic Capture Volume" ,0x1a ,0x01 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Internal Mic Capture Switch" ,0x1a ,0x01 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mic Capture Volume" ,0x1a ,0x02 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mic Capture Switch" ,0x1a ,0x02 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("Capture Volume" ,0x1a ,0x00 ,HDA_INPUT ), +HDA_CODEC_MUTE ("Capture Switch" ,0x1a ,0x0 ,HDA_INPUT ),HDA_CODEC_VOLUME ("PCM Playback Volume" ,0x17 ,0x0 ,HDA_INPUT ),HDA_CODEC_MUTE ("PCM Playback Switch" ,0x17 ,0x0 ,HDA_INPUT ),HDA_CODEC_VOLUME ("Internal Mic Playback Volume" ,0x17 ,0x1 ,HDA_INPUT ),
@@ -821,27 +819,18 @@ static const struct snd_kcontrol_new cxt5045_mixers[] = { };static const struct snd_kcontrol_new cxt5045_benq_mixers[] = { -HDA_CODEC_VOLUME ("CD Capture Volume" ,0x1a ,0x04 ,HDA_INPUT ), -HDA_CODEC_MUTE ("CD Capture Switch" ,0x1a ,0x04 ,HDA_INPUT ),HDA_CODEC_VOLUME ("CD Playback Volume" ,0x17 ,0x4 ,HDA_INPUT ),HDA_CODEC_MUTE ("CD Playback Switch" ,0x17 ,0x4 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Line Capture Volume" ,0x1a ,0x03 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Line Capture Switch" ,0x1a ,0x03 ,HDA_INPUT ),HDA_CODEC_VOLUME ("Line Playback Volume" ,0x17 ,0x3 ,HDA_INPUT ),HDA_CODEC_MUTE ("Line Playback Switch" ,0x17 ,0x3 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer Capture Volume" ,0x1a ,0x0 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer Capture Switch" ,0x1a ,0x0 ,HDA_INPUT ), - {} };static const struct snd_kcontrol_new cxt5045_mixers_hp530[] = { -HDA_CODEC_VOLUME ("Internal Mic Capture Volume" ,0x1a ,0x02 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Internal Mic Capture Switch" ,0x1a ,0x02 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mic Capture Volume" ,0x1a ,0x01 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mic Capture Switch" ,0x1a ,0x01 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("Capture Volume" ,0x1a ,0x00 ,HDA_INPUT ), +HDA_CODEC_MUTE ("Capture Switch" ,0x1a ,0x0 ,HDA_INPUT ),HDA_CODEC_VOLUME ("PCM Playback Volume" ,0x17 ,0x0 ,HDA_INPUT ),HDA_CODEC_MUTE ("PCM Playback Switch" ,0x17 ,0x0 ,HDA_INPUT ),HDA_CODEC_VOLUME ("Internal Mic Playback Volume" ,0x17 ,0x2 ,HDA_INPUT ),
@@ -977,16 +966,8 @@ static const struct snd_kcontrol_new cxt5045_test_mixer[] = { .put = conexant_mux_enum_put, },/* Audio input controls */ - HDA_CODEC_VOLUME("Input-1 Volume", 0x1a, 0x0, HDA_INPUT), - HDA_CODEC_MUTE("Input-1 Switch", 0x1a, 0x0, HDA_INPUT), - HDA_CODEC_VOLUME("Input-2 Volume", 0x1a, 0x1, HDA_INPUT), - HDA_CODEC_MUTE("Input-2 Switch", 0x1a, 0x1, HDA_INPUT), - HDA_CODEC_VOLUME("Input-3 Volume", 0x1a, 0x2, HDA_INPUT), - HDA_CODEC_MUTE("Input-3 Switch", 0x1a, 0x2, HDA_INPUT), - HDA_CODEC_VOLUME("Input-4 Volume", 0x1a, 0x3, HDA_INPUT), - HDA_CODEC_MUTE("Input-4 Switch", 0x1a, 0x3, HDA_INPUT), - HDA_CODEC_VOLUME("Input-5 Volume", 0x1a, 0x4, HDA_INPUT), - HDA_CODEC_MUTE("Input-5 Switch", 0x1a, 0x4, HDA_INPUT), + HDA_CODEC_VOLUME("Capture Volume", 0x1a, 0x0, HDA_INPUT), + HDA_CODEC_MUTE("Capture Switch", 0x1a, 0x0, HDA_INPUT), { }/* end */ };
Signature · 1 line
1.7.9.1
PATCH 4/6 ALSA: hda - Remove CD control from model=benq for CX20549
In reply to Michael KarcherThe ID used for detection of the BenQ R55E actually identifies the Quanta TW3 ODM design, which is also used for the Gigabyte W551 laptop series. Schematics on the internet clearly indicate that the "Port C" (analog input connected to record source #4 and mixer input #4) is unconnected.
Playing an audio CD through analog playback (using cdplay from cdtools) produces no sound, even with the mixer input labelled "CD" enabled, and the volume control in the CD drive set to maximum. This indicates the connection is really not present.
--- sound/pci/hda/patch_conexant.c | 6 +----- 1 files changed, 1 insertions(+), 5 deletions(-)
sound/pci/hda/patch_conexant.c +1 -5
@@ -692,9 +692,8 @@ static const struct hda_input_mux cxt5045_capture_source = { };static const struct hda_input_mux cxt5045_capture_source_benq = { - .num_items =5 , + .num_items =4 , .items = { - {"CD" ,0x4 }, {"Internal Mic" ,0x1 }, {"Mic" ,0x2 }, {"Line" ,0x3 },
@@ -819,9 +818,6 @@ static const struct snd_kcontrol_new cxt5045_mixers[] = { };static const struct snd_kcontrol_new cxt5045_benq_mixers[] = { -HDA_CODEC_VOLUME ("CD Playback Volume" ,0x17 ,0x4 ,HDA_INPUT ), -HDA_CODEC_MUTE ("CD Playback Switch" ,0x17 ,0x4 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Line Playback Volume" ,0x17 ,0x3 ,HDA_INPUT ),HDA_CODEC_MUTE ("Line Playback Switch" ,0x17 ,0x3 ,HDA_INPUT ),
Signature · 1 line
1.7.9.1
PATCH 5/6 ALSA: hda - CX20549 doesn't need pin_amp_workaround.
In reply to Michael KarcherCX20549 (ctx5045) doesn't accept data on index 1 for output pins, as shown in the following hda-var transaction:
$ hda-verb /dev/snd/hwC0D0 0x10 set_amp_gain 0xb126 nid = 0x10, verb = 0x300, param = 0xb126 value = 0x0 $ hda-verb /dev/snd/hwC0D0 0x10 get_amp_gain 0x8001 nid = 0x10, verb = 0xb00, param = 0x8001 value = 0x0
--- sound/pci/hda/patch_conexant.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
sound/pci/hda/patch_conexant.c +3 -2
@@ -1086,7 +1086,6 @@ static int patch_cxt5045(struct hda_codec *codec)if (!spec)return -ENOMEM ; codec->spec = spec; - codec->pin_amp_workaround =1 ; codec->single_adc_amp =1 ; spec->multiout.max_channels =2 ;
@@ -4443,7 +4442,6 @@ static int patch_conexant_auto(struct hda_codec *codec)if (!spec)return -ENOMEM ; codec->spec = spec; - codec->pin_amp_workaround =1 ;switch (codec->vendor_id) {case 0x14f15045 :
@@ -4451,7 +4449,10 @@ static int patch_conexant_auto(struct hda_codec *codec)break ;case 0x14f15051 :add_cx5051_fake_mutes (codec); + codec->pin_amp_workaround =1 ;break ; +default : + codec->pin_amp_workaround =1 ; }apply_pin_fixup (codec, cxt_fixups, cxt_pincfg_tbl);
Signature · 1 line
1.7.9.1
PATCH 6/6 ALSA: hda - clean up CX20549 test mixer setup
In reply to Michael Karchername pins consistently (MIC1/LINE1/HP-OUT/CD) on all controls affecting those pins.
remove duplicate SET_AMP_GAIN_MUTE to 0x17/index 0 and 0x17/index 1
really select MIC1, not Mixer out for recording
"Mixer out" for recording is not a "pin", adjust comment
--- sound/pci/hda/patch_conexant.c | 38 +++++++++++++++++--------------------- 1 files changed, 17 insertions(+), 21 deletions(-)
sound/pci/hda/patch_conexant.c +17 -21
@@ -930,10 +930,10 @@ static const struct snd_kcontrol_new cxt5045_test_mixer[] = {/* Output controls */ HDA_CODEC_VOLUME ("Speaker Playback Volume" ,0x10 ,0x0 ,HDA_OUTPUT ),HDA_CODEC_MUTE ("Speaker Playback Switch" ,0x10 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_VOLUME ("Node 11 Playback Volume" ,0x11 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_MUTE ("Node 11 Playback Switch" ,0x11 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_VOLUME ("Node 12 Playback Volume" ,0x12 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_MUTE ("Node 12 Playback Switch" ,0x12 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_VOLUME ("HP-OUT Playback Volume" ,0x11 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_MUTE ("HP-OUT Playback Switch" ,0x11 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_VOLUME ("LINE1 Playback Volume" ,0x12 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_MUTE ("LINE1 Playback Switch" ,0x12 ,0x0 ,HDA_OUTPUT ),/* Modes for retasking pin widgets */ CXT_PIN_MODE("HP-OUT pin mode", 0x11, CXT_PIN_DIR_INOUT),
@@ -944,16 +944,16 @@ static const struct snd_kcontrol_new cxt5045_test_mixer[] = {/* Loopback mixer controls */ -HDA_CODEC_VOLUME ("Mixer-1 Volume" ,0x17 ,0x0 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer-1 Switch" ,0x17 ,0x0 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer-2 Volume" ,0x17 ,0x1 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer-2 Switch" ,0x17 ,0x1 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer-3 Volume" ,0x17 ,0x2 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer-3 Switch" ,0x17 ,0x2 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer-4 Volume" ,0x17 ,0x3 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer-4 Switch" ,0x17 ,0x3 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer-5 Volume" ,0x17 ,0x4 ,HDA_INPUT ), - HDA_CODEC_MUTE("Mixer-5 Switch", 0x17, 0x4, HDA_INPUT), +HDA_CODEC_VOLUME ("PCM Volume" ,0x17 ,0x0 ,HDA_INPUT ), +HDA_CODEC_MUTE ("PCM Switch" ,0x17 ,0x0 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("MIC1 pin Volume" ,0x17 ,0x1 ,HDA_INPUT ), +HDA_CODEC_MUTE ("MIC1 pin Switch" ,0x17 ,0x1 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("LINE1 pin Volume" ,0x17 ,0x2 ,HDA_INPUT ), +HDA_CODEC_MUTE ("LINE1 pin Switch" ,0x17 ,0x2 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("HP-OUT pin Volume" ,0x17 ,0x3 ,HDA_INPUT ), +HDA_CODEC_MUTE ("HP-OUT pin Switch" ,0x17 ,0x3 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("CD pin Volume" ,0x17 ,0x4 ,HDA_INPUT ), + HDA_CODEC_MUTE("CD pin Switch", 0x17, 0x4, HDA_INPUT), { .iface =SNDRV_CTL_ELEM_IFACE_MIXER , .name = "Input Source",
@@ -985,10 +985,6 @@ static const struct hda_verb cxt5045_test_init_verbs[] = { {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, {0x18, AC_VERB_SET_DIGI_CONVERT_1, 0}, -/* Start with output sum widgets muted and their output gains at min */ - {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, - {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, -/* Unmute retasking pin widget output buffers since the default * state appears to be output. As the pin mode is changed by the * user the pin mode control will take care of enabling the pin's
@@ -1003,11 +999,11 @@ static const struct hda_verb cxt5045_test_init_verbs[] = {/* Set ADC connection select to match default mixer setting (mic1 * pin) */ - {0x1a, AC_VERB_SET_CONNECT_SEL, 0x00}, - {0x17, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x1a, AC_VERB_SET_CONNECT_SEL, 0x01}, + {0x17, AC_VERB_SET_CONNECT_SEL, 0x01},/* Mute all inputs to mixer widget (even unconnected ones) */ - {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, /* Mixer pin */ + {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, /* Mixer */ {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, /* Mic1 pin */ {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)}, /* Line pin */ {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)}, /* HP pin */
Signature · 1 line
1.7.9.1
At Fri, 06 Apr 2012 15:01:47 +0200,
Quoted 9 lines · Michael Karcher
Quoted 2 lines · Takashi Iwai
BTW, did you try model=auto option to enable the auto-parser? If it doesn't work well for you, let me know.
I tried the model=auto option, too. It works mostly, but the mixer node seems to not be utilized correctly/at all. The capture source list does not contain "mixer" anymore, and there are no playback controls for Internal Mic/Mic/Line.
Right, the analog loopback is dropped in the auto-parser for simplicity.
Quoted 10 lines
The Capture setup seems to be built correctly
(except for the missing mixer). The auto setup adds two extra input devices for jack sense.Quoted 2 lines
In anyway, give
alsa-info.shoutput (run with --no-upload option) for better checks.alsa-info for the revised patch-set (mailed soon) with and without model=auto is attached. Information I consider irrelevant (non-sound modules and dmesg context not relating to sound) has been edited out.
Thanks.
Quoted 9 lines
BTW: I seem to have encountered an ALSA user-space bug: The codec provides a "master capture switch", i.e. the "mute" of the adc in amp. It also provides a "capture source selection enum", i.e. the "Connection Select" of the adc widget. The enum provides mutually exclusive capture sources that have no volume control, whilst the master capture switch is coupled with the capture volume control, and should not be related to the source enumeration. But if I play around with capture sources in alsamixer, the "Capture Switch" is turned off as soon as I switch the source from the first item in the Mux list to something else.
This sounds like a bug in alsa-lib mixer abstraction. There is a known shortcomings in the "capture source" enum, e.g. it can't take more than one ADCs.
Quoted 2 lines
This happens with both the patched hard-coded "BenQ" configuration and the auto configuration.
OK, I'll check it in the next week.
thanks,
Takashi
Takashi Iwai
AppliedRe: [PATCH 0/6] ALSA: hda - CX20549 cleanup/fixes
In reply to Michael KarcherAt Fri, 6 Apr 2012 15:34:14 +0200,
Quoted 15 lines · Michael Karcher
This is the revised patch series for the CX20549 (and related stuff)
Changes:
Patch 1/6:
-spec->single_adc_amphas been moved tocodec->single_adc_ampto fix printing in /proc.
Patch 2/6:
- "Line In" has been changed to "Line".
- This change has also been performed on the Mixer Labels.
Patch 4/6:
- .num_items has been adjusted, too.
- A comment about physical testing has been added to the commit message.
Patch 5/6:
-pin_amp_workaroundis not set for CX20549 in auto-setup, too
Thanks, applied all patches now.
(BTW, the first patch caused a few obvious warnings from
checkpatch.pl, so I fixed manually. At the next time, please run checkpatch.pl once before submission.)
Takashi
Re: [PATCH 6/6] ALSA: hda - clean up CX20549 test mixer setup
In reply to Michael KarcherQuoted 2 lines · Michael Karcher
name pins consistently (MIC1/LINE1/HP-OUT/CD) on all controls affecting those pins.
If this is a test mixer only, so maybe it does not matter that much, but anyway:
Loopback controls are usually labeled
"Line Playback Volume"
"Mic Playback Volume"
And outputs:
"Headphone Playback Volume"
For line outputs, I'm not sure if the right thing is
"Front Playback Volume",
"Line-Out Playback Volume", or
"Line Out Playback Volume"
Quoted 42 lines
remove duplicate
SET_AMP_GAIN_MUTEto 0x17/index 0 and 0x17/index 1really select MIC1, not Mixer out for recording
"Mixer out" for recording is not a "pin", adjust comment
Signed-off-by Michael Karcher<[email protected]>--- sound/pci/hda/patch_conexant.c | 38 +++++++++++++++++--------------------- 1 files changed, 17 insertions(+), 21 deletions(-)sound/pci/hda/patch_conexant.c +4
-12@@ -930,10 +930,10 @@ static const struct snd_kcontrol_new cxt5045_test_mixer[] = {/* Output controls */ HDA_CODEC_VOLUME ("Speaker Playback Volume" ,0x10 ,0x0 ,HDA_OUTPUT ),HDA_CODEC_MUTE ("Speaker Playback Switch" ,0x10 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_VOLUME ("Node 11 Playback Volume" ,0x11 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_MUTE ("Node 11 Playback Switch" ,0x11 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_VOLUME ("Node 12 Playback Volume" ,0x12 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_MUTE ("Node 12 Playback Switch" ,0x12 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_VOLUME ("HP-OUT Playback Volume" ,0x11 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_MUTE ("HP-OUT Playback Switch" ,0x11 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_VOLUME ("LINE1 Playback Volume" ,0x12 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_MUTE ("LINE1 Playback Switch" ,0x12 ,0x0 ,HDA_OUTPUT ),/* Modes for retasking pin widgets */ CXT_PIN_MODE("HP-OUT pin mode", 0x11, CXT_PIN_DIR_INOUT),@@ -944,16 +944,16 @@ static const struct snd_kcontrol_new cxt5045_test_mixer[] = {/* Loopback mixer controls */ -HDA_CODEC_VOLUME ("Mixer-1 Volume" ,0x17 ,0x0 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer-1 Switch" ,0x17 ,0x0 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer-2 Volume" ,0x17 ,0x1 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer-2 Switch" ,0x17 ,0x1 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer-3 Volume" ,0x17 ,0x2 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer-3 Switch" ,0x17 ,0x2 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer-4 Volume" ,0x17 ,0x3 ,HDA_INPUT ), - HDA_CODEC_MUTE("Mixer-4 Switch", 0x17, 0x3, HDA_INPUT),
sound/pci/hda/patch_conexant.c static const struct snd_kcontrol_new cxt5045_test_mixer[] = { · line 954
Quoted 10 lines
sound/pci/hda/patch_conexant.c +8
-2-HDA_CODEC_VOLUME ("Mixer-5 Volume" ,0x17 ,0x4 ,HDA_INPUT ), - HDA_CODEC_MUTE("Mixer-5 Switch", 0x17, 0x4, HDA_INPUT), +HDA_CODEC_VOLUME ("PCM Volume" ,0x17 ,0x0 ,HDA_INPUT ), +HDA_CODEC_MUTE ("PCM Switch" ,0x17 ,0x0 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("MIC1 pin Volume" ,0x17 ,0x1 ,HDA_INPUT ), +HDA_CODEC_MUTE ("MIC1 pin Switch" ,0x17 ,0x1 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("LINE1 pin Volume" ,0x17 ,0x2 ,HDA_INPUT ), +HDA_CODEC_MUTE ("LINE1 pin Switch" ,0x17 ,0x2 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("HP-OUT pin Volume" ,0x17 ,0x3 ,HDA_INPUT ), + HDA_CODEC_MUTE("HP-OUT pin Switch", 0x17, 0x3, HDA_INPUT),
Eh, is there a loopback control from the headphone?
Quoted 31 lines
sound/pci/hda/patch_conexant.c +5
-7+HDA_CODEC_VOLUME ("CD pin Volume" ,0x17 ,0x4 ,HDA_INPUT ), + HDA_CODEC_MUTE("CD pin Switch", 0x17, 0x4, HDA_INPUT), { .iface =SNDRV_CTL_ELEM_IFACE_MIXER , .name = "Input Source",@@ -985,10 +985,6 @@ static const struct hda_verb cxt5045_test_init_verbs[] = { {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, {0x18, AC_VERB_SET_DIGI_CONVERT_1, 0}, -/* Start with output sum widgets muted and their output gains at min */ - {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, - {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, -/* Unmute retasking pin widget output buffers since the default * state appears to be output. As the pin mode is changed by the * user the pin mode control will take care of enabling the pin's @@ -1003,11 +999,11 @@ static const struct hda_verb cxt5045_test_init_verbs[] = {/* Set ADC connection select to match default mixer setting (mic1 * pin) */ - {0x1a, AC_VERB_SET_CONNECT_SEL, 0x00}, - {0x17, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x1a, AC_VERB_SET_CONNECT_SEL, 0x01}, + {0x17, AC_VERB_SET_CONNECT_SEL, 0x01},/* Mute all inputs to mixer widget (even unconnected ones) */ - {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, /* Mixer pin */ + {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, /* Mixer */ {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, /* Mic1 pin */ {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)}, /* Line pin */ {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)}, /* HP pin */
Signature · 2 lines
David Henningsson, Canonical Ltd. http://launchpad.net/~diwic
Re: [PATCH 6/6] ALSA: hda - clean up CX20549 test mixer setup
At Tue, 10 Apr 2012 08:54:19 +0200,
Quoted 15 lines · David Henningsson
Quoted 2 lines · Michael Karcher
name pins consistently (MIC1/LINE1/HP-OUT/CD) on all controls affecting those pins.
If this is a test mixer only, so maybe it does not matter that much, but anyway:
Loopback controls are usually labeled
"Line Playback Volume"
"Mic Playback Volume"And outputs:
Quoted 7 lines
"Headphone Playback Volume"
For line outputs, I'm not sure if the right thing is
"Front Playback Volume",
"Line-Out Playback Volume", or
"Line Out Playback Volume"
Yeah, in general, the strings like these would be better. But it's a test-only mode, which should be turned on by the user at own risk, so I didn't want to be too picky.
Quoted 46 lines
Quoted 46 lines
remove duplicate
SET_AMP_GAIN_MUTEto 0x17/index 0 and 0x17/index 1really select MIC1, not Mixer out for recording
"Mixer out" for recording is not a "pin", adjust comment
Signed-off-by Michael Karcher<[email protected]>--- sound/pci/hda/patch_conexant.c | 38 +++++++++++++++++--------------------- 1 files changed, 17 insertions(+), 21 deletions(-)sound/pci/hda/patch_conexant.c +6
-14@@ -930,10 +930,10 @@ static const struct snd_kcontrol_new cxt5045_test_mixer[] = {/* Output controls */ HDA_CODEC_VOLUME ("Speaker Playback Volume" ,0x10 ,0x0 ,HDA_OUTPUT ),HDA_CODEC_MUTE ("Speaker Playback Switch" ,0x10 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_VOLUME ("Node 11 Playback Volume" ,0x11 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_MUTE ("Node 11 Playback Switch" ,0x11 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_VOLUME ("Node 12 Playback Volume" ,0x12 ,0x0 ,HDA_OUTPUT ), -HDA_CODEC_MUTE ("Node 12 Playback Switch" ,0x12 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_VOLUME ("HP-OUT Playback Volume" ,0x11 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_MUTE ("HP-OUT Playback Switch" ,0x11 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_VOLUME ("LINE1 Playback Volume" ,0x12 ,0x0 ,HDA_OUTPUT ), +HDA_CODEC_MUTE ("LINE1 Playback Switch" ,0x12 ,0x0 ,HDA_OUTPUT ),/* Modes for retasking pin widgets */ CXT_PIN_MODE("HP-OUT pin mode", 0x11, CXT_PIN_DIR_INOUT),@@ -944,16 +944,16 @@ static const struct snd_kcontrol_new cxt5045_test_mixer[] = {/* Loopback mixer controls */ -HDA_CODEC_VOLUME ("Mixer-1 Volume" ,0x17 ,0x0 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer-1 Switch" ,0x17 ,0x0 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer-2 Volume" ,0x17 ,0x1 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer-2 Switch" ,0x17 ,0x1 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer-3 Volume" ,0x17 ,0x2 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer-3 Switch" ,0x17 ,0x2 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer-4 Volume" ,0x17 ,0x3 ,HDA_INPUT ), -HDA_CODEC_MUTE ("Mixer-4 Switch" ,0x17 ,0x3 ,HDA_INPUT ), -HDA_CODEC_VOLUME ("Mixer-5 Volume" ,0x17 ,0x4 ,HDA_INPUT ), - HDA_CODEC_MUTE("Mixer-5 Switch", 0x17, 0x4, HDA_INPUT), +HDA_CODEC_VOLUME ("PCM Volume" ,0x17 ,0x0 ,HDA_INPUT ), + HDA_CODEC_MUTE("PCM Switch", 0x17, 0x0, HDA_INPUT),
Quoted 8 lines
sound/pci/hda/patch_conexant.c static const struct snd_kcontrol_new cxt5045_test_mixer[] = { · line 954
Quoted 6 lines
sound/pci/hda/patch_conexant.c +6
-0+HDA_CODEC_VOLUME ("MIC1 pin Volume" ,0x17 ,0x1 ,HDA_INPUT ), +HDA_CODEC_MUTE ("MIC1 pin Switch" ,0x17 ,0x1 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("LINE1 pin Volume" ,0x17 ,0x2 ,HDA_INPUT ), +HDA_CODEC_MUTE ("LINE1 pin Switch" ,0x17 ,0x2 ,HDA_INPUT ), +HDA_CODEC_VOLUME ("HP-OUT pin Volume" ,0x17 ,0x3 ,HDA_INPUT ), + HDA_CODEC_MUTE("HP-OUT pin Switch", 0x17, 0x3, HDA_INPUT),Eh, is there a loopback control from the headphone?
The HP pin can be used as an input on many codecs indeed.
Takashi
Quoted 38 lines
Quoted 31 lines
sound/pci/hda/patch_conexant.c +5
-7+HDA_CODEC_VOLUME ("CD pin Volume" ,0x17 ,0x4 ,HDA_INPUT ), + HDA_CODEC_MUTE("CD pin Switch", 0x17, 0x4, HDA_INPUT), { .iface =SNDRV_CTL_ELEM_IFACE_MIXER , .name = "Input Source",@@ -985,10 +985,6 @@ static const struct hda_verb cxt5045_test_init_verbs[] = { {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, {0x18, AC_VERB_SET_DIGI_CONVERT_1, 0}, -/* Start with output sum widgets muted and their output gains at min */ - {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, - {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, -/* Unmute retasking pin widget output buffers since the default * state appears to be output. As the pin mode is changed by the * user the pin mode control will take care of enabling the pin's @@ -1003,11 +999,11 @@ static const struct hda_verb cxt5045_test_init_verbs[] = {/* Set ADC connection select to match default mixer setting (mic1 * pin) */ - {0x1a, AC_VERB_SET_CONNECT_SEL, 0x00}, - {0x17, AC_VERB_SET_CONNECT_SEL, 0x00}, + {0x1a, AC_VERB_SET_CONNECT_SEL, 0x01}, + {0x17, AC_VERB_SET_CONNECT_SEL, 0x01},/* Mute all inputs to mixer widget (even unconnected ones) */ - {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, /* Mixer pin */ + {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, /* Mixer */ {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, /* Mic1 pin */ {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)}, /* Line pin */ {0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)}, /* HP pin */Signature · 2 lines
David Henningsson, Canonical Ltd. http://launchpad.net/~diwic