Bug 112851

Summary: No Sound Creative Soundblaster ZxR [1102:0012]
Product: Drivers Reporter: Mikhail (mikhail.v.gavrilov)
Component: Sound(ALSA)Assignee: Jaroslav Kysela (perex)
Status: NEW ---    
Severity: normal CC: dhiru.kholia, info, luke, otte, robink, roothorick, shtumff, sowd237, superquad.vortex2
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 4.4.2 Subsystem:
Regression: No Bisected commit-id:
Attachments: alsa-info.txt

Description Mikhail 2016-02-22 12:21:56 UTC
Created attachment 204311 [details]
alsa-info.txt

$ uname -r
4.4.2-300.fc23.x86_64+debug

$ lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation 4th Gen Core Processor DRAM Controller [8086:0c00] (rev 06)
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
00:14.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI [8086:8c31] (rev 04)
00:16.0 Communication controller [0780]: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 [8086:8c3a] (rev 04)
00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller [8086:8c20] (rev 04)
00:1c.0 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 [8086:8c10] (rev d4)
00:1c.2 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 [8086:8c14] (rev d4)
00:1c.3 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 [8086:8c16] (rev d4)
00:1c.4 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #5 [8086:8c18] (rev d4)
00:1f.0 ISA bridge [0601]: Intel Corporation Z87 Express LPC Controller [8086:8c44] (rev 04)
00:1f.2 SATA controller [0106]: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] [8086:8c02] (rev 04)
00:1f.3 SMBus [0c05]: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller [8086:8c22] (rev 04)
02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 06)
03:00.0 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e] (rev 41)
05:00.0 Audio device [0403]: Creative Labs SB Recon3D [1102:0012] (rev 01)

1. When select "Analog Output - SB Recon3D" in Pulse Audio Audio panel not have sound from analog output (RCA) and headphone output (Jack 6.3).
2. When select "Microphone - SB Recon3D" not see signal from Accessible Audio Control Module which plugged to sound card.
Comment 1 Raymond 2016-02-24 02:21:21 UTC
3.615364] snd_hda_codec_ca0132 hdaudioC2D1: autoconfig for CA0132: line_outs=1 (0xd/0x0/0x0/0x0/0x0) type:speaker [ 3.615368] snd_hda_codec_ca0132 hdaudioC2D1: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) [ 3.615370] snd_hda_codec_ca0132 hdaudioC2D1: hp_outs=0 (0x0/0x0/0x0/0x0/0x0) [ 3.615372] snd_hda_codec_ca0132 hdaudioC2D1: mono: mono_out=0x0 [ 3.615374] snd_hda_codec_ca0132 hdaudioC2D1: inputs: [ 3.615376] snd_hda_codec_ca0132 hdaudioC2D1: Mic=0x12 [ 3.621740] snd_hda_intel 0000:05:00.0: Direct firmware load for ctefx.bin failed with error -2
Comment 2 Patrick 2016-05-14 15:43:04 UTC
http://www.alsa-project.org/db/?f=3948b26d89d5a52b285e6ae468e36942ea7e2ad8

Also got no sound, no matter what I do, shouldn't this be fixed by this: https://bugzilla.kernel.org/show_bug.cgi?id=55541?
Comment 3 Raymond 2016-05-15 09:21:56 UTC
[    3.621740] snd_hda_intel 0000:05:00.0: Direct firmware load for ctefx.bin failed with error -2
Comment 4 Raymond 2016-05-15 09:27:11 UTC
seem have two ca0132 codecs



    
Codec: Creative CA0132
Address: 1
AFG Function Id: 0x1 (unsol 1)
Vendor Id: 0x11020011
Subsystem Id: 0x11020033
Revision Id: 0x100918


Codec: Creative Generic
Address: 2
AFG Function Id: 0x1 (unsol 1)
Vendor Id: 0x11020011
Subsystem Id: 0x1102003f
Revision Id: 0x100918


the druver create duplicate controls



   4.734996] snd_hda_intel 0000:02:00.0: control 2:0:0:Master Playback Volume:0 is already present
