Skip to content

Commit 6e4cac2

Browse files
tiwaibroonie
authored andcommitted
ASoC: intel: Fix PM and non-atomic crash in bytcr drivers
The FE setups of Intel SST bytcr_rt5640 and bytcr_rt5651 drivers carry the ignore_suspend flag, and this prevents the suspend/resume working properly while the stream is running, since SST core code has the check of the running streams and returns -EBUSY. Drop these superfluous flags for fixing the behavior. Also, the bytcr_rt5640 driver lacks of nonatomic flag in some FE definitions, which leads to the kernel Oops at suspend/resume like: BUG: scheduling while atomic: systemd-sleep/3144/0x00000003 Call Trace: dump_stack+0x5c/0x7a __schedule_bug+0x55/0x70 __schedule+0x63c/0x8c0 schedule+0x3d/0x90 schedule_timeout+0x16b/0x320 ? del_timer_sync+0x50/0x50 ? sst_wait_timeout+0xa9/0x170 [snd_intel_sst_core] ? sst_wait_timeout+0xa9/0x170 [snd_intel_sst_core] ? remove_wait_queue+0x60/0x60 ? sst_prepare_and_post_msg+0x275/0x960 [snd_intel_sst_core] ? sst_pause_stream+0x9b/0x110 [snd_intel_sst_core] .... This patch addresses these appropriately, too. Signed-off-by: Takashi Iwai <tiwai@suse.de> Acked-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: <stable@vger.kernel.org> # v4.1+
1 parent c1ae3cf commit 6e4cac2

File tree

2 files changed

+2
-4
lines changed

2 files changed

+2
-4
lines changed

sound/soc/intel/boards/bytcr_rt5640.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,7 @@ static struct snd_soc_dai_link byt_rt5640_dais[] = {
621621
.codec_dai_name = "snd-soc-dummy-dai",
622622
.codec_name = "snd-soc-dummy",
623623
.platform_name = "sst-mfld-platform",
624-
.ignore_suspend = 1,
624+
.nonatomic = true,
625625
.dynamic = 1,
626626
.dpcm_playback = 1,
627627
.dpcm_capture = 1,
@@ -634,7 +634,6 @@ static struct snd_soc_dai_link byt_rt5640_dais[] = {
634634
.codec_dai_name = "snd-soc-dummy-dai",
635635
.codec_name = "snd-soc-dummy",
636636
.platform_name = "sst-mfld-platform",
637-
.ignore_suspend = 1,
638637
.nonatomic = true,
639638
.dynamic = 1,
640639
.dpcm_playback = 1,
@@ -661,6 +660,7 @@ static struct snd_soc_dai_link byt_rt5640_dais[] = {
661660
| SND_SOC_DAIFMT_CBS_CFS,
662661
.be_hw_params_fixup = byt_rt5640_codec_fixup,
663662
.ignore_suspend = 1,
663+
.nonatomic = true,
664664
.dpcm_playback = 1,
665665
.dpcm_capture = 1,
666666
.init = byt_rt5640_init,

sound/soc/intel/boards/bytcr_rt5651.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,6 @@ static struct snd_soc_dai_link byt_rt5651_dais[] = {
235235
.codec_dai_name = "snd-soc-dummy-dai",
236236
.codec_name = "snd-soc-dummy",
237237
.platform_name = "sst-mfld-platform",
238-
.ignore_suspend = 1,
239238
.nonatomic = true,
240239
.dynamic = 1,
241240
.dpcm_playback = 1,
@@ -249,7 +248,6 @@ static struct snd_soc_dai_link byt_rt5651_dais[] = {
249248
.codec_dai_name = "snd-soc-dummy-dai",
250249
.codec_name = "snd-soc-dummy",
251250
.platform_name = "sst-mfld-platform",
252-
.ignore_suspend = 1,
253251
.nonatomic = true,
254252
.dynamic = 1,
255253
.dpcm_playback = 1,

0 commit comments

Comments
 (0)