diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-02-11 11:35:15 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-02-12 00:04:19 +0100 |
commit | 0852d7a654f75d22a3c09fd7da4a3551bbb37740 (patch) | |
tree | 36cb4ec6ddd8a5b2ffa06e4d951282b3435b371b /sound/pci/hda/hda_codec.c | |
parent | 32d2c7fa1344ddf51886eddf31e228d139501dc6 (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.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 95f10aec7a0..29eeb748561 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, break; case AC_JACK_SPDIF_OUT: case AC_JACK_DIG_OTHER_OUT: - cfg->dig_out_pin = nid; - if (loc == AC_JACK_LOC_HDMI) - cfg->dig_out_type = HDA_PCM_TYPE_HDMI; - else - cfg->dig_out_type = HDA_PCM_TYPE_SPDIF; + if (cfg->dig_outs >= ARRAY_SIZE(cfg->dig_out_pins)) + continue; + cfg->dig_out_pins[cfg->dig_outs] = nid; + cfg->dig_out_type[cfg->dig_outs] = + (loc == AC_JACK_LOC_HDMI) ? + HDA_PCM_TYPE_HDMI : HDA_PCM_TYPE_SPDIF; + cfg->dig_outs++; break; case AC_JACK_SPDIF_IN: case AC_JACK_DIG_OTHER_IN: @@ -3541,8 +3543,9 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec, cfg->hp_pins[1], cfg->hp_pins[2], cfg->hp_pins[3], cfg->hp_pins[4]); snd_printd(" mono: mono_out=0x%x\n", cfg->mono_out_pin); - if (cfg->dig_out_pin) - snd_printd(" dig-out=0x%x\n", cfg->dig_out_pin); + if (cfg->dig_outs) + snd_printd(" dig-out=0x%x/0x%x\n", + cfg->dig_out_pins[0], cfg->dig_out_pins[1]); snd_printd(" inputs: mic=0x%x, fmic=0x%x, line=0x%x, fline=0x%x," " cd=0x%x, aux=0x%x\n", cfg->input_pins[AUTO_PIN_MIC], |