struct fsl_xcvr_soc_data {
        const char *fw_name;
        bool spdif_only;
+       bool use_edma;
 };
 
 struct fsl_xcvr {
                return -EBUSY;
        }
 
+       /*
+        * EDMA controller needs period size to be a multiple of
+        * tx/rx maxburst
+        */
+       if (xcvr->soc_data->use_edma)
+               snd_pcm_hw_constraint_step(substream->runtime, 0,
+                                          SNDRV_PCM_HW_PARAM_PERIOD_SIZE,
+                                          tx ? xcvr->dma_prms_tx.maxburst :
+                                          xcvr->dma_prms_rx.maxburst);
+
        switch (xcvr->mode) {
        case FSL_XCVR_MODE_SPDIF:
        case FSL_XCVR_MODE_ARC:
 
 static const struct fsl_xcvr_soc_data fsl_xcvr_imx93_data = {
        .spdif_only = true,
+       .use_edma = true,
 };
 
 static const struct of_device_id fsl_xcvr_dt_ids[] = {