Hi,
I am trying to write the AC'97 driver(recording) and I encounter some problems. I would like to set up some constraints but if I do so I will have a seg fault when running arecord.
here is my open function:
/* define the constraints */ static unsigned int rates[] = { 8000, 44100, };
static struct snd_pcm_hw_constraint_list hw_constraints_rates = { .count = ARRAY_SIZE(rates), .list = rates, .mask = 0, };
...
static int snd_at91_ac97_capture_open(struct snd_pcm_substream *substream) { at91_ac97_t *chip = snd_pcm_substream_chip(substream); struct snd_pcm_runtime *runtime = substream->runtime; int err;
runtime->hw = snd_at91_ac97_capture_hw; chip->capture_substream = substream; chip->period = 0;
if ((err = snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, &hw_constraints_rates)) < 0) return err;
snd_printd(KERN_DEBUG "%s : snd_at91_ac97_capture_open\n\r", driver_name);
return 0; }
I have another problem if I try to set up some constraint on the format. Indeed I do exactly the same as for the rate, but then it will fail in aplay.c in the function set_params, returning the error message:"Broken configuration for this PCM: no configuration available."
Do I miss something when trying to set up the constraints? Is there any particular way for setting the format constraints?
Regards, Sedji