Hi,
there seems to be a problem with TWL4030 hw_param programming, which is easy to reproduce over OSS emulation with this simple program:
int oss_dev = open("/dev/dsp", O_WRONLY); int stereo = 1, bits = 16, rate = 44100; ioctl(oss_dev, SNDCTL_DSP_SETFMT, &bits); ioctl(oss_dev, SNDCTL_DSP_SPEED, &rate); ioctl(oss_dev, SNDCTL_DSP_STEREO, &stereo); write(oss_dev, somebuff, sizeof(somebuff));
The above program ends up playing at 8kHz, instead of expected 44kHz. I did some call tracing and got this: [ 1092.246032] soc_pcm_hw_params, rate 8000 [ 1092.250122] twl4030_hw_params [ 1092.253234] set rate 8000 [ 1092.256103] configured 1 [ 1092.259368] soc_pcm_hw_params, rate 8000 [ 1092.263427] twl4030_hw_params [ 1092.266845] soc_pcm_hw_params, rate 44100 [ 1092.270965] twl4030_hw_params [ 1094.459106] twl4030_shutdown [ 1094.462036] configured 0
So it looks like twl4030->configured is the culprit of this, removing it solves the problem, but I guess that will break something else. Any ideas how to properly fix this?
GraÅžvydas