kselftest/alsa: Report failures to set the requested channels as skips
If constraint selection gives us a number of channels other than the one that we asked for that isn't a failure, that is the device implementing constraints and advertising that it can't support whatever we asked for. Report such cases as a test skip rather than failure so we don't have false positives. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20221201170745.1111236-4-broonie@kernel.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
f944f8b539
commit
8370d9b00c
1 changed files with 8 additions and 1 deletions
|
@ -241,6 +241,7 @@ static void test_pcm_time1(struct pcm_data *data,
|
||||||
snd_pcm_sframes_t frames;
|
snd_pcm_sframes_t frames;
|
||||||
long long ms;
|
long long ms;
|
||||||
long rate, channels, period_size, buffer_size;
|
long rate, channels, period_size, buffer_size;
|
||||||
|
unsigned int rchannels;
|
||||||
unsigned int rrate;
|
unsigned int rrate;
|
||||||
snd_pcm_uframes_t rperiod_size, rbuffer_size, start_threshold;
|
snd_pcm_uframes_t rperiod_size, rbuffer_size, start_threshold;
|
||||||
timestamp_t tstamp;
|
timestamp_t tstamp;
|
||||||
|
@ -310,11 +311,17 @@ __format:
|
||||||
snd_pcm_format_name(format), snd_strerror(err));
|
snd_pcm_format_name(format), snd_strerror(err));
|
||||||
goto __close;
|
goto __close;
|
||||||
}
|
}
|
||||||
err = snd_pcm_hw_params_set_channels(handle, hw_params, channels);
|
rchannels = channels;
|
||||||
|
err = snd_pcm_hw_params_set_channels_near(handle, hw_params, &rchannels);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
snprintf(msg, sizeof(msg), "snd_pcm_hw_params_set_channels %ld: %s", channels, snd_strerror(err));
|
snprintf(msg, sizeof(msg), "snd_pcm_hw_params_set_channels %ld: %s", channels, snd_strerror(err));
|
||||||
goto __close;
|
goto __close;
|
||||||
}
|
}
|
||||||
|
if (rchannels != channels) {
|
||||||
|
snprintf(msg, sizeof(msg), "channels unsupported %ld != %ld", channels, rchannels);
|
||||||
|
skip = true;
|
||||||
|
goto __close;
|
||||||
|
}
|
||||||
rrate = rate;
|
rrate = rate;
|
||||||
err = snd_pcm_hw_params_set_rate_near(handle, hw_params, &rrate, 0);
|
err = snd_pcm_hw_params_set_rate_near(handle, hw_params, &rrate, 0);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue