Commit 8370d9b0 authored by Mark Brown's avatar Mark Brown Committed by Takashi Iwai

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: default avatarMark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20221201170745.1111236-4-broonie@kernel.orgSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent f944f8b5
...@@ -241,6 +241,7 @@ static void test_pcm_time1(struct pcm_data *data, ...@@ -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 @@ static void test_pcm_time1(struct pcm_data *data, ...@@ -310,11 +311,17 @@ static void test_pcm_time1(struct pcm_data *data,
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) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment