[alsa-devel] [PATCH V3 1/5] sound: asoc: Adding support for STA529 Audio Codec
Lu Guanqun
guanqun.lu at intel.com
Mon Apr 11 17:45:47 CEST 2011
On Mon, Apr 11, 2011 at 01:30:00PM +0800, Rajeev Kumar wrote:
> +static int sta529_hw_params(struct snd_pcm_substream *substream,
> + struct snd_pcm_hw_params *params,
> + struct snd_soc_dai *dai)
> +{
> + struct snd_soc_pcm_runtime *rtd = substream->private_data;
> + struct snd_soc_codec *codec = rtd->codec;
> + int pdata = 0;
> +
> + switch (params_format(params)) {
> + case SNDRV_PCM_FORMAT_S16_LE:
> + pdata = 1;
> + break;
> + case SNDRV_PCM_FORMAT_S24_LE:
> + pdata = 2;
> + break;
> + case SNDRV_PCM_FORMAT_S32_LE:
> + pdata = 3;
> + break;
> + }
> + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
> + snd_soc_update_bits(codec, STA529_S2PCFG1, 0xB0, pdata);
> + else
> + snd_soc_update_bits(codec, STA529_P2SCFG1, 0xB0, pdata);
Hi,
Reading the spec, the bit 7 and bit 6 of these two registers are related
to the length of data.
While from your code, you're masking bit 10110000, which is weird.
Shouldn't it be 0xC0?
Besides, the value to snd_soc_update_bits should be shifted accordingly.
So the improved one should be something like this:
snd_soc_update_bits(codec, STA529_P2SCFG1, 0xC0, (pdata << 6));
--
guanqun
More information about the Alsa-devel
mailing list