diff options
Diffstat (limited to 'sound/pci/hda/hda_codec.c')
-rw-r--r-- | sound/pci/hda/hda_codec.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 5ead2a3d05ad..bd375f895ec0 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -1926,8 +1926,18 @@ int snd_hda_multi_out_analog_cleanup(struct hda_codec *codec, struct hda_multi_o | |||
1926 | /* | 1926 | /* |
1927 | * Helper for automatic ping configuration | 1927 | * Helper for automatic ping configuration |
1928 | */ | 1928 | */ |
1929 | |||
1930 | static int is_in_nid_list(hda_nid_t nid, hda_nid_t *list) | ||
1931 | { | ||
1932 | for (; *list; list++) | ||
1933 | if (*list == nid) | ||
1934 | return 1; | ||
1935 | return 0; | ||
1936 | } | ||
1937 | |||
1929 | /* parse all pin widgets and store the useful pin nids to cfg */ | 1938 | /* parse all pin widgets and store the useful pin nids to cfg */ |
1930 | int snd_hda_parse_pin_def_config(struct hda_codec *codec, struct auto_pin_cfg *cfg) | 1939 | int snd_hda_parse_pin_def_config(struct hda_codec *codec, struct auto_pin_cfg *cfg, |
1940 | hda_nid_t *ignore_nids) | ||
1931 | { | 1941 | { |
1932 | hda_nid_t nid, nid_start; | 1942 | hda_nid_t nid, nid_start; |
1933 | int i, j, nodes; | 1943 | int i, j, nodes; |
@@ -1948,6 +1958,10 @@ int snd_hda_parse_pin_def_config(struct hda_codec *codec, struct auto_pin_cfg *c | |||
1948 | /* read all default configuration for pin complex */ | 1958 | /* read all default configuration for pin complex */ |
1949 | if (wid_type != AC_WID_PIN) | 1959 | if (wid_type != AC_WID_PIN) |
1950 | continue; | 1960 | continue; |
1961 | /* ignore the given nids (e.g. pc-beep returns error) */ | ||
1962 | if (ignore_nids && is_in_nid_list(nid, ignore_nids)) | ||
1963 | continue; | ||
1964 | |||
1951 | def_conf = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_CONFIG_DEFAULT, 0); | 1965 | def_conf = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_CONFIG_DEFAULT, 0); |
1952 | if (get_defcfg_connect(def_conf) == AC_JACK_PORT_NONE) | 1966 | if (get_defcfg_connect(def_conf) == AC_JACK_PORT_NONE) |
1953 | continue; | 1967 | continue; |