[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20200612192942.GA26587@Asurada-Nvidia>
Date: Fri, 12 Jun 2020 12:29:43 -0700
From: Nicolin Chen <nicoleotsuka@...il.com>
To: Shengjiu Wang <shengjiu.wang@....com>
Cc: timur@...nel.org, Xiubo.Lee@...il.com, festevam@...il.com,
broonie@...nel.org, perex@...ex.cz, tiwai@...e.com,
alsa-devel@...a-project.org, linuxppc-dev@...ts.ozlabs.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] ASoC: fsl_ssi: Fix bclk calculation for mono channel
On Tue, Jun 09, 2020 at 04:19:28PM +0800, Shengjiu Wang wrote:
> For mono channel, ssi will switch to normal mode. In normal
> mode, the Word Length Control bits control the word length
> divider in clock generator, which is different with I2S master
> mode, the word length is fixed to 32bit.
>
> So we refine the famula for mono channel, otherwise there
> will be sound issue for S24_LE.
>
> Fixes: b0a7043d5c2c ("ASoC: fsl_ssi: Caculate bit clock rate using slot number and width")
> Signed-off-by: Shengjiu Wang <shengjiu.wang@....com>
> ---
> sound/soc/fsl/fsl_ssi.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c
> index bad89b0d129e..e347776590f7 100644
> --- a/sound/soc/fsl/fsl_ssi.c
> +++ b/sound/soc/fsl/fsl_ssi.c
> @@ -695,6 +695,11 @@ static int fsl_ssi_set_bclk(struct snd_pcm_substream *substream,
> /* Generate bit clock based on the slot number and slot width */
> freq = slots * slot_width * params_rate(hw_params);
>
> + /* The slot_width is not fixed to 32 for normal mode */
> + if (params_channels(hw_params) == 1)
This function has a local variable that you can reuse here:
unsigned int slots = params_channels(hw_params);
> + freq = (slots <= 1 ? 2 : slots) * params_width(hw_params) *
> + params_rate(hw_params);
We have a small section of slots and slot_width calculation
at the top of this function where we can squash these in.
Powered by blists - more mailing lists