static int __maybe_unused acp5x_pcm_resume(struct device *dev)
 {
        struct i2s_dev_data *adata;
-       u32 val, reg_val, frmt_val;
+       struct i2s_stream_instance *rtd;
+       u32 val;
 
-       reg_val = 0;
-       frmt_val = 0;
        adata = dev_get_drvdata(dev);
 
        if (adata->play_stream && adata->play_stream->runtime) {
-               struct i2s_stream_instance *rtd =
-                       adata->play_stream->runtime->private_data;
+               rtd = adata->play_stream->runtime->private_data;
                config_acp5x_dma(rtd, SNDRV_PCM_STREAM_PLAYBACK);
-               switch (rtd->i2s_instance) {
-               case I2S_HS_INSTANCE:
-                       reg_val = ACP_HSTDM_ITER;
-                       frmt_val = ACP_HSTDM_TXFRMT;
-                       break;
-               case I2S_SP_INSTANCE:
-               default:
-                       reg_val = ACP_I2STDM_ITER;
-                       frmt_val = ACP_I2STDM_TXFRMT;
+               acp_writel((rtd->xfer_resolution  << 3), rtd->acp5x_base + ACP_HSTDM_ITER);
+               if (adata->tdm_mode == TDM_ENABLE) {
+                       acp_writel(adata->tdm_fmt, adata->acp5x_base + ACP_HSTDM_TXFRMT);
+                       val = acp_readl(adata->acp5x_base + ACP_HSTDM_ITER);
+                       acp_writel(val | 0x2, adata->acp5x_base + ACP_HSTDM_ITER);
+               }
+       }
+       if (adata->i2ssp_play_stream && adata->i2ssp_play_stream->runtime) {
+               rtd = adata->i2ssp_play_stream->runtime->private_data;
+               config_acp5x_dma(rtd, SNDRV_PCM_STREAM_PLAYBACK);
+               acp_writel((rtd->xfer_resolution  << 3), rtd->acp5x_base + ACP_I2STDM_ITER);
+               if (adata->tdm_mode == TDM_ENABLE) {
+                       acp_writel(adata->tdm_fmt, adata->acp5x_base + ACP_I2STDM_TXFRMT);
+                       val = acp_readl(adata->acp5x_base + ACP_I2STDM_ITER);
+                       acp_writel(val | 0x2, adata->acp5x_base + ACP_I2STDM_ITER);
                }
-               acp_writel((rtd->xfer_resolution  << 3),
-                          rtd->acp5x_base + reg_val);
        }
 
        if (adata->capture_stream && adata->capture_stream->runtime) {
-               struct i2s_stream_instance *rtd =
-                       adata->capture_stream->runtime->private_data;
+               rtd = adata->capture_stream->runtime->private_data;
                config_acp5x_dma(rtd, SNDRV_PCM_STREAM_CAPTURE);
-               switch (rtd->i2s_instance) {
-               case I2S_HS_INSTANCE:
-                       reg_val = ACP_HSTDM_IRER;
-                       frmt_val = ACP_HSTDM_RXFRMT;
-                       break;
-               case I2S_SP_INSTANCE:
-               default:
-                       reg_val = ACP_I2STDM_IRER;
-                       frmt_val = ACP_I2STDM_RXFRMT;
+               acp_writel((rtd->xfer_resolution  << 3), rtd->acp5x_base + ACP_HSTDM_IRER);
+               if (adata->tdm_mode == TDM_ENABLE) {
+                       acp_writel(adata->tdm_fmt, adata->acp5x_base + ACP_HSTDM_RXFRMT);
+                       val = acp_readl(adata->acp5x_base + ACP_HSTDM_IRER);
+                       acp_writel(val | 0x2, adata->acp5x_base + ACP_HSTDM_IRER);
                }
-               acp_writel((rtd->xfer_resolution  << 3),
-                          rtd->acp5x_base + reg_val);
        }
-       if (adata->tdm_mode == TDM_ENABLE) {
-               acp_writel(adata->tdm_fmt, adata->acp5x_base + frmt_val);
-               val = acp_readl(adata->acp5x_base + reg_val);
-               acp_writel(val | 0x2, adata->acp5x_base + reg_val);
+       if (adata->i2ssp_capture_stream && adata->i2ssp_capture_stream->runtime) {
+               rtd = adata->i2ssp_capture_stream->runtime->private_data;
+               config_acp5x_dma(rtd, SNDRV_PCM_STREAM_CAPTURE);
+               acp_writel((rtd->xfer_resolution  << 3), rtd->acp5x_base + ACP_I2STDM_IRER);
+               if (adata->tdm_mode == TDM_ENABLE) {
+                       acp_writel(adata->tdm_fmt, adata->acp5x_base + ACP_I2STDM_RXFRMT);
+                       val = acp_readl(adata->acp5x_base + ACP_I2STDM_IRER);
+                       acp_writel(val | 0x2, adata->acp5x_base + ACP_I2STDM_IRER);
+               }
        }
        acp_writel(1, adata->acp5x_base + ACP_EXTERNAL_INTR_ENB);
        return 0;