Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'sound-6.17-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"A collection of small changes including a few regression fixes:

- Regression fix for Intel SKL/KBL HD-audio bindings

- Regression fix for missing Nvidia HDMI codec entries after the
recent code reorganization

- A few TAS2781 codec regression fixes

- Fix for ASoC component lookup breakage

- Usual HD-audio, USB-audio and SOF quirk entries"

* tag 'sound-6.17-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda/hdmi: Add pin fix for another HP EliteDesk 800 G4 model
ALSA: usb-audio: Allow Focusrite devices to use low samplerates
ALSA: hda: tas2781: reorder tas2563 calibration variables
ALSA: hda: tas2781: fix tas2563 EFI data endianness
ALSA: firewire-motu: drop EPOLLOUT from poll return values as write is not supported
ALSA: docs: Add documents for recently changes in snd-usb-audio
ALSA: usb-audio: Add mute TLV for playback volumes on more devices
ASoC: SOF: Intel: WCL: Add the sdw_process_wakeen op
ALSA: hda: Avoid binding with SOF for SKL/KBL platforms
ASoC: rsnd: tidyup direction name on rsnd_dai_connect()
ALSA: hda/tas2781: Fix EFI name for calibration beginning with 1 instead of 0
ALSA: usb-audio: move mixer_quirks' min_mute into common quirk
ALSA: hda/realtek: Fix headset mic for TongFang X6[AF]R5xxY
ALSA: hda/hdmi: Restore missing HDMI codec entries
ASoC: codecs: idt821034: fix wrong log in idt821034_chip_direction_output()
ASoC: soc-core: tidyup snd_soc_lookup_component_nolocked()
ASoC: soc-core: care NULL dirver name on snd_soc_lookup_component_nolocked()
ALSA: hda: intel-dsp-config: Select SOF driver on MTL Chromebooks
ALSA: usb-audio: Add mute TLV for playback volumes on some devices

