ALSA: hda - Initialize digital-input path properly
authorTakashi Iwai <tiwai@suse.de>
Fri, 4 Jan 2013 14:09:42 +0000 (15:09 +0100)
committerTakashi Iwai <tiwai@suse.de>
Sat, 12 Jan 2013 07:43:38 +0000 (08:43 +0100)
Call the path activation for the digital input pin properly, not only
setting the pin control.  Also add spec->digin_path for keeping the
path index.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_generic.c
sound/pci/hda/hda_generic.h

index c8bf812..4e49c5e 100644 (file)
@@ -2521,6 +2521,7 @@ static void parse_digital(struct hda_codec *codec)
                                print_nid_path("digin", path);
                                path->active = true;
                                spec->dig_in_nid = dig_nid;
+                               spec->digin_path = snd_hda_get_path_idx(codec, path);
                                break;
                        }
                }
@@ -3788,8 +3789,13 @@ static void init_digital(struct hda_codec *codec)
                                      spec->digout_paths[i]);
        }
        pin = spec->autocfg.dig_in_pin;
-       if (pin)
+       if (pin) {
+               struct nid_path *path;
                snd_hda_set_pin_ctl_cache(codec, pin, PIN_IN);
+               path = snd_hda_get_path_from_idx(codec, spec->digin_path);
+               if (path)
+                       snd_hda_activate_path(codec, path, path->active, false);
+       }
 }
 
 /* clear unsol-event tags on unused pins; Conexant codecs seem to leave
index 71d409f..ba8de12 100644 (file)
@@ -136,6 +136,7 @@ struct hda_gen_spec {
        int speaker_paths[AUTO_CFG_MAX_OUTS];
        int digout_paths[AUTO_CFG_MAX_OUTS];
        int loopback_paths[HDA_MAX_NUM_INPUTS];
+       int digin_path;
 
        /* auto-mic stuff */
        int am_num_entries;