At Thu, 01 Nov 2007 08:15:57 +1000, Darryl Bond wrote:
Takashi Iwai wrote:
At Wed, 31 Oct 2007 11:08:06 +1000, Darryl Bond wrote:
I have a Wyse S50 terminal that I am booting diskless. I have been trying to get sound working. The box has a cs5535 chipset.
After much fiddling in the kernel source (2.6.22.5 http://2.6.22.5 ) I have been able to make it work. I'm not sure if it is a cs5535 problem as the code that fixes it is in ac97_pcm.c.
It would appear that the card is getting passed an unexpected rate. The function sound/pci/ac97/ac97_pcm.c snd_ac97_set_rate() has a section: case AC97_PCM_FRONT_DAC_RATE: case AC97_PCM_LR_ADC_RATE:
if ((ac97->regs[AC97_EXTENDED_STATUS] & AC97_EA_VRA) == 0) /* VRA */ if (rate != 48000 && rate != 96000) return -EINVAL; break; If I use 'aplay wavfile' the rate passed to this function is 44100. I I changethe code to: if (rate != 48000 && rate != 96000 && rate != 44100)
it plays but at a slightly incorrect rate.
Apparently your codec doesn't support VRA, so it cannot work except for 48kHz (or 96kHz in some cases). Usually other rates are converted via alsa-lib plugin. In the recent versions, the default PCM "default" does such conversions automagically (unless you specify explicitly the non-conversion, e.g., passing the device 'hw").
Takashi
The main application I need to run (Citrix ICA client) uses OSS sound. It works fine with other sound cards and drivers. In this case it passes 8000 to snd_ac97_set_rate().
OSS emulation also allows the automatic rate conversion, so it should work regardless whether the chip supports non-48kHz or not.
Do I need to make sure that I have a recent Alsalibs? It would appear that I am using 1.0.10-0. Does OSS use the alsalibs?
Depends. If it's a user-space emulation, then yes. If it's a kerne-space emulation, then no.
Takashi