I am developing an ALSA driver for the AD1938 codec on uClinux for Blackfin (I don't believe my problem is specific to that platform). When I set up the snd_pcm_hardware_t structure with
.formats = SNDRV_PCM_FMTBIT_S32_LE,
I can run both "aplay < /dev/urandom" and an OSS test application ("tone") that sends a sine wave, but the sine wave is "inside out" (see http://www.link-comm.com/temp/inside_out.gif for a screen shot) because the codec needs unsigned data.
If I set up the snd_pcm_hardware_t structure with
.formats = SNDRV_PCM_FMTBIT_U32_LE,
the OSS test application sends a nice sine wave, but aplay fails with the following messages:
root:~> aplay < /dev/urandom ALSA sound/blackfin/ad1836.c:1050: snd_ad1836_playback_open Playing raw data 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono snd_pcm_hw_refine() ACCESS = 00000000ffffffffffffffff -> 0000000000000008 FORMAT = 0000000000000400 -> 0000000000000000 snd_pcm_hw_refine() ACCESS = 333f8fc000a32c60c0333f8fc -> 333f8fc000a00000008 ALSA lib ALSA sound/blackfin/ad1836.c:1172: snd_ad1836_hw_free ../../../src/pcm/pcm_params.c:2152:(snd_pcm_hw_refine_slave) Slave PCM not usable aplay: set_params:882: Broken configuration for this PCM: no configurations available
I am working my way through the ALSA source, but I have not yet figured out why aplay won't work with the unsigned codec configuration. Any suggestions?
Steve
P.S. A more complete log of the console output with both settings for those commands and most of the info from aadebug can be found at the following URLs: http://www.link-comm.com/temp/SNDRV_PCM_FMTBIT_S32_LE.txt http://www.link-comm.com/temp/SNDRV_PCM_FMTBIT_U32_LE.txt
--- Steve Strobel Link Communications, Inc. 1035 Cerise Rd Billings, MT 59101-7378 (406) 245-5002 ext 102 (406) 245-4889 (fax) WWW: http://www.link-comm.com MailTo:steve.strobel@link-comm.com