[    4.735001] snd_hda_intel 0000:02:00.0: control 2:0:0:Master Playback Switch:0 is already present
[    4.735003] snd_hda_intel 0000:02:00.0: control 2:0:0:Capture Volume:0 is already present
[    4.735004] snd_hda_intel 0000:02:00.0: control 2:0:0:Capture Switch:0 is already present
[    4.735005] snd_hda_intel 0000:02:00.0: control 2:0:0:Analog-Mic2 Capture Volume:0 is already present
[    4.735007] snd_hda_intel 0000:02:00.0: control 2:0:0:Analog-Mic2 Capture Switch:0 is already present
[    4.735008] snd_hda_intel 0000:02:00.0: control 2:0:0:What U Hear Capture Volume:0 is already present
[    4.735009] snd_hda_intel 0000:02:00.0: control 2:0:0:What U Hear Capture Switch:0 is already present
[    4.735011] snd_hda_intel 0000:02:00.0: control 2:0:0:Mic1-Boost (30dB) Capture Switch:0 is already present
[    4.735012] snd_hda_intel 0000:02:00.0: control 2:0:0:HP/Speaker Playback Switch:0 is already present
[    4.735013] snd_hda_intel 0000:02:00.0: control 2:0:0:AMic1/DMic Capture Switch:0 is already present
[    4.735015] snd_hda_intel 0000:02:00.0: control 2:0:0:HP/Speaker Auto Detect Playback Switch:0 is already present
[    4.735016] snd_hda_intel 0000:02:00.0: control 2:0:0:AMic1/DMic Auto Detect Capture Switch:0 is already present
[    4.735017] snd_hda_intel 0000:02:00.0: control 2:0:0:Surround Playback Switch:0 is already present
Comment 5 Raymond 2016-05-15 09:36:38 UTC
try disconect the daugther board to find our which ca0132 is on the main sound card

you need to modify driver to ignore those analog pin on the daugther board
Comment 7 Mikhail 2016-05-15 12:03:36 UTC
(In reply to Raymond from comment #5)
> try disconect the daugther board to find our which ca0132 is on the main
> sound card
Don't understand. I am not installed daugther board in my system.
Comment 8 Raymond 2016-05-15 14:41:33 UTC
http://support.creative.com/kb/ShowArticle.aspx?sid=112337

As there are two ca0132 codecs detected , you have to specify probe_mask to probe one of them but not both
Comment 9 Raymond 2016-05-15 14:49:50 UTC
As two ca0132 codecs have different subsystem id, it is possible to only enable analog pin on one and the digital pin on the other codec



Subsystem Id: 0x11020033
Revision Id: 0x100918


Subsystem Id: 0x1102003f
Revision Id: 0x100918
Comment 10 Patrick 2016-05-15 15:34:45 UTC
Output with disconnected daughter board:
http://www.alsa-project.org/db/?f=faf934a02535b47660c4785efe2011f543655677
Comment 11 Mikhail 2016-05-15 15:45:05 UTC
And my output with disconnected daughter board
http://www.alsa-project.org/db/?f=1396d5e7096b9cae4500dd37c801ee218d015a72
Comment 12 Raymond 2016-05-16 07:27:22 UTC
https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/pci/hda/patch_ca0132.c

you need to define two macro for zxr and daugtherboard

#define is_zxr()  (codec->subsystem_id == 0x11020033)
#define is_daughterboard() (codec->subsystem_id == 0x1102003f)


static int ca0132_build_controls(struct hda_codec *codec)
{{
...
+     +if (!is_daugtherboard()) {
...
  /* build those analog controls) */

...
*}
+     if (is_zxr())
+     return;

       if (spec->dig_out) {
		err = snd_hda_create_spdif_out_ctls(codec, spec->dig_out,
						    spec->dig_out);
		if (err < 0)
			return err;
		err = snd_hda_create_spdif_share_sw(codec, &spec->multiout);
		if (err < 0)
			return err;
		/* spec->multiout.share_spdif = 1; */
	}

	if (spec->dig_in) {
		err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in);
		if (err < 0)
			return err;
	}

}





static int ca0132_build_pcms(struct hda_codec *codec)
}
+     +if (!is_daugtherboard()) {
...
  /* build those analog pcms */

...
*}


