[alsa-devel] [PATCH] ASoC: mcasp: don't override bclk divider if it was provided by the machine

Peter Ujfalusi peter.ujfalusi at ti.com
Wed Jul 16 14:13:29 CEST 2014


On 07/16/2014 03:04 PM, Daniel Mack wrote:
> If a machine driver provides an BCLK divider to the McASP driver, skip the
> automatic calculation.
> 
> This fixes machines on which the physical sample transport always works
> in 32 bits, even though not all of them are actually used.
> snd_soc_params_to_bclk() will fail to address such cases properly.

Acked-by: Peter Ujfalusi <peter.ujfalusi at ti.com>

> 
> Signed-off-by: Daniel Mack <zonque at gmail.com>
> ---
>  sound/soc/davinci/davinci-mcasp.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c
> index 0518f27..dbeb4fd 100644
> --- a/sound/soc/davinci/davinci-mcasp.c
> +++ b/sound/soc/davinci/davinci-mcasp.c
> @@ -64,6 +64,7 @@ struct davinci_mcasp {
>  	u8	num_serializer;
>  	u8	*serial_dir;
>  	u8	version;
> +	u8	bclk_div;
>  	u16	bclk_lrclk_ratio;
>  	int	streams;
>  
> @@ -420,6 +421,7 @@ static int davinci_mcasp_set_clkdiv(struct snd_soc_dai *dai, int div_id, int div
>  			       ACLKXDIV(div - 1), ACLKXDIV_MASK);
>  		mcasp_mod_bits(mcasp, DAVINCI_MCASP_ACLKRCTL_REG,
>  			       ACLKRDIV(div - 1), ACLKRDIV_MASK);
> +		mcasp->bclk_div = div;
>  		break;
>  
>  	case 2:		/* BCLK/LRCLK ratio */
> @@ -722,8 +724,11 @@ static int davinci_mcasp_hw_params(struct snd_pcm_substream *substream,
>  	int period_size = params_period_size(params);
>  	int ret;
>  
> -	/* If mcasp is BCLK master we need to set BCLK divider */
> -	if (mcasp->bclk_master) {
> +	/*
> +	 * If mcasp is BCLK master, and a BCLK divider was not provided by
> +	 * the machine driver, we need to calculate the ratio.
> +	 */
> +	if (mcasp->bclk_master && mcasp->bclk_div == 0) {
>  		unsigned int bclk_freq = snd_soc_params_to_bclk(params);
>  		if (mcasp->sysclk_freq % bclk_freq != 0) {
>  			dev_err(mcasp->dev, "Can't produce required BCLK\n");
> 


-- 
Péter


More information about the Alsa-devel mailing list