]> Pileus Git - ~andy/linux/blobdiff - sound/pci/hda/patch_realtek.c
[PATCH] pr_debug: trident: use size_t length modifier in pr_debug format arguments
[~andy/linux] / sound / pci / hda / patch_realtek.c
index d037051b66b4012d7b6f6cba4713d101cc3669cb..d08d2e399c8f19ca16cf90de79f9a187aeb48042 100644 (file)
@@ -1796,25 +1796,9 @@ static int alc_build_pcms(struct hda_codec *codec)
                }
        }
 
-       /* If the use of more than one ADC is requested for the current
-        * model, configure a second analog capture-only PCM.
-        */
-       if (spec->num_adc_nids > 1) {
-               codec->num_pcms++;
-               info++;
-               info->name = spec->stream_name_analog;
-               /* No playback stream for second PCM */
-               info->stream[SNDRV_PCM_STREAM_PLAYBACK] = alc_pcm_null_playback;
-               info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = 0;
-               if (spec->stream_analog_capture) {
-                       snd_assert(spec->adc_nids, return -EINVAL);
-                       info->stream[SNDRV_PCM_STREAM_CAPTURE] = *(spec->stream_analog_capture);
-                       info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adc_nids[1];
-               }
-       }
-
+       /* SPDIF for stream index #1 */
        if (spec->multiout.dig_out_nid || spec->dig_in_nid) {
-               codec->num_pcms++;
+               codec->num_pcms = 2;
                info++;
                info->name = spec->stream_name_digital;
                if (spec->multiout.dig_out_nid &&
@@ -1829,6 +1813,24 @@ static int alc_build_pcms(struct hda_codec *codec)
                }
        }
 
+       /* If the use of more than one ADC is requested for the current
+        * model, configure a second analog capture-only PCM.
+        */
+       /* Additional Analaog capture for index #2 */
+       if (spec->num_adc_nids > 1 && spec->stream_analog_capture &&
+           spec->adc_nids) {
+               codec->num_pcms = 3;
+               info++;
+               info->name = spec->stream_name_analog;
+               /* No playback stream for second PCM */
+               info->stream[SNDRV_PCM_STREAM_PLAYBACK] = alc_pcm_null_playback;
+               info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = 0;
+               if (spec->stream_analog_capture) {
+                       info->stream[SNDRV_PCM_STREAM_CAPTURE] = *(spec->stream_analog_capture);
+                       info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adc_nids[1];
+               }
+       }
+
        return 0;
 }
 
@@ -2751,7 +2753,7 @@ static void alc880_auto_init_extra_out(struct hda_codec *codec)
        pin = spec->autocfg.speaker_pins[0];
        if (pin) /* connect to front */
                alc880_auto_set_output_and_unmute(codec, pin, PIN_OUT, 0);
-       pin = spec->autocfg.hp_pin;
+       pin = spec->autocfg.hp_pins[0];
        if (pin) /* connect to front */
                alc880_auto_set_output_and_unmute(codec, pin, PIN_HP, 0);
 }
@@ -2792,7 +2794,7 @@ static int alc880_parse_auto_config(struct hda_codec *codec)
            (err = alc880_auto_create_extra_out(spec,
                                                spec->autocfg.speaker_pins[0],
                                                "Speaker")) < 0 ||
-           (err = alc880_auto_create_extra_out(spec, spec->autocfg.hp_pin,
+           (err = alc880_auto_create_extra_out(spec, spec->autocfg.hp_pins[0],
                                                "Headphone")) < 0 ||
            (err = alc880_auto_create_analog_input_ctls(spec, &spec->autocfg)) < 0)
                return err;
@@ -3734,7 +3736,7 @@ static int alc260_auto_create_multi_out_ctls(struct alc_spec *spec,
                        return err;
        }
 
-       nid = cfg->hp_pin;
+       nid = cfg->hp_pins[0];
        if (nid) {
                err = alc260_add_playback_controls(spec, nid, "Headphone");
                if (err < 0)
@@ -3804,7 +3806,7 @@ static void alc260_auto_init_multi_out(struct hda_codec *codec)
        if (nid)
                alc260_auto_set_output_and_unmute(codec, nid, PIN_OUT, 0);
 
-       nid = spec->autocfg.hp_pin;
+       nid = spec->autocfg.hp_pins[0];
        if (nid)
                alc260_auto_set_output_and_unmute(codec, nid, PIN_OUT, 0);
 }      
@@ -4524,7 +4526,7 @@ static void alc882_auto_init_hp_out(struct hda_codec *codec)
        struct alc_spec *spec = codec->spec;
        hda_nid_t pin;
 
-       pin = spec->autocfg.hp_pin;
+       pin = spec->autocfg.hp_pins[0];
        if (pin) /* connect to front */
                alc882_auto_set_output_and_unmute(codec, pin, PIN_HP, 0); /* use dac 0 */
 }
@@ -5205,7 +5207,7 @@ static void alc883_auto_init_hp_out(struct hda_codec *codec)
        struct alc_spec *spec = codec->spec;
        hda_nid_t pin;
 
-       pin = spec->autocfg.hp_pin;
+       pin = spec->autocfg.hp_pins[0];
        if (pin) /* connect to front */
                /* use dac 0 */
                alc883_auto_set_output_and_unmute(codec, pin, PIN_HP, 0);
@@ -5628,7 +5630,7 @@ static int alc262_auto_create_multi_out_ctls(struct alc_spec *spec, const struct
                                return err;
                }
        }
-       nid = cfg->hp_pin;
+       nid = cfg->hp_pins[0];
        if (nid) {
                /* spec->multiout.hp_nid = 2; */
                if (nid == 0x16) {
@@ -6628,7 +6630,7 @@ static void alc861_auto_init_hp_out(struct hda_codec *codec)
        struct alc_spec *spec = codec->spec;
        hda_nid_t pin;
 
-       pin = spec->autocfg.hp_pin;
+       pin = spec->autocfg.hp_pins[0];
        if (pin) /* connect to front */
                alc861_auto_set_output_and_unmute(codec, pin, PIN_HP, spec->multiout.dac_nids[0]);
 }
@@ -6663,7 +6665,7 @@ static int alc861_parse_auto_config(struct hda_codec *codec)
 
        if ((err = alc861_auto_fill_dac_nids(spec, &spec->autocfg)) < 0 ||
            (err = alc861_auto_create_multi_out_ctls(spec, &spec->autocfg)) < 0 ||
-           (err = alc861_auto_create_hp_ctls(spec, spec->autocfg.hp_pin)) < 0 ||
+           (err = alc861_auto_create_hp_ctls(spec, spec->autocfg.hp_pins[0])) < 0 ||
            (err = alc861_auto_create_analog_input_ctls(spec, &spec->autocfg)) < 0)
                return err;