+130 -34
+25 -4
Documentation/sound/alsa-configuration.rst
··· 2253 2253 Default: 0x0000 2254 2254 ignore_ctl_error 2255 2255 Ignore any USB-controller regarding mixer interface (default: no) 2256 + ``ignore_ctl_error=1`` may help when you get an error at accessing 2257 + the mixer element such as URB error -22. This happens on some 2258 + buggy USB device or the controller. This workaround corresponds to 2259 + the ``quirk_flags`` bit 14, too. 2256 2260 autoclock 2257 2261 Enable auto-clock selection for UAC2 devices (default: yes) 2262 + lowlatency 2263 + Enable low latency playback mode (default: yes). 2264 + Could disable it to switch back to the old mode if face a regression. 2258 2265 quirk_alias 2259 2266 Quirk alias list, pass strings like ``0123abcd:5678beef``, which 2260 2267 applies the existing quirk for the device 5678:beef to a new ··· 2291 2284 The driver prints a message like "Found post-registration device 2292 2285 assignment: 1234abcd:04" for such a device, so that user can 2293 2286 notice the need. 2287 + skip_validation 2288 + Skip unit descriptor validation (default: no). 2289 + The option is used to ignores the validation errors with the hexdump 2290 + of the unit descriptor instead of a driver probe error, so that we 2291 + can check its details. 2294 2292 quirk_flags 2295 2293 Contains the bit flags for various device specific workarounds. 2296 2294 Applied to the corresponding card index. ··· 2319 2307 * bit 16: Set up the interface at first like UAC1 2320 2308 * bit 17: Apply the generic implicit feedback sync mode 2321 2309 * bit 18: Don't apply implicit feedback sync mode 2310 + * bit 19: Don't closed interface during setting sample rate 2311 + * bit 20: Force an interface reset whenever stopping & restarting 2312 + a stream 2313 + * bit 21: Do not set PCM rate (frequency) when only one rate is 2314 + available for the given endpoint. 2315 + * bit 22: Set the fixed resolution 16 for Mic Capture Volume 2316 + * bit 23: Set the fixed resolution 384 for Mic Capture Volume 2317 + * bit 24: Set minimum volume control value as mute for devices 2318 + where the lowest playback value represents muted state instead 2319 + of minimum audible volume 2322 2320 2323 2321 This module supports multiple devices, autoprobe and hotplugging. 2324 2322 ··· 2336 2314 Don't put the value over 20. Changing via sysfs has no sanity 2337 2315 check. 2338 2316 2339 - NB: ``ignore_ctl_error=1`` may help when you get an error at accessing 2340 - the mixer element such as URB error -22. This happens on some 2341 - buggy USB device or the controller. This workaround corresponds to 2342 - the ``quirk_flags`` bit 14, too. 2317 + NB: ``ignore_ctl_error=1`` just provides a quick way to work around the 2318 + issues. If you have a buggy device that requires these quirks, please 2319 + report it to the upstream. 2343 2320 2344 2321 NB: ``quirk_alias`` option is provided only for testing / development. 2345 2322 If you want to have a proper support, contact to upstream for
+1 -1
sound/firewire/motu/motu-hwdep.c
··· 111 111 events = 0; 112 112 spin_unlock_irq(&motu->lock); 113 113 114 - return events | EPOLLOUT; 114 + return events; 115 115 } 116 116 117 117 static int hwdep_get_info(struct snd_motu *motu, void __user *arg)
+1
sound/hda/codecs/hdmi/hdmi.c
··· 1582 1582 static const struct snd_pci_quirk force_connect_list[] = { 1583 1583 SND_PCI_QUIRK(0x103c, 0x83e2, "HP EliteDesk 800 G4", 1), 1584 1584 SND_PCI_QUIRK(0x103c, 0x83ef, "HP MP9 G4 Retail System AMS", 1), 1585 + SND_PCI_QUIRK(0x103c, 0x845a, "HP EliteDesk 800 G4 DM 65W", 1), 1585 1586 SND_PCI_QUIRK(0x103c, 0x870f, "HP", 1), 1586 1587 SND_PCI_QUIRK(0x103c, 0x871a, "HP", 1), 1587 1588 SND_PCI_QUIRK(0x103c, 0x8711, "HP", 1),
+17
sound/hda/codecs/hdmi/nvhdmi.c
··· 198 198 HDA_CODEC_ID_MODEL(0x10de0098, "GPU 98 HDMI/DP", MODEL_GENERIC), 199 199 HDA_CODEC_ID_MODEL(0x10de0099, "GPU 99 HDMI/DP", MODEL_GENERIC), 200 200 HDA_CODEC_ID_MODEL(0x10de009a, "GPU 9a HDMI/DP", MODEL_GENERIC), 201 + HDA_CODEC_ID_MODEL(0x10de009b, "GPU 9b HDMI/DP", MODEL_GENERIC), 202 + HDA_CODEC_ID_MODEL(0x10de009c, "GPU 9c HDMI/DP", MODEL_GENERIC), 201 203 HDA_CODEC_ID_MODEL(0x10de009d, "GPU 9d HDMI/DP", MODEL_GENERIC), 202 204 HDA_CODEC_ID_MODEL(0x10de009e, "GPU 9e HDMI/DP", MODEL_GENERIC), 203 205 HDA_CODEC_ID_MODEL(0x10de009f, "GPU 9f HDMI/DP", MODEL_GENERIC), 204 206 HDA_CODEC_ID_MODEL(0x10de00a0, "GPU a0 HDMI/DP", MODEL_GENERIC), 207 + HDA_CODEC_ID_MODEL(0x10de00a1, "GPU a1 HDMI/DP", MODEL_GENERIC), 205 208 HDA_CODEC_ID_MODEL(0x10de00a3, "GPU a3 HDMI/DP", MODEL_GENERIC), 206 209 HDA_CODEC_ID_MODEL(0x10de00a4, "GPU a4 HDMI/DP", MODEL_GENERIC), 207 210 HDA_CODEC_ID_MODEL(0x10de00a5, "GPU a5 HDMI/DP", MODEL_GENERIC), 208 211 HDA_CODEC_ID_MODEL(0x10de00a6, "GPU a6 HDMI/DP", MODEL_GENERIC), 209 212 HDA_CODEC_ID_MODEL(0x10de00a7, "GPU a7 HDMI/DP", MODEL_GENERIC), 213 + HDA_CODEC_ID_MODEL(0x10de00a8, "GPU a8 HDMI/DP", MODEL_GENERIC), 214 + HDA_CODEC_ID_MODEL(0x10de00a9, "GPU a9 HDMI/DP", MODEL_GENERIC), 215 + HDA_CODEC_ID_MODEL(0x10de00aa, "GPU aa HDMI/DP", MODEL_GENERIC), 216 + HDA_CODEC_ID_MODEL(0x10de00ab, "GPU ab HDMI/DP", MODEL_GENERIC), 217 + HDA_CODEC_ID_MODEL(0x10de00ad, "GPU ad HDMI/DP", MODEL_GENERIC), 218 + HDA_CODEC_ID_MODEL(0x10de00ae, "GPU ae HDMI/DP", MODEL_GENERIC), 219 + HDA_CODEC_ID_MODEL(0x10de00af, "GPU af HDMI/DP", MODEL_GENERIC), 220 + HDA_CODEC_ID_MODEL(0x10de00b0, "GPU b0 HDMI/DP", MODEL_GENERIC), 221 + HDA_CODEC_ID_MODEL(0x10de00b1, "GPU b1 HDMI/DP", MODEL_GENERIC), 222 + HDA_CODEC_ID_MODEL(0x10de00c0, "GPU c0 HDMI/DP", MODEL_GENERIC), 223 + HDA_CODEC_ID_MODEL(0x10de00c1, "GPU c1 HDMI/DP", MODEL_GENERIC), 224 + HDA_CODEC_ID_MODEL(0x10de00c3, "GPU c3 HDMI/DP", MODEL_GENERIC), 225 + HDA_CODEC_ID_MODEL(0x10de00c4, "GPU c4 HDMI/DP", MODEL_GENERIC), 226 + HDA_CODEC_ID_MODEL(0x10de00c5, "GPU c5 HDMI/DP", MODEL_GENERIC), 210 227 {} /* terminator */ 211 228 }; 212 229 MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_nvhdmi);
+2
sound/hda/codecs/hdmi/tegrahdmi.c
··· 299 299 HDA_CODEC_ID_MODEL(0x10de002f, "Tegra194 HDMI/DP2", MODEL_TEGRA), 300 300 HDA_CODEC_ID_MODEL(0x10de0030, "Tegra194 HDMI/DP3", MODEL_TEGRA), 301 301 HDA_CODEC_ID_MODEL(0x10de0031, "Tegra234 HDMI/DP", MODEL_TEGRA234), 302 + HDA_CODEC_ID_MODEL(0x10de0033, "SoC 33 HDMI/DP", MODEL_TEGRA234), 302 303 HDA_CODEC_ID_MODEL(0x10de0034, "Tegra264 HDMI/DP", MODEL_TEGRA234), 304 + HDA_CODEC_ID_MODEL(0x10de0035, "SoC 35 HDMI/DP", MODEL_TEGRA234), 303 305 {} /* terminator */ 304 306 }; 305 307 MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_tegrahdmi);
+2
sound/hda/codecs/realtek/alc269.c
··· 7147 7147 SND_PCI_QUIRK(0x1d05, 0x121b, "TongFang GMxAGxx", ALC269_FIXUP_NO_SHUTUP), 7148 7148 SND_PCI_QUIRK(0x1d05, 0x1387, "TongFang GMxIXxx", ALC2XX_FIXUP_HEADSET_MIC), 7149 7149 SND_PCI_QUIRK(0x1d05, 0x1409, "TongFang GMxIXxx", ALC2XX_FIXUP_HEADSET_MIC), 7150 + SND_PCI_QUIRK(0x1d05, 0x300f, "TongFang X6AR5xxY", ALC2XX_FIXUP_HEADSET_MIC), 7151 + SND_PCI_QUIRK(0x1d05, 0x3019, "TongFang X6FR5xxY", ALC2XX_FIXUP_HEADSET_MIC), 7150 7152 SND_PCI_QUIRK(0x1d17, 0x3288, "Haier Boyue G42", ALC269VC_FIXUP_ACER_VCOPPERBOX_PINS), 7151 7153 SND_PCI_QUIRK(0x1d72, 0x1602, "RedmiBook", ALC255_FIXUP_XIAOMI_HEADSET_MIC), 7152 7154 SND_PCI_QUIRK(0x1d72, 0x1701, "XiaomiNotebook Pro", ALC298_FIXUP_DELL1_MIC_NO_PRESENCE),
+6 -3
sound/hda/codecs/side-codecs/tas2781_hda_i2c.c
··· 300 300 { 301 301 efi_guid_t efi_guid = tasdev_fct_efi_guid[LENOVO]; 302 302 char *vars[TASDEV_CALIB_N] = { 303 - "R0_%d", "InvR0_%d", "R0_Low_%d", "Power_%d", "TLim_%d" 303 + "R0_%d", "R0_Low_%d", "InvR0_%d", "Power_%d", "TLim_%d" 304 304 }; 305 305 efi_char16_t efi_name[TAS2563_CAL_VAR_NAME_MAX]; 306 306 unsigned long max_size = TAS2563_CAL_DATA_SIZE; ··· 310 310 struct cali_reg *r = &cd->cali_reg_array; 311 311 unsigned int offset = 0; 312 312 unsigned char *data; 313 + __be32 bedata; 313 314 efi_status_t status; 314 315 unsigned int attr; 315 316 int ret, i, j, k; ··· 328 327 data[offset] = i; 329 328 offset++; 330 329 for (j = 0; j < TASDEV_CALIB_N; ++j) { 331 - ret = snprintf(var8, sizeof(var8), vars[j], i); 332 - 330 + /* EFI name for calibration started with 1, not 0 */ 331 + ret = snprintf(var8, sizeof(var8), vars[j], i + 1); 333 332 if (ret < 0 || ret >= sizeof(var8) - 1) { 334 333 dev_err(p->dev, "%s: Read %s failed\n", 335 334 __func__, var8); ··· 352 351 i, j, status); 353 352 return -EINVAL; 354 353 } 354 + bedata = cpu_to_be32(*(uint32_t *)&data[offset]); 355 + memcpy(&data[offset], &bedata, sizeof(bedata)); 355 356 offset += TAS2563_CAL_DATA_SIZE; 356 357 } 357 358 }
+23 -3
sound/hda/core/intel-dsp-config.c
··· 116 116 .flags = FLAG_SST, 117 117 .device = PCI_DEVICE_ID_INTEL_HDA_FCL, 118 118 }, 119 + #else /* AVS disabled; force to legacy as SOF doesn't work for SKL or KBL */ 120 + { 121 + .device = PCI_DEVICE_ID_INTEL_HDA_SKL_LP, 122 + }, 123 + { 124 + .device = PCI_DEVICE_ID_INTEL_HDA_KBL_LP, 125 + }, 119 126 #endif 120 127 #if IS_ENABLED(CONFIG_SND_SOC_SOF_APOLLOLAKE) 121 128 { ··· 174 167 175 168 /* 176 169 * CoffeeLake, CannonLake, CometLake, IceLake, TigerLake, AlderLake, 177 - * RaptorLake use legacy HDAudio driver except for Google Chromebooks 178 - * and when DMICs are present. Two cases are required since Coreboot 179 - * does not expose NHLT tables. 170 + * RaptorLake, MeteorLake use legacy HDAudio driver except for Google 171 + * Chromebooks and when DMICs are present. Two cases are required since 172 + * Coreboot does not expose NHLT tables. 180 173 * 181 174 * When the Chromebook quirk is not present, it's based on information 182 175 * that no such device exists. When the quirk is present, it could be ··· 523 516 /* Meteor Lake */ 524 517 #if IS_ENABLED(CONFIG_SND_SOC_SOF_METEORLAKE) 525 518 /* Meteorlake-P */ 519 + { 520 + .flags = FLAG_SOF, 521 + .device = PCI_DEVICE_ID_INTEL_HDA_MTL, 522 + .dmi_table = (const struct dmi_system_id []) { 523 + { 524 + .ident = "Google Chromebooks", 525 + .matches = { 526 + DMI_MATCH(DMI_SYS_VENDOR, "Google"), 527 + } 528 + }, 529 + {} 530 + } 531 + }, 526 532 { 527 533 .flags = FLAG_SOF | FLAG_SOF_ONLY_IF_DMIC_OR_SOUNDWIRE, 528 534 .device = PCI_DEVICE_ID_INTEL_HDA_MTL,
+1 -1
sound/soc/codecs/idt821034.c
··· 1067 1067 1068 1068 ret = idt821034_set_slic_conf(idt821034, ch, slic_conf); 1069 1069 if (ret) { 1070 - dev_err(&idt821034->spi->dev, "dir in gpio %d (%u, 0x%x) failed (%d)\n", 1070 + dev_err(&idt821034->spi->dev, "dir out gpio %d (%u, 0x%x) failed (%d)\n", 1071 1071 offset, ch, mask, ret); 1072 1072 } 1073 1073
+1 -1
sound/soc/renesas/rcar/core.c
··· 597 597 598 598 dev_dbg(dev, "%s is connected to io (%s)\n", 599 599 rsnd_mod_name(mod), 600 - snd_pcm_direction_name(io->substream->stream)); 600 + rsnd_io_is_play(io) ? "Playback" : "Capture"); 601 601 602 602 return 0; 603 603 }
+15 -10
sound/soc/soc-core.c
··· 369 369 *snd_soc_lookup_component_nolocked(struct device *dev, const char *driver_name) 370 370 { 371 371 struct snd_soc_component *component; 372 - struct snd_soc_component *found_component; 373 372 374 - found_component = NULL; 375 373 for_each_component(component) { 376 - if ((dev == component->dev) && 377 - (!driver_name || 378 - (driver_name == component->driver->name) || 379 - (strcmp(component->driver->name, driver_name) == 0))) { 380 - found_component = component; 381 - break; 382 - } 374 + if (dev != component->dev) 375 + continue; 376 + 377 + if (!driver_name) 378 + return component; 379 + 380 + if (!component->driver->name) 381 + continue; 382 + 383 + if (component->driver->name == driver_name) 384 + return component; 385 + 386 + if (strcmp(component->driver->name, driver_name) == 0) 387 + return component; 383 388 } 384 389 385 - return found_component; 390 + return NULL; 386 391 } 387 392 EXPORT_SYMBOL_GPL(snd_soc_lookup_component_nolocked); 388 393
+1
sound/soc/sof/intel/ptl.c
··· 143 143 .read_sdw_lcount = hda_sdw_check_lcount_ext, 144 144 .check_sdw_irq = lnl_dsp_check_sdw_irq, 145 145 .check_sdw_wakeen_irq = lnl_sdw_check_wakeen_irq, 146 + .sdw_process_wakeen = hda_sdw_process_wakeen_common, 146 147 .check_ipc_irq = mtl_dsp_check_ipc_irq, 147 148 .cl_init = mtl_dsp_cl_init, 148 149 .power_down_dsp = mtl_power_down_dsp,
+8 -4
sound/usb/format.c
··· 327 327 max_rate = combine_quad(&fmt[6]); 328 328 329 329 switch (max_rate) { 330 + case 192000: 331 + if (rate == 176400 || rate == 192000) 332 + return true; 333 + fallthrough; 334 + case 96000: 335 + if (rate == 88200 || rate == 96000) 336 + return true; 337 + fallthrough; 330 338 case 48000: 331 339 return (rate == 44100 || rate == 48000); 332 - case 96000: 333 - return (rate == 88200 || rate == 96000); 334 - case 192000: 335 - return (rate == 176400 || rate == 192000); 336 340 default: 337 341 usb_audio_info(chip, 338 342 "%u:%d : unexpected max rate: %u\n",
+3 -5
sound/usb/mixer_quirks.c
··· 4608 4608 if (unitid == 7 && cval->control == UAC_FU_VOLUME) 4609 4609 snd_dragonfly_quirk_db_scale(mixer, cval, kctl); 4610 4610 break; 4611 + } 4612 + 4611 4613 /* lowest playback value is muted on some devices */ 4612 - case USB_ID(0x0d8c, 0x000c): /* C-Media */ 4613 - case USB_ID(0x0d8c, 0x0014): /* C-Media */ 4614 - case USB_ID(0x19f7, 0x0003): /* RODE NT-USB */ 4614 + if (mixer->chip->quirk_flags & QUIRK_FLAG_MIXER_MIN_MUTE) 4615 4615 if (strstr(kctl->id.name, "Playback")) 4616 4616 cval->min_mute = 1; 4617 - break; 4618 - } 4619 4617 4620 4618 /* ALSA-ify some Plantronics headset control names */ 4621 4619 if (USB_ID_VENDOR(mixer->chip->usb_id) == 0x047f &&
+20 -2
sound/usb/quirks.c
··· 2199 2199 QUIRK_FLAG_SET_IFACE_FIRST), 2200 2200 DEVICE_FLG(0x0556, 0x0014, /* Phoenix Audio TMX320VC */ 2201 2201 QUIRK_FLAG_GET_SAMPLE_RATE), 2202 + DEVICE_FLG(0x0572, 0x1b08, /* Conexant Systems (Rockwell), Inc. */ 2203 + QUIRK_FLAG_MIXER_MIN_MUTE), 2204 + DEVICE_FLG(0x0572, 0x1b09, /* Conexant Systems (Rockwell), Inc. */ 2205 + QUIRK_FLAG_MIXER_MIN_MUTE), 2202 2206 DEVICE_FLG(0x05a3, 0x9420, /* ELP HD USB Camera */ 2203 2207 QUIRK_FLAG_GET_SAMPLE_RATE), 2204 2208 DEVICE_FLG(0x05a7, 0x1020, /* Bose Companion 5 */ ··· 2245 2241 QUIRK_FLAG_CTL_MSG_DELAY_1M), 2246 2242 DEVICE_FLG(0x0b0e, 0x0349, /* Jabra 550a */ 2247 2243 QUIRK_FLAG_CTL_MSG_DELAY_1M), 2244 + DEVICE_FLG(0x0bda, 0x498a, /* Realtek Semiconductor Corp. */ 2245 + QUIRK_FLAG_MIXER_MIN_MUTE), 2248 2246 DEVICE_FLG(0x0c45, 0x6340, /* Sonix HD USB Camera */ 2249 2247 QUIRK_FLAG_GET_SAMPLE_RATE), 2250 2248 DEVICE_FLG(0x0c45, 0x636b, /* Microdia JP001 USB Camera */ 2251 2249 QUIRK_FLAG_GET_SAMPLE_RATE), 2252 - DEVICE_FLG(0x0d8c, 0x0014, /* USB Audio Device */ 2253 - QUIRK_FLAG_CTL_MSG_DELAY_1M), 2250 + DEVICE_FLG(0x0d8c, 0x000c, /* C-Media */ 2251 + QUIRK_FLAG_MIXER_MIN_MUTE), 2252 + DEVICE_FLG(0x0d8c, 0x0014, /* C-Media */ 2253 + QUIRK_FLAG_CTL_MSG_DELAY_1M | QUIRK_FLAG_MIXER_MIN_MUTE), 2254 2254 DEVICE_FLG(0x0ecb, 0x205c, /* JBL Quantum610 Wireless */ 2255 2255 QUIRK_FLAG_FIXED_RATE), 2256 2256 DEVICE_FLG(0x0ecb, 0x2069, /* JBL Quantum810 Wireless */ ··· 2263 2255 QUIRK_FLAG_SHARE_MEDIA_DEVICE | QUIRK_FLAG_ALIGN_TRANSFER), 2264 2256 DEVICE_FLG(0x1101, 0x0003, /* Audioengine D1 */ 2265 2257 QUIRK_FLAG_GET_SAMPLE_RATE), 2258 + DEVICE_FLG(0x12d1, 0x3a07, /* Huawei Technologies Co., Ltd. */ 2259 + QUIRK_FLAG_MIXER_MIN_MUTE), 2266 2260 DEVICE_FLG(0x1224, 0x2a25, /* Jieli Technology USB PHY 2.0 */ 2267 2261 QUIRK_FLAG_GET_SAMPLE_RATE | QUIRK_FLAG_MIC_RES_16), 2268 2262 DEVICE_FLG(0x1395, 0x740a, /* Sennheiser DECT */ ··· 2303 2293 QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY), 2304 2294 DEVICE_FLG(0x1901, 0x0191, /* GE B850V3 CP2114 audio interface */ 2305 2295 QUIRK_FLAG_GET_SAMPLE_RATE), 2296 + DEVICE_FLG(0x19f7, 0x0003, /* RODE NT-USB */ 2297 + QUIRK_FLAG_MIXER_MIN_MUTE), 2306 2298 DEVICE_FLG(0x19f7, 0x0035, /* RODE NT-USB+ */ 2307 2299 QUIRK_FLAG_GET_SAMPLE_RATE), 2308 2300 DEVICE_FLG(0x1bcf, 0x2281, /* HD Webcam */ ··· 2355 2343 QUIRK_FLAG_IGNORE_CTL_ERROR), 2356 2344 DEVICE_FLG(0x2912, 0x30c8, /* Audioengine D1 */ 2357 2345 QUIRK_FLAG_GET_SAMPLE_RATE), 2346 + DEVICE_FLG(0x2a70, 0x1881, /* OnePlus Technology (Shenzhen) Co., Ltd. BE02T */ 2347 + QUIRK_FLAG_MIXER_MIN_MUTE), 2358 2348 DEVICE_FLG(0x2b53, 0x0023, /* Fiero SC-01 (firmware v1.0.0 @ 48 kHz) */ 2359 2349 QUIRK_FLAG_GENERIC_IMPLICIT_FB), 2360 2350 DEVICE_FLG(0x2b53, 0x0024, /* Fiero SC-01 (firmware v1.0.0 @ 96 kHz) */ ··· 2367 2353 QUIRK_FLAG_CTL_MSG_DELAY_1M), 2368 2354 DEVICE_FLG(0x2d95, 0x8021, /* VIVO USB-C-XE710 HEADSET */ 2369 2355 QUIRK_FLAG_CTL_MSG_DELAY_1M), 2356 + DEVICE_FLG(0x2d99, 0x0026, /* HECATE G2 GAMING HEADSET */ 2357 + QUIRK_FLAG_MIXER_MIN_MUTE), 2370 2358 DEVICE_FLG(0x2fc6, 0xf0b7, /* iBasso DC07 Pro */ 2371 2359 QUIRK_FLAG_CTL_MSG_DELAY_1M), 2372 2360 DEVICE_FLG(0x30be, 0x0101, /* Schiit Hel */ 2373 2361 QUIRK_FLAG_IGNORE_CTL_ERROR), 2362 + DEVICE_FLG(0x339b, 0x3a07, /* Synaptics HONOR USB-C HEADSET */ 2363 + QUIRK_FLAG_MIXER_MIN_MUTE), 2374 2364 DEVICE_FLG(0x413c, 0xa506, /* Dell AE515 sound bar */ 2375 2365 QUIRK_FLAG_GET_SAMPLE_RATE), 2376 2366 DEVICE_FLG(0x534d, 0x0021, /* MacroSilicon MS2100/MS2106 */
+4
sound/usb/usbaudio.h
··· 196 196 * for the given endpoint. 197 197 * QUIRK_FLAG_MIC_RES_16 and QUIRK_FLAG_MIC_RES_384 198 198 * Set the fixed resolution for Mic Capture Volume (mostly for webcams) 199 + * QUIRK_FLAG_MIXER_MIN_MUTE 200 + * Set minimum volume control value as mute for devices where the lowest 201 + * playback value represents muted state instead of minimum audible volume 199 202 */ 200 203 201 204 #define QUIRK_FLAG_GET_SAMPLE_RATE (1U << 0) ··· 225 222 #define QUIRK_FLAG_FIXED_RATE (1U << 21) 226 223 #define QUIRK_FLAG_MIC_RES_16 (1U << 22) 227 224 #define QUIRK_FLAG_MIC_RES_384 (1U << 23) 225 + #define QUIRK_FLAG_MIXER_MIN_MUTE (1U << 24) 228 226 229 227 #endif /* __USBAUDIO_H */