-	if (!spec->dig_out && !spec->dig_in)
+	if ((!spec->dig_out && !spec->dig_in) || is_zxr())
		return 0;		


}
{
Comment 13 Raymond 2016-05-17 01:08:03 UTC
static int ca0132_build_controls(struct hda_codec *codec)
{
	struct ca0132_spec *spec = codec->spec;
	int i, num_fx;
	int err = 0;

+       if (is_daughterboard())
+           goto skip_analog_controls;

	/* Add Mixer controls */
	for (i = 0; i < spec->num_mixers; i++) {
		err = snd_hda_add_new_ctls(codec, spec->mixers[i]);
		if (err < 0)
			return err;
	}

	/* Add in and out effects controls.
	 * VoiceFX, PE and CrystalVoice are added separately.
	 */
	num_fx = OUT_EFFECTS_COUNT + IN_EFFECTS_COUNT;
	for (i = 0; i < num_fx; i++) {
		err = add_fx_switch(codec, ca0132_effects[i].nid,
				    ca0132_effects[i].name,
				    ca0132_effects[i].direct);
		if (err < 0)
			return err;
	}

	err = add_fx_switch(codec, PLAY_ENHANCEMENT, "PlayEnhancement", 0);
	if (err < 0)
		return err;

	err = add_fx_switch(codec, CRYSTAL_VOICE, "CrystalVoice", 1);
	if (err < 0)
		return err;

	add_voicefx(codec);

#ifdef ENABLE_TUNING_CONTROLS
	add_tuning_ctls(codec);
#endif

+skip_analog_controls:
+ /* need hack so that only create analog jack detection kctls for zxr and digital jack kctls for daughterboard */

	err = snd_hda_jack_add_kctls(codec, &spec->autocfg);
	if (err < 0)
		return err;

+       if (zxr())
+              return 0;

	if (spec->dig_out) {
		err = snd_hda_create_spdif_out_ctls(codec, spec->dig_out,
						    spec->dig_out);
		if (err < 0)
			return err;
		err = snd_hda_create_spdif_share_sw(codec, &spec->multiout);
		if (err < 0)
			return err;
		/* spec->multiout.share_spdif = 1; */
	}

	if (spec->dig_in) {
		err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in);
		if (err < 0)
			return err;
	}
	return 0;
}
Comment 14 Raymond 2016-05-17 08:54:55 UTC
do those TRS jacks can be detected or not ?

I guess those RCA jacks (Lime ut and Aux in) does not support jack dectection 


hdajacksensetest -a
Comment 15 Raymond 2016-05-18 01:50:12 UTC
         struct auto_pin_cfg temp_cfg;



