aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/pci/hda/hda_codec.c3
-rw-r--r--sound/pci/hda/hda_codec.h1
-rw-r--r--sound/pci/hda/patch_analog.c7
3 files changed, 11 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 13c1e7703c49..644e3f14f8ca 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -1284,6 +1284,9 @@ void __snd_hda_codec_cleanup_stream(struct hda_codec *codec, hda_nid_t nid,
1284 if (!nid) 1284 if (!nid)
1285 return; 1285 return;
1286 1286
1287 if (codec->no_sticky_stream)
1288 do_now = 1;
1289
1287 snd_printdd("hda_codec_cleanup_stream: NID=0x%x\n", nid); 1290 snd_printdd("hda_codec_cleanup_stream: NID=0x%x\n", nid);
1288 p = get_hda_cvt_setup(codec, nid); 1291 p = get_hda_cvt_setup(codec, nid);
1289 if (p) { 1292 if (p) {
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
index ebf8eb02e3c2..fdf8d44f8b6b 100644
--- a/sound/pci/hda/hda_codec.h
+++ b/sound/pci/hda/hda_codec.h
@@ -850,6 +850,7 @@ struct hda_codec {
850 unsigned int pin_amp_workaround:1; /* pin out-amp takes index 850 unsigned int pin_amp_workaround:1; /* pin out-amp takes index
851 * (e.g. Conexant codecs) 851 * (e.g. Conexant codecs)
852 */ 852 */
853 unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */
853 unsigned int pins_shutup:1; /* pins are shut up */ 854 unsigned int pins_shutup:1; /* pins are shut up */
854 unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */ 855 unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
855#ifdef CONFIG_SND_HDA_POWER_SAVE 856#ifdef CONFIG_SND_HDA_POWER_SAVE
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 507523d5ed42..f7ff3f7ccb8e 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -1276,6 +1276,7 @@ static int patch_ad1986a(struct hda_codec *codec)
1276 spec->multiout.no_share_stream = 1; 1276 spec->multiout.no_share_stream = 1;
1277 1277
1278 codec->no_trigger_sense = 1; 1278 codec->no_trigger_sense = 1;
1279 codec->no_sticky_stream = 1;
1279 1280
1280 return 0; 1281 return 0;
1281} 1282}
@@ -1463,6 +1464,7 @@ static int patch_ad1983(struct hda_codec *codec)
1463 codec->patch_ops = ad198x_patch_ops; 1464 codec->patch_ops = ad198x_patch_ops;
1464 1465
1465 codec->no_trigger_sense = 1; 1466 codec->no_trigger_sense = 1;
1467 codec->no_sticky_stream = 1;
1466 1468
1467 return 0; 1469 return 0;
1468} 1470}
@@ -1917,6 +1919,7 @@ static int patch_ad1981(struct hda_codec *codec)
1917 } 1919 }
1918 1920
1919 codec->no_trigger_sense = 1; 1921 codec->no_trigger_sense = 1;
1922 codec->no_sticky_stream = 1;
1920 1923
1921 return 0; 1924 return 0;
1922} 1925}
@@ -3236,6 +3239,7 @@ static int patch_ad1988(struct hda_codec *codec)
3236 spec->vmaster_nid = 0x04; 3239 spec->vmaster_nid = 0x04;
3237 3240
3238 codec->no_trigger_sense = 1; 3241 codec->no_trigger_sense = 1;
3242 codec->no_sticky_stream = 1;
3239 3243
3240 return 0; 3244 return 0;
3241} 3245}
@@ -3450,6 +3454,7 @@ static int patch_ad1884(struct hda_codec *codec)
3450 codec->patch_ops = ad198x_patch_ops; 3454 codec->patch_ops = ad198x_patch_ops;
3451 3455
3452 codec->no_trigger_sense = 1; 3456 codec->no_trigger_sense = 1;
3457 codec->no_sticky_stream = 1;
3453 3458
3454 return 0; 3459 return 0;
3455} 3460}
@@ -4423,6 +4428,7 @@ static int patch_ad1884a(struct hda_codec *codec)
4423 } 4428 }
4424 4429
4425 codec->no_trigger_sense = 1; 4430 codec->no_trigger_sense = 1;
4431 codec->no_sticky_stream = 1;
4426 4432
4427 return 0; 4433 return 0;
4428} 4434}
@@ -4762,6 +4768,7 @@ static int patch_ad1882(struct hda_codec *codec)
4762 } 4768 }
4763 4769
4764 codec->no_trigger_sense = 1; 4770 codec->no_trigger_sense = 1;
4771 codec->no_sticky_stream = 1;
4765 4772
4766 return 0; 4773 return 0;
4767} 4774}