|
@@ -598,16 +598,38 @@ static int snd_pcm_hw_params_choose(struct snd_pcm_substream *pcm,
|
|
-1
|
|
-1
|
|
};
|
|
};
|
|
const int *v;
|
|
const int *v;
|
|
|
|
+ struct snd_mask old_mask;
|
|
|
|
+ struct snd_interval old_interval;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
for (v = vars; *v != -1; v++) {
|
|
for (v = vars; *v != -1; v++) {
|
|
|
|
+ /* Keep old parameter to trace. */
|
|
|
|
+ if (trace_hw_mask_param_enabled()) {
|
|
|
|
+ if (hw_is_mask(*v))
|
|
|
|
+ old_mask = *hw_param_mask(params, *v);
|
|
|
|
+ }
|
|
|
|
+ if (trace_hw_interval_param_enabled()) {
|
|
|
|
+ if (hw_is_interval(*v))
|
|
|
|
+ old_interval = *hw_param_interval(params, *v);
|
|
|
|
+ }
|
|
if (*v != SNDRV_PCM_HW_PARAM_BUFFER_SIZE)
|
|
if (*v != SNDRV_PCM_HW_PARAM_BUFFER_SIZE)
|
|
err = snd_pcm_hw_param_first(pcm, params, *v, NULL);
|
|
err = snd_pcm_hw_param_first(pcm, params, *v, NULL);
|
|
else
|
|
else
|
|
err = snd_pcm_hw_param_last(pcm, params, *v, NULL);
|
|
err = snd_pcm_hw_param_last(pcm, params, *v, NULL);
|
|
if (snd_BUG_ON(err < 0))
|
|
if (snd_BUG_ON(err < 0))
|
|
return err;
|
|
return err;
|
|
|
|
+
|
|
|
|
+ /* Trace the parameter. */
|
|
|
|
+ if (hw_is_mask(*v)) {
|
|
|
|
+ trace_hw_mask_param(pcm, *v, 0, &old_mask,
|
|
|
|
+ hw_param_mask(params, *v));
|
|
|
|
+ }
|
|
|
|
+ if (hw_is_interval(*v)) {
|
|
|
|
+ trace_hw_interval_param(pcm, *v, 0, &old_interval,
|
|
|
|
+ hw_param_interval(params, *v));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|