skip_analog_controls:
       
         memcpy(&temp_cfg, &spec->autocfg, sizeof(struct auto_pin_cfg));
         switch(codec->core.subsystem_id){
         case 0x11020033:


	err = snd_hda_jack_add_kctls(codec, &spec->autocfg);
	if (err < 0)
		return err;
Comment 16 Raymond 2016-05-18 01:57:54 UTC
         struct auto_pin_cfg temp_cfg;



skip_analog_controls:
       
         switch(codec->core.subsystem_id){
         case 0x11020033:
              memcpy(&temp_cfg, &spec->autocfg, sizeof(struct auto_pin_cfg));
              spec->autocfg.dig_outs = 0;
              spec->autocfg.dig_in_pin = 0;
              break;
         case 0x1102003f:        
              memcpy(&temp_cfg, &spec->autocfg, sizeof(struct auto_pin_cfg));
              spec->autocfg.num_inputs = 0;
              spec->autocfg.line_outs = 0;
              spec->autocfg.speaker_outs = 0;
              spec->autocfg.hp_outs = 0;
              break;
        };
	err = snd_hda_jack_add_kctls(codec, &spec->autocfg);
	if (err < 0)
		return err;

         switch(codec->core.subsystem_id){
         case 0x11020033:
         case 0x1102003f:
              memcpy(&spec->autocfg, &temp_cfg,  sizeof(struct auto_pin_cfg));
              break;
        };
Comment 17 Mikhail 2016-05-18 02:43:13 UTC
# hdajacksensetest -a
Pin 0x05 ( Digital Out, HDMI): present = Yes
Pin 0x06 ( Digital Out, HDMI): present = No
Pin 0x07 ( Digital Out, HDMI): present = No
Comment 18 Raymond 2016-05-18 05:16:50 UTC
you have to specify card number if your ca0106 is not card 0

[    2.624712] snd_hda_intel 0000:05:00.0: Direct firmware load for ctefx.bin failed with error -2

do you install firmware ?


[    2.878946] snd_hda_codec_ca0132 hdaudioC1D1: ca0132 DSP downloaded and running


do windows driver use two different firmware for the two codecs ?
Comment 19 Patrick 2016-05-18 11:08:53 UTC
(In reply to Raymond from comment #16)
>          struct auto_pin_cfg temp_cfg;
> 
> 
> 
> skip_analog_controls:
>        
>          switch(codec->core.subsystem_id){
>          case 0x11020033:
>               memcpy(&temp_cfg, &spec->autocfg, sizeof(struct auto_pin_cfg));
>               spec->autocfg.dig_outs = 0;
>               spec->autocfg.dig_in_pin = 0;
>               break;
>          case 0x1102003f:        
>               memcpy(&temp_cfg, &spec->autocfg, sizeof(struct auto_pin_cfg));
>               spec->autocfg.num_inputs = 0;
>               spec->autocfg.line_outs = 0;
>               spec->autocfg.speaker_outs = 0;
>               spec->autocfg.hp_outs = 0;
>               break;
>         };
>       err = snd_hda_jack_add_kctls(codec, &spec->autocfg);
>       if (err < 0)
>               return err;
> 
>          switch(codec->core.subsystem_id){
>          case 0x11020033:
>          case 0x1102003f:
>               memcpy(&spec->autocfg, &temp_cfg,  sizeof(struct
> auto_pin_cfg));
>               break;
>         };

Is it working for you with the snippets you posted? (if so, could you upload a complete patch file so I can test it?)
Comment 20 Raymond 2016-05-18 15:17:51 UTC
git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/Documentation/sound/alsa/ALSA-Configuration.txt


You can specify probe_mask=1 or probe_mask=2 to load only one ca0132 to find out whether analog and digital work on different codec

http://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/hda/patch_ca0132.c?id=fe14f39e88c8ac16d0a051f8444a2294f8cb358c


Your pins seem different from those chrome pixel and alienware
Comment 21 Raymond 2016-05-19 02:52:50 UTC
/sys/class/sound/hwC1D1/init_pin_configs:
0x0b 0x01014010
0x0c 0x014580f0
0x0d 0x014570f0
0x0e 0x01c530f0
0x0f 0x0221401f
0x10 0x02216011
0x11 0x02012014
0x12 0x37a791f0
0x13 0x908700f0
0x18 0x500000f0



/sys/class/sound/hwC1D2/init_pin_configs:
0x0b 0x01014010
0x0c 0x014580f0
0x0d 0x014570f0
0x0e 0x01c530f0
0x0f 0x0221401f
0x10 0x02216011
0x11 0x02012014
0x12 0x37a791f0
0x13 0x908700f0
0x18 0x500000f0



[    4.741787] snd_hda_codec_generic hdaudioC1D2: autoconfig for Generic: line_outs=2 (0xb/0x11/0x0/0x0/0x0) type:line
[    4.741788] snd_hda_codec_generic hdaudioC1D2:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    4.741789] snd_hda_codec_generic hdaudioC1D2:    hp_outs=2 (0x10/0xf/0x0/0x0/0x0)
[    4.741790] snd_hda_codec_generic hdaudioC1D2:    mono: mono_out=0x0
[    4.741790] snd_hda_codec_generic hdaudioC1D2:    dig-out=0xc/0xd
[    4.741791] snd_hda_codec_generic hdaudioC1D2:    inputs:
[    4.741792] snd_hda_codec_generic hdaudioC1D2:      Mic=0x12
[    4.741793] snd_hda_codec_generic hdaudioC1D2:      Line=0x13
[    4.741793] snd_hda_codec_generic hdaudioC1D2:    dig-in=0xe


some pin complex with wcaps Digital have analog type but some pin complex wcaps withouut Digital are with SPDIF
Comment 22 Raymond 2016-05-19 05:25:20 UTC
those invalid pin should be ignored by auto parser 


Node 0x0d [Pin Complex] wcaps 0x400501: Stereo
  Pincap 0x00000010: OUT
  Pin Default 0x014570f0: [Jack] SPDIF Out at Ext Rear
    Conn = Optical, Color = Yellow
    DefAssociation = 0xf, Sequence = 0x0
  Pin-ctls: 0x40: OUT
  Power states:  D0 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x06

Node 0x13 [Pin Complex] wcaps 0x400681: Stereo Digital
  Pincap 0x00000020: IN
  Pin Default 0x908700f0: [Fixed] Line In at Int N/A
    Conn = Analog, Color = Unknown
    DefAssociation = 0xf, Sequence = 0x0
  Pin-ctls: 0x20: IN
  Unsolicited: tag=02, enabled=1
  Power states:  D0 D3 EPSS
  Power: setting=D0, actual=D0
Comment 23 Raymond 2016-05-19 09:13:22 UTC

/sys/class/sound/hwC2D1/init_pin_configs:
0x0b 0x01014010
0x0c 0x014580f0
0x0d 0x014570f0
0x0e 0x01c530f0
0x0f 0x0221401f
0x10 0x02216011
0x11 0x02012014
0x12 0x37a791f0
0x13 0x908700f0
0x18 0x500000f0


    2.620767] snd_hda_codec_ca0132 hdaudioC2D1: autoconfig for CA0132: line_outs=1 (0xd/0x0/0x0/0x0/0x0) type:speaker
