mirror of
https://github.com/torvalds/linux
synced 2024-10-16 16:29:20 +00:00
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@nxp.com> Acked-by: Shengjiu Wang <shengjiu.wang@gmail.com> Link: https://lore.kernel.org/r/20230104023953.2973362-4-chancel.liu@nxp.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
e240b9329a
commit
1760df5b7e
|
@ -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[] = {
|
||||
|
|
Loading…
Reference in a new issue