Merge branch 'topic/usb-uac2-effect-unit' into for-next
Merging the UAC2 effect unit parser improvement. As it's based on the previous usb-audio driver fix, it was deviated from for-next branch. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
@@ -151,6 +151,19 @@ static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
|
||||
return pcm_formats;
|
||||
}
|
||||
|
||||
static int set_fixed_rate(struct audioformat *fp, int rate, int rate_bits)
|
||||
{
|
||||
kfree(fp->rate_table);
|
||||
fp->rate_table = kmalloc(sizeof(int), GFP_KERNEL);
|
||||
if (!fp->rate_table)
|
||||
return -ENOMEM;
|
||||
fp->nr_rates = 1;
|
||||
fp->rate_min = rate;
|
||||
fp->rate_max = rate;
|
||||
fp->rates = rate_bits;
|
||||
fp->rate_table[0] = rate;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* parse the format descriptor and stores the possible sample rates
|
||||
@@ -223,6 +236,14 @@ static int parse_audio_format_rates_v1(struct snd_usb_audio *chip, struct audiof
|
||||
fp->rate_min = combine_triple(&fmt[offset + 1]);
|
||||
fp->rate_max = combine_triple(&fmt[offset + 4]);
|
||||
}
|
||||
|
||||
/* Jabra Evolve 65 headset */
|
||||
if (chip->usb_id == USB_ID(0x0b0e, 0x030b)) {
|
||||
/* only 48kHz for playback while keeping 16kHz for capture */
|
||||
if (fp->nr_rates != 1)
|
||||
return set_fixed_rate(fp, 48000, SNDRV_PCM_RATE_48000);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -336,17 +357,7 @@ static int line6_parse_audio_format_rates_quirk(struct snd_usb_audio *chip,
|
||||
case USB_ID(0x0e41, 0x4248): /* Line6 Helix >= fw 2.82 */
|
||||
case USB_ID(0x0e41, 0x4249): /* Line6 Helix Rack >= fw 2.82 */
|
||||
case USB_ID(0x0e41, 0x424a): /* Line6 Helix LT >= fw 2.82 */
|
||||
/* supported rates: 48Khz */
|
||||
kfree(fp->rate_table);
|
||||
fp->rate_table = kmalloc(sizeof(int), GFP_KERNEL);
|
||||
if (!fp->rate_table)
|
||||
return -ENOMEM;
|
||||
fp->nr_rates = 1;
|
||||
fp->rate_min = 48000;
|
||||
fp->rate_max = 48000;
|
||||
fp->rates = SNDRV_PCM_RATE_48000;
|
||||
fp->rate_table[0] = 48000;
|
||||
return 0;
|
||||
return set_fixed_rate(fp, 48000, SNDRV_PCM_RATE_48000);
|
||||
}
|
||||
|
||||
return -ENODEV;
|
||||
@@ -362,8 +373,7 @@ static int parse_audio_format_rates_v2v3(struct snd_usb_audio *chip,
|
||||
struct usb_device *dev = chip->dev;
|
||||
unsigned char tmp[2], *data;
|
||||
int nr_triplets, data_size, ret = 0, ret_l6;
|
||||
int clock = snd_usb_clock_find_source(chip, fp->protocol,
|
||||
fp->clock, false);
|
||||
int clock = snd_usb_clock_find_source(chip, fp, false);
|
||||
|
||||
if (clock < 0) {
|
||||
dev_err(&dev->dev,
|
||||
|
Reference in New Issue
Block a user