[    2.620770] snd_hda_codec_ca0132 hdaudioC2D1:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    2.620771] snd_hda_codec_ca0132 hdaudioC2D1:    hp_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    2.620773] snd_hda_codec_ca0132 hdaudioC2D1:    mono: mono_out=0x0
[    2.620774] snd_hda_codec_ca0132 hdaudioC2D1:    inputs:
[    2.620776] snd_hda_codec_ca0132 hdaudioC2D1:      Mic=0x12


strange that some pins are ignored by auto parser (e.g. those digital pins 0x0d and 0x0e


Node 0x0b [Pin Complex] wcaps 0x400581: Stereo
  Pincap 0x00010014: OUT EAPD Detect
  EAPD 0x2: EAPD
  Pin Default 0x01014010: [Jack] Line Out at Ext Rear
    Conn = 1/8, Color = Green
    DefAssociation = 0x1, Sequence = 0x0
  Pin-ctls: 0x40: OUT
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x02

Node 0x0d [Pin Complex] wcaps 0x400501: Stereo
  Pincap 0x00000010: OUT
  Pin Default 0x014570f0: [Jack] SPDIF Out at Ext Rear
    Conn = Optical, Color = Yellow
    DefAssociation = 0xf, Sequence = 0x0
  Pin-ctls: 0x00:
  Power states:  D0 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1





Node 0x0f [Pin Complex] wcaps 0x400581: Stereo
  Pincap 0x0000001c: OUT HP Detect
  Pin Default 0x0221401f: [Jack] HP Out at Ext Front
    Conn = 1/8, Color = Green
    DefAssociation = 0x1, Sequence = 0xf
  Pin-ctls: 0x00:
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x02
Node 0x10 [Pin Complex] wcaps 0x400581: Stereo
  Pincap 0x0000001c: OUT HP Detect
  Pin Default 0x02216011: [Jack] HP Out at Ext Front
    Conn = 1/8, Color = Orange
    DefAssociation = 0x1, Sequence = 0x1
  Pin-ctls: 0x00:
  Unsolicited: tag=01, enabled=1
  Power states:  D0 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x03


ode 0x11 [Pin Complex] wcaps 0x40058b: Stereo Amp-In
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Pincap 0x00003734: IN OUT Detect
    Vref caps: HIZ 50 GRD 80 100
  Pin Default 0x02012014: [Jack] Line Out at Ext Front
    Conn = 1/8, Color = Grey
    DefAssociation = 0x1, Sequence = 0x4
  Pin-ctls: 0x24: IN VREF_80
  Unsolicited: tag=00, enabled=0
  Power states:  D0 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 1
     0x04
Node 0x12 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
  Control: name="Mic1-Boost (30dB) Capture Switch", index=0, device=0
    ControlAmp: chs=1, dir=In, idx=0, ofs=0
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Pincap 0x00003724: IN Detect
    Vref caps: HIZ 50 GRD 80 100
  Pin Default 0x37a791f0: [Jack] Mic at Oth Mobile-In
    Conn = Analog, Color = Pink
    DefAssociation = 0xf, Sequence = 0x0
    Misc = NO_PRESENCE
  Pin-ctls: 0x24: IN VREF_80
  Unsolicited: tag=02, enabled=1
  Power states:  D0 D3 EPSS
  Power: setting=D0, actual=D0
Comment 24 Raymond 2016-05-20 01:24:06 UTC
you need to define QUIRK_ZXR 


enum {
	QUIRK_NONE,
	QUIRK_ALIENWARE,
+       QUIRK_ZXR,
};


static const struct snd_pci_quirk ca0132_quirks[] = {
	SND_PCI_QUIRK(0x1028, 0x0685, "Alienware 15 2CRET015", QUIRK_ALIENWARE),
	SND_PCI_QUIRK(0x1028, 0x0688, "Alienware 17 2015", QUIRK_ALIENWARE),
+	SND_PCI_QUIRK(0x1102, 0x0010, "Creative ZXR", QUIRK_ZXR),
	{}
};

-	if (spec->quirk == QUIRK_ALIENWARE) {
+       switch(spec->quirk) {
+       case QUIRK_ZXR:
		codec_dbg(codec, "ca0132_config: QUIRK_ALIENWARE applied.\n");
		snd_hda_apply_pincfgs(codec, alienware_pincfgs);

		spec->num_outputs = 2;
		spec->out_pins[0] = 0x0b; /* speaker out */
		spec->out_pins[1] = 0x0f;
		spec->shared_out_nid = 0x2;
		spec->unsol_tag_hp = 0x0f;

		spec->adcs[0] = 0x7; /* digital mic / analog mic1 */
		spec->adcs[1] = 0x8; /* analog mic2 */
		spec->adcs[2] = 0xa; /* what u hear */

		spec->num_inputs = 3;
		spec->input_pins[0] = 0x12;
		spec->input_pins[1] = 0x11;
		spec->input_pins[2] = 0x13;
		spec->shared_mic_nid = 0x7;
		spec->unsol_tag_amic1 = 0x11;
+               break;  
+       case QUIRK_ZXR:
+      /* fix those nids */
+               break;
-	} else {
		spec->num_outputs = 2;
		spec->out_pins[0] = 0x0b; /* speaker out */
		spec->out_pins[1] = 0x10; /* headphone out */
		spec->shared_out_nid = 0x2;
		spec->unsol_tag_hp = spec->out_pins[1];

		spec->adcs[0] = 0x7; /* digital mic / analog mic1 */
		spec->adcs[1] = 0x8; /* analog mic2 */
		spec->adcs[2] = 0xa; /* what u hear */

		spec->num_inputs = 3;
		spec->input_pins[0] = 0x12;
		spec->input_pins[1] = 0x11;
		spec->input_pins[2] = 0x13;
		spec->shared_mic_nid = 0x7;
		spec->unsol_tag_amic1 = spec->input_pins[0];

		/* SPDIF I/O */
		spec->dig_out = 0x05;
		spec->multiout.dig_out_nid = spec->dig_out;
		cfg->dig_out_pins[0] = 0x0c;
		cfg->dig_outs = 1;
		cfg->dig_out_type[0] = HDA_PCM_TYPE_SPDIF;
		spec->dig_in = 0x09;
		cfg->dig_in_pin = 0x0e;
		cfg->dig_in_type = HDA_PCM_TYPE_SPDIF;
+               break;
	}
Comment 25 Raymond 2016-05-20 02:49:52 UTC
how do you test since there are two controls for output which need a correct HP pin for jack detection

Simple mixer control 'HP/Speaker',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'HP/Speaker Auto Detect',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Comment 26 Raymond 2016-05-20 02:55:36 UTC
you need to find out hp pin and assign it to  spec->unsol_tag_hp)



codec_dbg(codec, "ca0132_select_out\n");

	snd_hda_power_up_pm(codec);

	auto_jack = spec->vnode_lswitch[VNID_HP_ASEL - VNODE_START_NID];

	if (auto_jack)
		jack_present = snd_hda_jack_detect(codec, spec->unsol_tag_hp);
	else
		jack_present =
			spec->vnode_lswitch[VNID_HP_SEL - VNODE_START_NID];

	if (jack_present)
		spec->cur_out_type = HEADPHONE_OUT;
	else
		spec->cur_out_type = SPEAKER_OUT;
Comment 27 Patrick 2016-06-23 09:24:17 UTC
Any news on this? Seems still not working on latest mainline.
Comment 28 wisherfrost 2016-06-25 09:43:08 UTC
mint 17.3 dont work =(
Comment 29 roothorick 2017-01-19 04:41:35 UTC
Here's a curveball for you. My card is showing up as 1102:0012:

04:00.0 Audio device [0403]: Creative Labs Sound Core3D [Sound Blaster Recon3D / Z-Series] [1102:0012] (rev 01)

But it is NOT a ZxR; it's just a base model Z. alsa-info here:

http://www.alsa-project.org/db/?f=dddb02142a9eb78fdb7bb8e3c9ccfc29429678a9

New bug, or include it here?
Comment 30 Mikhail 2017-01-19 04:45:01 UTC
$ sudo lspci -v
00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06)
	Subsystem: Gigabyte Technology Co., Ltd Device 5000
	Flags: bus master, fast devsel, latency 0
	Capabilities: [e0] Vendor Specific Information: Len=0c <?>
	Kernel driver in use: hsw_uncore

00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06) (prog-if 00 [VGA controller])
	Subsystem: Gigabyte Technology Co., Ltd Device d000
	Flags: bus master, fast devsel, latency 0, IRQ 29
	Memory at f7800000 (64-bit, non-prefetchable) [size=4M]
	Memory at e0000000 (64-bit, prefetchable) [size=256M]
	I/O ports at f000 [size=64]
	[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
	Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
	Capabilities: [d0] Power Management version 2
	Capabilities: [a4] PCI Advanced Features
	Kernel driver in use: i915
	Kernel modules: i915

00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
	Subsystem: Intel Corporation Device 2010
	Flags: bus master, fast devsel, latency 0, IRQ 32
	Memory at f7e14000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [50] Power Management version 2
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit-
	Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 04) (prog-if 30 [XHCI])
	Subsystem: Gigabyte Technology Co., Ltd Device 5007
	Flags: bus master, medium devsel, latency 0, IRQ 27
	Memory at f7e00000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [70] Power Management version 2
	Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
	Kernel driver in use: xhci_hcd

