{
        struct hdac_stream *hstream = &stream->hstream;
        int sd_offset = SOF_STREAM_SD_OFFSET(hstream);
+       u32 dma_start = SOF_HDA_SD_CTL_DMA_START;
+       int ret;
+       u32 run;
 
        /* cmd must be for audio stream */
        switch (cmd) {
                                        SOF_HDA_SD_CTL_DMA_START |
                                        SOF_HDA_CL_DMA_SD_INT_MASK);
 
+               ret = snd_sof_dsp_read_poll_timeout(sdev,
+                                       HDA_DSP_HDA_BAR,
+                                       sd_offset, run,
+                                       ((run & dma_start) == dma_start),
+                                       HDA_DSP_REG_POLL_INTERVAL_US,
+                                       HDA_DSP_STREAM_RUN_TIMEOUT);
+
+               if (ret)
+                       return ret;
+
                hstream->running = true;
                break;
        case SNDRV_PCM_TRIGGER_SUSPEND:
                                        SOF_HDA_SD_CTL_DMA_START |
                                        SOF_HDA_CL_DMA_SD_INT_MASK, 0x0);
 
+               ret = snd_sof_dsp_read_poll_timeout(sdev, HDA_DSP_HDA_BAR,
+                                               sd_offset, run,
+                                               !(run & dma_start),
+                                               HDA_DSP_REG_POLL_INTERVAL_US,
+                                               HDA_DSP_STREAM_RUN_TIMEOUT);
+
+               if (ret)
+                       return ret;
+
                snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, sd_offset +
                                  SOF_HDA_ADSP_REG_CL_SD_STS,
                                  SOF_HDA_CL_DMA_SD_INT_MASK);
 
 #define HDA_DSP_MBOX_UPLINK_OFFSET             0x81000
 
 #define HDA_DSP_STREAM_RESET_TIMEOUT           300
+/*
+ * Timeout in us, for setting the stream RUN bit, during
+ * start/stop the stream. The timeout expires if new RUN bit
+ * value cannot be read back within the specified time.
+ */
+#define HDA_DSP_STREAM_RUN_TIMEOUT             300
 #define HDA_DSP_CL_TRIGGER_TIMEOUT             300
 
 #define HDA_DSP_SPIB_ENABLE                    1