[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1jplaz3wnu.fsf@starbuckisacylon.baylibre.com>
Date: Tue, 07 Oct 2025 11:09:57 +0200
From: Jerome Brunet <jbrunet@...libre.com>
To: Valerio Setti via B4 Relay <devnull+vsetti.baylibre.com@...nel.org>
Cc: Liam Girdwood <lgirdwood@...il.com>, Mark Brown <broonie@...nel.org>,
Jaroslav Kysela <perex@...ex.cz>, Takashi Iwai <tiwai@...e.com>, Neil
Armstrong <neil.armstrong@...aro.org>, Kevin Hilman
<khilman@...libre.com>, Martin Blumenstingl
<martin.blumenstingl@...glemail.com>, vsetti@...libre.com,
linux-sound@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-amlogic@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] ASoC: meson: aiu-encoder-i2s: fix bit clock polarity
On Tue 07 Oct 2025 at 00:12, Valerio Setti via B4 Relay <devnull+vsetti.baylibre.com@...nel.org> wrote:
> From: Valerio Setti <vsetti@...libre.com>
>
> According to I2S specs audio data is sampled on the rising edge of the
> clock and it can change on the falling one. When operating in normal mode
> this SoC behaves the opposite so a clock polarity inversion is required
> in this case.
>
> This was tested on an OdroidC2 (Amlogic S905 SoC) board.
>
> Signed-off-by: Valerio Setti <vsetti@...libre.com>
Reviewed-by: Jerome Brunet <jbrunet@...libre.com>
Tested on the libretech cc s905x (GXL)
Tested-by: Jerome Brunet <jbrunet@...libre.com>
> ---
> sound/soc/meson/aiu-encoder-i2s.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/sound/soc/meson/aiu-encoder-i2s.c b/sound/soc/meson/aiu-encoder-i2s.c
> index a0dd914c8ed13616fbcbc0828e36418cfd255391..3b4061508c18047fe8d6f3f98061720f8ce238f2 100644
> --- a/sound/soc/meson/aiu-encoder-i2s.c
> +++ b/sound/soc/meson/aiu-encoder-i2s.c
> @@ -236,8 +236,12 @@ static int aiu_encoder_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
> inv == SND_SOC_DAIFMT_IB_IF)
> val |= AIU_CLK_CTRL_LRCLK_INVERT;
>
> - if (inv == SND_SOC_DAIFMT_IB_NF ||
> - inv == SND_SOC_DAIFMT_IB_IF)
> + /*
> + * The SoC changes data on the rising edge of the bitclock
> + * so an inversion of the bitclock is required in normal mode
> + */
> + if (inv == SND_SOC_DAIFMT_NB_NF ||
> + inv == SND_SOC_DAIFMT_NB_IF)
> val |= AIU_CLK_CTRL_AOCLK_INVERT;
>
> /* Signal skew */
> @@ -328,4 +332,3 @@ const struct snd_soc_dai_ops aiu_encoder_i2s_dai_ops = {
> .startup = aiu_encoder_i2s_startup,
> .shutdown = aiu_encoder_i2s_shutdown,
> };
> -
>
> ---
> base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585
> change-id: 20251006-fix-i2s-polarity-d744338fa223
>
> Best regards,
--
Jerome
Powered by blists - more mailing lists