00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
	Subsystem: Gigabyte Technology Co., Ltd Device 1c3a
	Flags: bus master, fast devsel, latency 0, IRQ 30
	Memory at f7e1c000 (64-bit, non-prefetchable) [size=16]
	Capabilities: [50] Power Management version 3
	Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Kernel driver in use: mei_me
	Kernel modules: mei_me

00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 04)
	Subsystem: Gigabyte Technology Co., Ltd Device a002
	Flags: bus master, fast devsel, latency 0, IRQ 31
	Memory at f7e10000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [50] Power Management version 2
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
	Capabilities: [100] Virtual Channel
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d4) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0, IRQ 16
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	Capabilities: [40] Express Root Port (Slot-), MSI 00
	Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
	Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 5001
	Capabilities: [a0] Power Management version 3
	Kernel driver in use: pcieport
	Kernel modules: shpchp

00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d4) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0, IRQ 18
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	I/O behind bridge: 0000e000-0000efff
	Memory behind bridge: f7d00000-f7dfffff
	Prefetchable memory behind bridge: 00000000f0000000-00000000f00fffff
	Capabilities: [40] Express Root Port (Slot+), MSI 00
	Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
	Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 5001
	Capabilities: [a0] Power Management version 3
	Kernel driver in use: pcieport
	Kernel modules: shpchp

