Thus spake Liam Girdwood:
On Thu, 2007-04-26 at 15:10 +0200, Markus Korber wrote:
I'm currently implementing a ASoC solution for a custom chip and I've written a codec, I2S, PCM, and machine driver. However, when using aplay I get the following error (requested format was: 2):
root:~# aplay -M -D hw:0,0 test.wav Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo aplay: set_params:906: Sample format non available
However, I've told each piece involved, that it is capable of playing S16_LE. So I don't know what I am missing here?
Is your target CPU ARM based ?
Yes, it's an arm926ejs.
If so, there is a gcc optimisation bug that causes a refinement error (like above).
I'm using buildroot:
,----[ arm-linux-gcc -v ] | Using built-in specs. | Target: arm-linux-uclibcgnueabi | gcc version 4.1.1 `----
Fwiw, Openembedded builds a working toolchain for ARM and ALSA.
Unfortunately, so far I have had no luck building this toolchain. I'll give it another try as soon as possible. Meanwhile I've compiled with -O1 with the results shown below.
Should I provide more debugging output like RULES_DEBUG output from sound/core/pcm_native.c?
Yes please. Can you also set SOC_DEBUG to 1 in soc-core.c [...] Can you send the debug output with the debug turned on (as above) and with aplay writing directly to the hardware i.e.
aplay -Dhw:0,0 test.wav
root:~# ./alsa-hg/alsa-utils/aplay/aplay -M -D hw:0,0 test.wav chip-pcm: Entered chip_pcm_open board_cs4265: Entered board_cs4265_startup asoc: CS4265 <-> chip-i2s info: asoc: rate mask 0xe0 asoc: min ch 2 max ch 2 asoc: min rate 32000 max rate 48000 Playing WAVE 'teACCESS = st.wav' : Signed00000000ffffffffffffffff -> 16 bit Lit tle E0000000000000012 ndian, Rate 4410FORMAT = 0 Hz, Stereo 00000000ffffffffffffffff -> 0000000000000004 SUBFORMAT = 00000000ffffffffffffffff -> 0000000000000001 SAMPLE_BITS = [0 4294967295] -> [0 4294967295] FRAME_BITS = [0 4294967295] -> [0 4294967295] CHANNELS = [0 4294967295] -> [2 2] RATE = [0 4294967295] -> [32000 48000] PERIOD_TIME = [0 4294967295] -> [0 4294967295] PERIOD_SIZE = [0 4294967295] -> [0 4294967295] PERIOD_BYTES = [0 4294967295] -> [32 8192] PERIODS = [0 4294967295] -> [2 1024] BUFFER_TIME = [0 4294967295] -> [0 4294967295] BUFFER_SIZE = [0 4294967295] -> [0 4294967295] BUFFER_BYTES = [0 4294967295] -> [32 32768] TICK_TIME = [0 4294967295] -> [10000 10000] Rule 0 [c01b0ea8]: FORMAT = 4 -> 0 aplay: set_params:878: Broken configuration for this PCM: no configurations available
Regards, Markus Korber