aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_codec.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2009-02-11 05:35:15 -0500
committerTakashi Iwai <tiwai@suse.de>2009-02-11 18:04:19 -0500
commit0852d7a654f75d22a3c09fd7da4a3551bbb37740 (patch)
tree36cb4ec6ddd8a5b2ffa06e4d951282b3435b371b /sound/pci/hda/hda_codec.c
parent32d2c7fa1344ddf51886eddf31e228d139501dc6 (diff)
ALSA: hda - Detect multiple digital-out pins
Detect multiple digital-out pins in snd_hda_parse_pin_defconfig(). The dig_out_pin and dig_out_type fields become arrays. The codec parser still doesn't use this multiple pins detection, though. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_codec.c')
-rw-r--r--sound/pci/hda/hda_codec.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 95f10aec7a06..29eeb748561d 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -3423,11 +3423,13 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec,
3423 break; 3423 break;
3424 case AC_JACK_SPDIF_OUT: 3424 case AC_JACK_SPDIF_OUT:
3425 case AC_JACK_DIG_OTHER_OUT: 3425 case AC_JACK_DIG_OTHER_OUT:
3426 cfg->dig_out_pin = nid; 3426 if (cfg->dig_outs >= ARRAY_SIZE(cfg->dig_out_pins))
3427 if (loc == AC_JACK_LOC_HDMI) 3427 continue;
3428 cfg->dig_out_type = HDA_PCM_TYPE_HDMI; 3428 cfg->dig_out_pins[cfg->dig_outs] = nid;
3429 else 3429 cfg->dig_out_type[cfg->dig_outs] =
3430 cfg->dig_out_type = HDA_PCM_TYPE_SPDIF; 3430 (loc == AC_JACK_LOC_HDMI) ?
3431 HDA_PCM_TYPE_HDMI : HDA_PCM_TYPE_SPDIF;
3432 cfg->dig_outs++;
3431 break; 3433 break;
3432 case AC_JACK_SPDIF_IN: 3434 case AC_JACK_SPDIF_IN:
3433 case AC_JACK_DIG_OTHER_IN: 3435 case AC_JACK_DIG_OTHER_IN:
@@ -3541,8 +3543,9 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec,
3541 cfg->hp_pins[1], cfg->hp_pins[2], 3543 cfg->hp_pins[1], cfg->hp_pins[2],
3542 cfg->hp_pins[3], cfg->hp_pins[4]); 3544 cfg->hp_pins[3], cfg->hp_pins[4]);
3543 snd_printd(" mono: mono_out=0x%x\n", cfg->mono_out_pin); 3545 snd_printd(" mono: mono_out=0x%x\n", cfg->mono_out_pin);
3544 if (cfg->dig_out_pin) 3546 if (cfg->dig_outs)
3545 snd_printd(" dig-out=0x%x\n", cfg->dig_out_pin); 3547 snd_printd(" dig-out=0x%x/0x%x\n",
3548 cfg->dig_out_pins[0], cfg->dig_out_pins[1]);
3546 snd_printd(" inputs: mic=0x%x, fmic=0x%x, line=0x%x, fline=0x%x," 3549 snd_printd(" inputs: mic=0x%x, fmic=0x%x, line=0x%x, fline=0x%x,"
3547 " cd=0x%x, aux=0x%x\n", 3550 " cd=0x%x, aux=0x%x\n",
3548 cfg->input_pins[AUTO_PIN_MIC], 3551 cfg->input_pins[AUTO_PIN_MIC],