On Thursday 05 June 2008 07:49:32 am Mark Brown wrote:
- /* bit size */
- switch (params_format(params)) {
- case SNDRV_PCM_FORMAT_S16_LE:
break;
- case SNDRV_PCM_FORMAT_S20_3LE:
iface |= 0x0020;
break;
- case SNDRV_PCM_FORMAT_S24_LE:
iface |= 0x0040;
break;
- case SNDRV_PCM_FORMAT_S32_LE:
iface |= 0x0060;
break;
- }
This should either be changed to use SNDRV_PCM_FORMAT_S16 and friends, which I think will automagically use the correct endian for the selected architecture, or explicitly list both _LE and _BE formats. Not an issue, unless you're using a correct endian, I mean big endian, processor like I am :) I would think this would need to be propagated to other CODEC drivers.
+#define WM8510_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ + SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
Same thing with big endian here.
Mark, were able to verify that the default value SPKMIX differs from the datasheet? Is this a datasheet mistake, or an issue in the WM8510 part I have? The full markings on the part are "WM8510G / 63AETV9", and the datasheet is "February 2008, Rev 4.4".
--- Geoffrey