mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 18:43:33 +02:00
ALSA: usb-audio: Apply linear volume quirk on MV-SILICON devices
MV-SILICON is a SoC manufacturer producing multifunctional audio SoCs. Many devices built on top of their SDK share a common quirk that the Playback and Capture mixers use linear volume with val = 0/4096/1. The SDK seems to always report "MV-SILICON" for manufacturer string. Hence, match it so that we don't need to define quirk table entries separately for each devices. The "val = 0/4096/1" pattern is also checked against before applying the quirk, in order that the quirk won't accidentally break unseen variants. Quirky device samples: usb 7-1: New USB device found, idVendor=1235, idProduct=0003, bcdDevice= 1.00 usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 7-1: Product: G1 usb 7-1: Manufacturer: MV-SILICON usb 7-1: SerialNumber: 20190808 usb 7-1: New USB device found, idVendor=1235, idProduct=0003, bcdDevice= 1.00 usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 7-1: Product: mvsilicon B1 usb audio usb 7-1: Manufacturer: MV-SILICON usb 7-1: SerialNumber: 20190808 usb 5-1.4: New USB device found, idVendor=8888, idProduct=1719, bcdDevice= 1.00 usb 5-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 5-1.4: Product: HF310 USB Audio usb 5-1.4: Manufacturer: MV-SILICON usb 5-1.4: SerialNumber: 20190808 usb 7-1: New USB device found, idVendor=2717, idProduct=5086, bcdDevice= 1.00 usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 7-1: Product: Redmi 电脑音箱 usb 7-1: Manufacturer: MV-SILICON usb 7-1: SerialNumber: 20190808 usb 2-1.2: New USB device found, idVendor=3142, idProduct=a601, bcdDevice= 1.00 usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 2-1.2: Product: fifine Microphone usb 2-1.2: Manufacturer: MV-SILICON usb 2-1.2: SerialNumber: 20190808 * https://forum.ubuntu-it.org/viewtopic.php?t=659345 Signed-off-by: Rong Zhang <i@rong.moe> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20260303194805.266158-9-i@rong.moe
This commit is contained in:
parent
f510f3bacc
commit
dfd4b0d46e
|
|
@ -4588,6 +4588,24 @@ static void snd_dragonfly_quirk_db_scale(struct usb_mixer_interface *mixer,
|
|||
}
|
||||
}
|
||||
|
||||
static void snd_usb_mv_silicon_quirks(struct usb_mixer_interface *mixer,
|
||||
struct usb_mixer_elem_info *cval,
|
||||
struct snd_kcontrol *kctl)
|
||||
{
|
||||
if (cval->min == 0 && cval->max == 4096 && cval->res == 1) {
|
||||
/* The final effects will be printed later. */
|
||||
usb_audio_info(mixer->chip, "applying MV-SILICON quirks (0/4096/1 variant)\n");
|
||||
|
||||
/* Respect MIN_MUTE set by module parameters. */
|
||||
if (!(mixer->chip->quirk_flags & QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE))
|
||||
mixer->chip->quirk_flags |= QUIRK_FLAG_MIXER_PLAYBACK_LINEAR_VOL;
|
||||
if (!(mixer->chip->quirk_flags & QUIRK_FLAG_MIXER_CAPTURE_MIN_MUTE))
|
||||
mixer->chip->quirk_flags |= QUIRK_FLAG_MIXER_CAPTURE_LINEAR_VOL;
|
||||
} else {
|
||||
usb_audio_dbg(mixer->chip, "not applying MV-SILICON quirks on unknown variant");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Some Plantronics headsets have control names that don't meet ALSA naming
|
||||
* standards. This function fixes nonstandard source names. By the time
|
||||
|
|
@ -4664,6 +4682,10 @@ void snd_usb_mixer_fu_apply_quirk(struct usb_mixer_interface *mixer,
|
|||
break;
|
||||
}
|
||||
|
||||
if (cval->control == UAC_FU_VOLUME &&
|
||||
!strncmp(mixer->chip->card->longname, "MV-SILICON", 10))
|
||||
snd_usb_mv_silicon_quirks(mixer, cval, kctl);
|
||||
|
||||
/* lowest playback value is muted on some devices */
|
||||
if (mixer->chip->quirk_flags & QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE)
|
||||
if (strstr(kctl->id.name, "Playback")) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user