[PATCH] ASoC: sun4i-codec: fixed 32bit audio capture support for H3/H2+

Maxime Ripard maxime.ripard at free-electrons.com
Mon Oct 30 01:55:42 PDT 2017


On Sun, Oct 29, 2017 at 02:41:01AM -0700, Andrea Bondavalli wrote:
> Fixed support for 32bit audio capture for Allwinner H3/H2+ SoC
> 
> Signed-off-by: Andrea Bondavalli <andrea.bondavalli74 at gmail.com>

A more detailed commit log would be welcome.

What are the issues involved would be the more valuable information,
and then how you'ring fixing it and why would be great.

> ---
>  sound/soc/sunxi/sun4i-codec.c | 29 ++++++++++++++++++++++++-----
>  1 file changed, 24 insertions(+), 5 deletions(-)
> 
> diff --git a/sound/soc/sunxi/sun4i-codec.c b/sound/soc/sunxi/sun4i-codec.c
> index baa9007..f40fa34 100644
> --- a/sound/soc/sunxi/sun4i-codec.c
> +++ b/sound/soc/sunxi/sun4i-codec.c
> @@ -346,11 +346,6 @@ static int sun4i_codec_prepare_capture(struct snd_pcm_substream *substream,
>  				   0x3 << 8,
>  				   0x1 << 8);
> 
> -	/* Fill most significant bits with valid data MSB */
> -	regmap_field_update_bits(scodec->reg_adc_fifoc,
> -				 BIT(SUN4I_CODEC_ADC_FIFOC_RX_FIFO_MODE),
> -				 BIT(SUN4I_CODEC_ADC_FIFOC_RX_FIFO_MODE));
> -
>  	return 0;
>  }
> 
> @@ -490,6 +485,30 @@ static int sun4i_codec_hw_params_capture(struct sun4i_codec *scodec,
>  					 BIT(SUN4I_CODEC_ADC_FIFOC_MONO_EN),
>  					 0);
> 
> +	/* Set the number of sample bits to either 16 or 24 bits */
> +	if (hw_param_interval(params, SNDRV_PCM_HW_PARAM_SAMPLE_BITS)->min == 32) {
> +		regmap_field_update_bits(scodec->reg_adc_fifoc,
> +				   BIT(SUN4I_CODEC_ADC_FIFOC_RX_SAMPLE_BITS),
> +				   BIT(SUN4I_CODEC_ADC_FIFOC_RX_SAMPLE_BITS));
> +
> +		regmap_field_update_bits(scodec->reg_adc_fifoc,
> +				   BIT(SUN4I_CODEC_ADC_FIFOC_RX_FIFO_MODE),
> +				   0);
> +
> +		scodec->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
> +	} else {
> +		regmap_field_update_bits(scodec->reg_adc_fifoc,
> +				   BIT(SUN4I_CODEC_ADC_FIFOC_RX_SAMPLE_BITS),
> +				   0);
> +
> +		/* Fill most significant bits with valid data MSB */
> +		regmap_field_update_bits(scodec->reg_adc_fifoc,
> +				   BIT(SUN4I_CODEC_ADC_FIFOC_RX_FIFO_MODE),
> +				   BIT(SUN4I_CODEC_ADC_FIFOC_RX_FIFO_MODE));
> +
> +		scodec->capture_dma_data.addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;

Doesn't that break 24 bits?

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20171030/5f213c2b/attachment.sig>


More information about the linux-arm-kernel mailing list