Skip to content

Commit

Permalink
ALSA: usb-audio: Fix EP matching for continuous rates
Browse files Browse the repository at this point in the history
The function to evaluate the match of the parameters with an EP
assumes only the discrete rate tables and doesn't handle the
continuous rates properly.

This patch fixes match_endpoint_audioformats() to handle the
continuous rates.  Also the almost useless debug prints there are
dropped.

Tested-by: Keith Milner <[email protected]>
Tested-by: Dylan Robinson <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Takashi Iwai <[email protected]>
  • Loading branch information
tiwai committed Nov 23, 2020
1 parent 75c16b5 commit 61cc2d7
Showing 1 changed file with 13 additions and 24 deletions.
37 changes: 13 additions & 24 deletions sound/usb/pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -695,41 +695,30 @@ static int match_endpoint_audioformats(struct snd_usb_substream *subs,
struct audioformat *match, int rate,
snd_pcm_format_t pcm_format)
{
int i;
int score = 0;
int i, score;

if (fp->channels < 1) {
dev_dbg(&subs->dev->dev,
"%s: (fmt @%p) no channels\n", __func__, fp);
if (fp->channels < 1)
return 0;
}

if (!(fp->formats & pcm_format_to_bits(pcm_format))) {
dev_dbg(&subs->dev->dev,
"%s: (fmt @%p) no match for format %d\n", __func__,
fp, pcm_format);
if (!(fp->formats & pcm_format_to_bits(pcm_format)))
return 0;
}

for (i = 0; i < fp->nr_rates; i++) {
if (fp->rate_table[i] == rate) {
score++;
break;
if (fp->rates & SNDRV_PCM_RATE_CONTINUOUS) {
if (rate < fp->rate_min || rate > fp->rate_max)
return 0;
} else {
for (i = 0; i < fp->nr_rates; i++) {
if (fp->rate_table[i] == rate)
break;
}
}
if (!score) {
dev_dbg(&subs->dev->dev,
"%s: (fmt @%p) no match for rate %d\n", __func__,
fp, rate);
return 0;
if (i >= fp->nr_rates)
return 0;
}

score = 1;
if (fp->channels == match->channels)
score++;

dev_dbg(&subs->dev->dev,
"%s: (fmt @%p) score %d\n", __func__, fp, score);

return score;
}

Expand Down

0 comments on commit 61cc2d7

Please sign in to comment.