00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (rev d4) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0, IRQ 19
	Bus: primary=00, secondary=03, subordinate=04, sec-latency=0
	Capabilities: [40] Express Root Port (Slot+), MSI 00
	Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
	Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 5001
	Capabilities: [a0] Power Management version 3
	Kernel driver in use: pcieport
	Kernel modules: shpchp

00:1c.4 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #5 (rev d4) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0, IRQ 16
	Bus: primary=00, secondary=05, subordinate=05, sec-latency=0
	Memory behind bridge: f7c00000-f7cfffff
	Capabilities: [40] Express Root Port (Slot+), MSI 00
	Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
	Capabilities: [90] Subsystem: Gigabyte Technology Co., Ltd Device 5001
	Capabilities: [a0] Power Management version 3
	Kernel driver in use: pcieport
	Kernel modules: shpchp

00:1f.0 ISA bridge: Intel Corporation Z87 Express LPC Controller (rev 04)
	Subsystem: Gigabyte Technology Co., Ltd Device 5001
	Flags: bus master, medium devsel, latency 0
	Capabilities: [e0] Vendor Specific Information: Len=0c <?>
	Kernel driver in use: lpc_ich
	Kernel modules: lpc_ich

00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 04) (prog-if 01 [AHCI 1.0])
	Subsystem: Gigabyte Technology Co., Ltd Device b005
	Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 26
	I/O ports at f0b0 [size=8]
	I/O ports at f0a0 [size=4]
	I/O ports at f090 [size=8]
	I/O ports at f080 [size=4]
	I/O ports at f060 [size=32]
	Memory at f7e1a000 (32-bit, non-prefetchable) [size=2K]
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
	Capabilities: [70] Power Management version 3
	Capabilities: [a8] SATA HBA v1.0
	Kernel driver in use: ahci

