Skip to content

Commit 502018e

Browse files
mkumardwebgeek1234
authored andcommitted
sound: hda: fix DMA RUN bit clear issue
HDA controller stream DMA RUN bit was not cleared during the system suspend flow within the given timeout duration to check the status of RUN bit during the active audio in the function snd_hdac_stream_sync. This was resulting in mc-err during the link reset. This can be fixed by performing stream reset for the active stream DMA during the stream stop flow. Bug 200552473 Change-Id: I9fe2195c3c3d7de250fd3de08ffbf3b1302db86c Signed-off-by: Mohan Kumar <[email protected]> Reviewed-on: https://git-master.nvidia.com/r/2220754 Reviewed-by: Viswanath L <[email protected]> GVS: Gerrit_Virtual_Submit Reviewed-by: Sharad Gupta <[email protected]> Reviewed-by: mobile promotions <[email protected]> Tested-by: mobile promotions <[email protected]>
1 parent 1eaa8fb commit 502018e

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

sound/hda/hdac_stream.c

+8-1
Original file line numberDiff line numberDiff line change
@@ -640,8 +640,15 @@ void snd_hdac_stream_sync(struct hdac_stream *azx_dev, bool start,
640640
} else {
641641
/* check RUN bit is cleared */
642642
if (snd_hdac_stream_readb(s, SD_CTL) &
643-
SD_CTL_DMA_START)
643+
SD_CTL_DMA_START) {
644644
nwait++;
645+
/* Do stream reset, if DMA RUN
646+
* bit not cleared with given
647+
* timeout
648+
*/
649+
if (timeout == 1)
650+
snd_hdac_stream_reset(s);
651+
}
645652
}
646653
}
647654
i++;

0 commit comments

Comments
 (0)