in most_snd.c [446:483]
static int audio_set_hw_params(struct snd_pcm_hardware *pcm_hw,
u16 ch_num, char *sample_res,
struct most_channel_config *cfg)
{
int i;
for (i = 0; i < ARRAY_SIZE(sinfo); i++) {
if (!strcmp(sample_res, sinfo[i].sample_res))
goto found;
}
pr_err("Unsupported PCM format\n");
return -EINVAL;
found:
if (!ch_num) {
pr_err("Bad number of channels\n");
return -EINVAL;
}
if (cfg->subbuffer_size != ch_num * sinfo[i].bytes) {
pr_err("Audio resolution doesn't fit subbuffer size\n");
return -EINVAL;
}
pcm_hw->info = MOST_PCM_INFO;
pcm_hw->rates = SNDRV_PCM_RATE_48000;
pcm_hw->rate_min = 48000;
pcm_hw->rate_max = 48000;
pcm_hw->buffer_bytes_max = cfg->num_buffers * cfg->buffer_size;
pcm_hw->period_bytes_min = cfg->buffer_size;
pcm_hw->period_bytes_max = cfg->buffer_size;
pcm_hw->periods_min = 1;
pcm_hw->periods_max = cfg->num_buffers;
pcm_hw->channels_min = ch_num;
pcm_hw->channels_max = ch_num;
pcm_hw->formats = sinfo[i].formats;
return 0;
}