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;
                        }
                }
                                      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