aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_codec.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/hda/hda_codec.c')
-rw-r--r--sound/pci/hda/hda_codec.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 14829210ef0b..b959c9f1e6fb 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -1216,6 +1216,7 @@ void snd_hda_codec_setup_stream(struct hda_codec *codec, hda_nid_t nid,
1216 struct hda_codec *c; 1216 struct hda_codec *c;
1217 struct hda_cvt_setup *p; 1217 struct hda_cvt_setup *p;
1218 unsigned int oldval, newval; 1218 unsigned int oldval, newval;
1219 int type;
1219 int i; 1220 int i;
1220 1221
1221 if (!nid) 1222 if (!nid)
@@ -1254,10 +1255,12 @@ void snd_hda_codec_setup_stream(struct hda_codec *codec, hda_nid_t nid,
1254 p->dirty = 0; 1255 p->dirty = 0;
1255 1256
1256 /* make other inactive cvts with the same stream-tag dirty */ 1257 /* make other inactive cvts with the same stream-tag dirty */
1258 type = get_wcaps_type(get_wcaps(codec, nid));
1257 list_for_each_entry(c, &codec->bus->codec_list, list) { 1259 list_for_each_entry(c, &codec->bus->codec_list, list) {
1258 for (i = 0; i < c->cvt_setups.used; i++) { 1260 for (i = 0; i < c->cvt_setups.used; i++) {
1259 p = snd_array_elem(&c->cvt_setups, i); 1261 p = snd_array_elem(&c->cvt_setups, i);
1260 if (!p->active && p->stream_tag == stream_tag) 1262 if (!p->active && p->stream_tag == stream_tag &&
1263 get_wcaps_type(get_wcaps(codec, p->nid)) == type)
1261 p->dirty = 1; 1264 p->dirty = 1;
1262 } 1265 }
1263 } 1266 }
@@ -1281,6 +1284,9 @@ void __snd_hda_codec_cleanup_stream(struct hda_codec *codec, hda_nid_t nid,
1281 if (!nid) 1284 if (!nid)
1282 return; 1285 return;
1283 1286
1287 if (codec->no_sticky_stream)
1288 do_now = 1;
1289
1284 snd_printdd("hda_codec_cleanup_stream: NID=0x%x\n", nid); 1290 snd_printdd("hda_codec_cleanup_stream: NID=0x%x\n", nid);
1285 p = get_hda_cvt_setup(codec, nid); 1291 p = get_hda_cvt_setup(codec, nid);
1286 if (p) { 1292 if (p) {