[alsa-devel] ASoC and a codec that can't be controlled
Liam Girdwood
lg at opensource.wolfsonmicro.com
Thu May 31 19:32:13 CEST 2007
On Wed, 2007-05-30 at 10:46 -0500, Timur Tabi wrote:
> Liam Girdwood wrote:
>
> > Fwiw, you should be ok in the mean time as most audio data is stored on
> > file in little endian format. Your media player should open such little
> > endian files as *_LE when it configures the ALSA pcm. This should work
> > if your I2S, DMA and codec are marked as supporting LE formats.
>
> What about this snippet in asound.h:
>
> #ifdef __LITTLE_ENDIAN
> #define SNDRV_LITTLE_ENDIAN
> #else
> #ifdef __BIG_ENDIAN
> #define SNDRV_BIG_ENDIAN
>
> ...
>
> #ifdef SNDRV_LITTLE_ENDIAN
> #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_LE
> #define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_LE
> #define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_LE
> ...
> #endif
> #ifdef SNDRV_BIG_ENDIAN
> #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_BE
> #define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_BE
> #define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_BE
> ...
> #endif
>
> I could then do this:
>
> #define CS4270_FORMATS SNDRV_PCM_FMTBIT_S24
I'll fix this in the core so we don't need to do this. Please use _LE
atm.
>
> On big-endian platforms like mine, CS4270_FORMATS will be SNDRV_PCM_FORMAT_S24_BE and on
> little-endian platforms it will be SNDRV_PCM_FORMAT_S24_LE. Assuming the I2S registers
> are the same endian as the platform, will this work?
>
I think this probably depends on how your audio FIFO's align the data
received from memory/DMA. They should do any bit reordering based on
the audio format, and size etc set in the control register. (Although,
ymmv.)
> If not, then what about this:
>
> #define CS4270_FORMATS (SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S24_BE)
>
> That would tell ALSA that the CS4270 supports both formats, which isn't technically true,
> but it wouldn't matter because the I2S interface is what determines the actual
> "endianness" of the serial data.
>
This looks fine as a workaround atm, I'll try and have a look at this
bug tomorrow so we don't need to do this.
Liam
More information about the Alsa-devel
mailing list