summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2022-11-01 14:33:10 +0000
committerMark Brown <broonie@kernel.org>2022-11-01 14:33:10 +0000
commite9ec88a2a612bf568eb52ef8fdf333a0a26e1785 (patch)
tree514f2f75306f32b7482feb11138479d33c2ca3a3
parente5afc8677c0d9be4bea5ef5ab01719e190450943 (diff)
parent77a7a6e9a94df0ac7ba46677b5ce4a743a931fce (diff)
downloadlinux-e9ec88a2a612bf568eb52ef8fdf333a0a26e1785.tar.bz2
Add support for MICFIL on i.MX93 platform
Merge series from Chancel Liu <chancel.liu@nxp.com>: This patchset supports MICFIL on i.MX93 platform.
-rw-r--r--Documentation/devicetree/bindings/sound/fsl,micfil.yaml1
-rw-r--r--sound/soc/fsl/fsl_micfil.c13
2 files changed, 14 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/sound/fsl,micfil.yaml b/Documentation/devicetree/bindings/sound/fsl,micfil.yaml
index 64d57758ee67..4b99a18c79a0 100644
--- a/Documentation/devicetree/bindings/sound/fsl,micfil.yaml
+++ b/Documentation/devicetree/bindings/sound/fsl,micfil.yaml
@@ -18,6 +18,7 @@ properties:
enum:
- fsl,imx8mm-micfil
- fsl,imx8mp-micfil
+ - fsl,imx93-micfil
reg:
maxItems: 1
diff --git a/sound/soc/fsl/fsl_micfil.c b/sound/soc/fsl/fsl_micfil.c
index eeaa75fb9196..22e75c14cac4 100644
--- a/sound/soc/fsl/fsl_micfil.c
+++ b/sound/soc/fsl/fsl_micfil.c
@@ -63,6 +63,7 @@ struct fsl_micfil_soc_data {
unsigned int fifo_depth;
unsigned int dataline;
bool imx;
+ bool use_edma;
u64 formats;
};
@@ -82,9 +83,19 @@ static struct fsl_micfil_soc_data fsl_micfil_imx8mp = {
.formats = SNDRV_PCM_FMTBIT_S32_LE,
};
+static struct fsl_micfil_soc_data fsl_micfil_imx93 = {
+ .imx = true,
+ .fifos = 8,
+ .fifo_depth = 32,
+ .dataline = 0xf,
+ .formats = SNDRV_PCM_FMTBIT_S32_LE,
+ .use_edma = true,
+};
+
static const struct of_device_id fsl_micfil_dt_ids[] = {
{ .compatible = "fsl,imx8mm-micfil", .data = &fsl_micfil_imx8mm },
{ .compatible = "fsl,imx8mp-micfil", .data = &fsl_micfil_imx8mp },
+ { .compatible = "fsl,imx93-micfil", .data = &fsl_micfil_imx93 },
{}
};
MODULE_DEVICE_TABLE(of, fsl_micfil_dt_ids);
@@ -681,6 +692,8 @@ static int fsl_micfil_hw_params(struct snd_pcm_substream *substream,
micfil->sdmacfg.n_fifos_src = channels;
micfil->sdmacfg.sw_done = true;
micfil->dma_params_rx.maxburst = channels * MICFIL_DMA_MAXBURST_RX;
+ if (micfil->soc->use_edma)
+ micfil->dma_params_rx.maxburst = channels;
return 0;
}