On Wed, Jan 4, 2023 at 10:40 AM Chancel Liu chancel.liu@nxp.com wrote:
eDMA on i.MX93 platform requires the period size to be multiple of maxburst.
Signed-off-by: Chancel Liu chancel.liu@nxp.com
Acked-by: Shengjiu Wang shengjiu.wang@gmail.com
Best regards Wang shengjiu
sound/soc/fsl/fsl_xcvr.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/sound/soc/fsl/fsl_xcvr.c b/sound/soc/fsl/fsl_xcvr.c index b794158a7876..2a78243df752 100644 --- a/sound/soc/fsl/fsl_xcvr.c +++ b/sound/soc/fsl/fsl_xcvr.c @@ -22,6 +22,7 @@ struct fsl_xcvr_soc_data { const char *fw_name; bool spdif_only;
bool use_edma;
};
struct fsl_xcvr { @@ -538,6 +539,16 @@ static int fsl_xcvr_startup(struct snd_pcm_substream *substream, 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:
@@ -1207,6 +1218,7 @@ static const struct fsl_xcvr_soc_data fsl_xcvr_imx8mp_data = {
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[] = {
2.25.1