The AIFs have a single register controlling DAI parameters in both
directions, including BCLK/LRCK divisor word size. The DAIs produce only
noise or silence if any of these parameters is wrong. Therefore, we need
to enforce symmetry for these parameters, so starting a new substream
will not break an existing substream.

Signed-off-by: Samuel Holland <sam...@sholland.org>
---
 sound/soc/sunxi/sun8i-codec.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sound/soc/sunxi/sun8i-codec.c b/sound/soc/sunxi/sun8i-codec.c
index 0a53dc0c34d0..f21274530a0e 100644
--- a/sound/soc/sunxi/sun8i-codec.c
+++ b/sound/soc/sunxi/sun8i-codec.c
@@ -420,16 +420,19 @@ static struct snd_soc_dai_driver sun8i_codec_dais[] = {
                /* playback capabilities */
                .playback = {
                        .stream_name    = "AIF1 Playback",
                        .channels_min   = 1,
                        .channels_max   = 2,
                        .rates          = SNDRV_PCM_RATE_8000_192000,
                        .formats        = SNDRV_PCM_FMTBIT_S16_LE,
                },
+               .symmetric_rates        = true,
+               .symmetric_channels     = true,
+               .symmetric_samplebits   = true,
        },
 };
 
 static const char *const sun8i_aif_stereo_mux_enum_values[] = {
        "Stereo", "Reverse Stereo", "Sum Mono", "Mix Mono"
 };
 
 static SOC_ENUM_DOUBLE_DECL(sun8i_aif1_ad0_stereo_mux_enum,
-- 
2.26.2

Reply via email to