Hi,
I have a problem with my recording driver. I have set up a pcm_hardware structure in which I define the format supported by my hardware:
static struct snd_pcm_hardware snd_at91_ac97_capture_hw = { .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_BLOCK_TRANSFER), .formats = (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE | SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_U20_3LE | SNDRV_PCM_FMTBIT_S20_3BE | SNDRV_PCM_FMTBIT_U20_3BE | SNDRV_PCM_FMTBIT_S18_3LE | SNDRV_PCM_FMTBIT_U18_3LE | SNDRV_PCM_FMTBIT_S18_3BE | SNDRV_PCM_FMTBIT_U18_3BE), .rates = SNDRV_PCM_RATE_CONTINUOUS, .rate_min = 8000, .rate_max = 48000, .channels_min = 1, .channels_max = 2, .buffer_bytes_max = 256*1024, .period_bytes_min = 1024, .period_bytes_max = 4*1024, .periods_min = 1, .periods_max = 64, };
Then in my open function I pass it to the runtime struct.
Nevertheless if I try to run arecord with this option: arecord -d 1 test.wav, I will have a kernel oops. The default format is U8, but it is not supported by my Hardware, abd it is not defined in my structure, so I though that it should exit arecord but not crash.
Do I miss something when defining my pcm_hardware strucutre, or do I forgot to use a specific function which should return me an error?
I have try to set up some constraints as well(for the rate and the format), but still I have the same crash.
Regards, Sedji