[alsa-devel] [PATCH v2] ALSA: ASoC: McASP: add support for 24 bit samples
Daniel Mack
zonque at gmail.com
Tue Oct 9 13:00:43 CEST 2012
On 09.10.2012 12:24, Mark Brown wrote:
> On Tue, Oct 09, 2012 at 11:47:57AM +0200, Daniel Mack wrote:
>> On 09.10.2012 11:41, Mike Looijmans wrote:
>>> Sorry for the lack of quoting, but I onle get the digest.
>
>>> These are wrong:
>
>>> + case SNDRV_PCM_FORMAT_U24_LE: + case
>>> SNDRV_PCM_FORMAT_S24_LE:
>
>>> These pack a 24-bit sample value in a 32-bit word. The codec will
>>> send 32 bits to the McASP, and you should transfer 32 bits to the
>>> user, not just 24. Hence, SNDRV_PCM_FORMAT_S24_LE must be treated
>>> just like SNDRV_PCM_FORMAT_S32_LE.
>
>>> I've tested that on a DA850-alike board with several TLV320AIC3256
>>> codecs, treating them as 3-byte samples will reasult in invalid
>>> data.
>
>> Ok, thanks for reporting this. Would like to send a patch or want me to
>> fix it?
>
> The above explanation isn't quite right. For 24 bit the CODEC should be
> working with 24 bits on the wire (though obviously extra BCLKs are
> allowed) and the AP should be working with 32 bit words in memory. The
> issue here is probably that you're working with real 24 bit data in RAM
> too.
Hmm, I don't understand. I thought S24_3LE exists to denote a 3-byte
representation, because S24_LE uses 32 bits? Hence Mike would be right
that S24_LE has to use a 4-byte dma transfer size, no?
I'm using S24_3LE here, hence that didn't hit me.
Where's the confusion? :)
Daniel
More information about the Alsa-devel
mailing list