Rafael Guayer wrote:
The plataform driver and the I2S hardware on the ARM
SoC supports sample
resolutions of 16, 20 and 24 bits, and word sizes of 16, 20, 24 and 32
bits. Signed, little or big endian.
The i2s-DMA plataform driver and hardware, only 8, 16 and 32 bits transfers
are possible.
The problem is the CODEC (CS4245 Cirrus Logic), that, for I2S format,
supports only 24 bit resolution in 32 bit words, signed, litle endian
The format on the I²S bus is pretty much independent from the format that
the DMA controller reads from/writes to memory.
In the i2s plataform driver, in *_hw_params, when
params_format(params) ==
SNDRV_PCM_FMTBIT_S24_3LE,
24-bit words not supported by the DMA platform driver.
What is this widely used format for 24bits on ALSA?
SNDRV_PCM_FORMAT_S32_LE. Apparently, it's the only one that your DMA
hardware supports for 24-bit samples.
Regards,
Clemens