On Fri, Jun 06, 2008 at 08:00:04PM -0400, Jon Smirl wrote:
Why is the AC97 format set to S16 in all of the drivers? The link is 20b and my codec takes 20b, how do I get 20b data to the device? I tried using SNDRV_PCM_FORMAT_S20_3BE but all I get is static.
The format that is set needs to correspond to what your AC97 controller needs as input. The setting for the codec just needs to match one of the supported ones for the controller - the specific memory layout of the data should not be important, the controller ought to reformat the data into whatever is appropriate for the bus.
This isn't entirely ideal but in practice works well since most controllers need samples in pretty much the form they're outputing and so the sample size in RAM usually needs to correspond to the sample size that appears on the bus.
As Clemens said, try S32.