handled_mask |= XUNDRN;
 
                substream = mcasp->substreams[SNDRV_PCM_STREAM_PLAYBACK];
-               if (substream) {
-                       snd_pcm_stream_lock_irq(substream);
-                       if (snd_pcm_running(substream))
-                               snd_pcm_stop(substream, SNDRV_PCM_STATE_XRUN);
-                       snd_pcm_stream_unlock_irq(substream);
-               }
+               if (substream)
+                       snd_pcm_stop_xrun(substream);
        }
 
        if (!handled_mask)
                handled_mask |= ROVRN;
 
                substream = mcasp->substreams[SNDRV_PCM_STREAM_CAPTURE];
-               if (substream) {
-                       snd_pcm_stream_lock_irq(substream);
-                       if (snd_pcm_running(substream))
-                               snd_pcm_stop(substream, SNDRV_PCM_STATE_XRUN);
-                       snd_pcm_stream_unlock_irq(substream);
-               }
+               if (substream)
+                       snd_pcm_stop_xrun(substream);
        }
 
        if (!handled_mask)