00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 04)
	Subsystem: Gigabyte Technology Co., Ltd Device 5001
	Flags: medium devsel, IRQ 18
	Memory at f7e19000 (64-bit, non-prefetchable) [size=256]
	I/O ports at f040 [size=32]
	Kernel driver in use: i801_smbus
	Kernel modules: i2c_i801

02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
	Subsystem: Gigabyte Technology Co., Ltd Onboard Ethernet
	Flags: bus master, fast devsel, latency 0, IRQ 28
	I/O ports at e000 [size=256]
	Memory at f7d00000 (64-bit, non-prefetchable) [size=4K]
	Memory at f0000000 (64-bit, prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
	Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [70] Express Endpoint, MSI 01
	Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
	Capabilities: [d0] Vital Product Data
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Virtual Channel
	Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
	Kernel driver in use: r8169
	Kernel modules: r8169

03:00.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 41) (prog-if 01 [Subtractive decode])
	Flags: bus master, fast devsel, latency 0, IRQ 10
	Bus: primary=03, secondary=04, subordinate=04, sec-latency=32
	Capabilities: [90] Power Management version 2
	Capabilities: [a0] Subsystem: Gigabyte Technology Co., Ltd Device 8892

05:00.0 Audio device: Creative Labs Sound Core3D [Sound Blaster Recon3D / Z-Series] (rev 01)
	Subsystem: Creative Labs Device 0033
	Flags: bus master, fast devsel, latency 0, IRQ 16
	Memory at f7c04000 (64-bit, non-prefetchable) [size=16K]
	Memory at f7c00000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable+ 64bit+
	Capabilities: [70] Express Endpoint, MSI 00
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Virtual Channel
	Capabilities: [170] Device Serial Number 00-00-00-00-00-00-00-00
	Capabilities: [180] Power Budgeting <?>
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

Any idea why for Creative ZxR try used snd_hda_intel driver?
Comment 31 Kirill 2017-05-02 08:08:11 UTC
Quite an old bug, can someone fix it?
Comment 32 Mikhail 2017-07-05 16:37:50 UTC
$ ls -la /lib/firmware | grep ct
-rw-r--r--.  1 root root  582440 июн 22 17:55 ct2fw-3.2.1.1.bin
-rw-r--r--.  1 root root  583688 июн 22 17:55 ct2fw-3.2.3.0.bin
-rw-r--r--.  1 root root  584216 июн 22 17:55 ct2fw-3.2.5.1.bin
-rw-r--r--.  1 root root  537160 июн 22 17:55 ctfw-3.2.1.1.bin
-rw-r--r--.  1 root root  538712 июн 22 17:55 ctfw-3.2.3.0.bin
-rw-r--r--.  1 root root  539144 июн 22 17:55 ctfw-3.2.5.1.bin
drwxr-xr-x.  2 root root    4096 июн 25 15:43 ti-connectivity
-rw-r--r--.  1 root root    7614 июн 22 17:55 tr_smctr.bin