[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20221222073618.1064415-4-chancel.liu@nxp.com>
Date: Thu, 22 Dec 2022 15:36:18 +0800
From: Chancel Liu <chancel.liu@....com>
To: lgirdwood@...il.com, broonie@...nel.org, robh+dt@...nel.org,
krzysztof.kozlowski+dt@...aro.org, shengjiu.wang@...il.com,
Xiubo.Lee@...il.com, festevam@...il.com, nicoleotsuka@...il.com,
perex@...ex.cz, tiwai@...e.com, devicetree@...r.kernel.org,
alsa-devel@...a-project.org, linux-kernel@...r.kernel.org
Cc: Chancel Liu <chancel.liu@....com>
Subject: [PATCH 3/3] ASoC: fsl_xcvr: Add constraints of period size while using eDMA
eDMA on i.MX93 platform requires the period size to be multiple of
maxburst.
Signed-off-by: Chancel Liu <chancel.liu@....com>
---
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 c87ae864df77..bb03c04bae9c 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
Powered by blists - more mailing lists