At Fri, 13 Dec 2013 13:34:44 +0000, Mark Brown wrote:
On Fri, Dec 13, 2013 at 03:29:33PM +0200, Peter Ujfalusi wrote:
On 12/13/2013 03:04 PM, Mark Brown wrote:
This should be adding the case for the new format rather than replacing the old one shouldn't it? They ought to turn out the same on the AIF so the CODECs shouldn't care about the difference, ideally the core would hide the difference from them.
Not really since the codec has only field to specify the data format. The codec can not support S24_LE (S24_LE is basically S32_LE msbits==24) since we can not say to the codec to ignore the 8bit over the 24 bits of real data. In case of S24_3LE the I2S bus will have 24 clocks/per channel which can not be used to stream S24_LE either.
No, I'd expect the wire behaviour to be identical for any 24 bit samples (that's certainly what most drivers are written for). The memory layout differences shouldn't be visible to CODEC drivers.
Like I say we ought to be handling this stuff in the core :/
But this codec driver declares the available formats as:
#define AIC3X_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \ SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE)
so the fix for inconsistency is needed anyway.
Takashi