[PATCH 4/6] ASoC: meson: aiu: add I2S Capture DAI
Valerio Setti
vsetti at baylibre.com
Fri Sep 11 15:14:34 PDT 2026
Add capture stream to CPU_I2S_ENCODER making it able to handle both
playback and capture streams. Captured data is formatted from
"audin-formatter-i2s" widget, buffered from "audin-fifo" into an internal
FIFO and then bulk transmitted into RAM when the FIFO is full.
As for the naming of the stream "I2S Encoder" is kept as base following
the same pattern used for the playback stream and with the goal to minimize
changes.
Supported format for capture is currently limited to S16_LE because it's
the only one that has been tested. According to the manual also S24_LE
should be supported, but this is kept as follow-up.
This capture support also takes advantage of the following commits that
has recently been merged:
commit df3c987ab3d7 ("ASoC: meson: aiu-encoder-i2s: reflect bs quirk in hw constraints")
commit e82159384a50 ("ASoC: meson: aiu-encoder-i2s: use the core symmetric_rate handling")
They ensure bs_quirk and rate symmetry across playback and capture streams.
Signed-off-by: Valerio Setti <vsetti at baylibre.com>
---
sound/soc/meson/aiu.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/sound/soc/meson/aiu.c b/sound/soc/meson/aiu.c
index 535fbf7c1639..14d0e20a4bd6 100644
--- a/sound/soc/meson/aiu.c
+++ b/sound/soc/meson/aiu.c
@@ -153,6 +153,13 @@ static struct snd_soc_dai_driver aiu_cpu_dai_drv[] = {
.rates = SNDRV_PCM_RATE_8000_192000,
.formats = AIU_FORMATS,
},
+ .capture = {
+ .stream_name = "I2S Encoder Capture",
+ .channels_min = 2,
+ .channels_max = 2,
+ .rates = SNDRV_PCM_RATE_8000_192000,
+ .formats = SNDRV_PCM_FMTBIT_S16_LE,
+ },
.ops = &aiu_encoder_i2s_dai_ops,
.symmetric_rate = 1,
},
--
2.47.3
More information about the linux-amlogic
mailing list