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

Configure Feed

Select the types of activity you want to include in your feed.

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

Pull sound fixes from Takashi Iwai:
"A bunch of small device-specific fixes. Mostly quirks and fix-ups for
USB- and HD-audio at this time, in addition to a couple of ASoC AMD
and Cirrus fixes"

* tag 'sound-7.0-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (24 commits)
ASoC: SDCA: Fix comments for sdca_irq_request()
ALSA: us144mkii: Drop kernel-doc markers
ALSA: usb: qcom: Correct parameter comment for uaudio_transfer_buffer_setup()
ALSA: usb-audio: Drop superfluous kernel-doc markers
ALSA: hda: cs35l56: Remove unnecessary struct cs_dsp_client_ops
ALSA: hda: cs35l56: Fix signedness error in cs35l56_hda_posture_put()
ALSA: usb-audio: Use correct version for UAC3 header validation
ALSA: hda/realtek: add quirk for Acer Nitro ANV15-51
ALSA: hda/intel: increase default bdl_pos_adj for Nvidia controllers
ALSA: usb-audio: Use inclusive terms
ALSA: usb-audio: Avoid implicit feedback mode on DIYINHK USB Audio 2.0
ALSA: usb-audio: Check max frame size for implicit feedback mode, too
ALSA: usb-audio: Cap the packet size pre-calculations
ASoC: amd: yc: Add ASUS EXPERTBOOK BM1503CDA to quirk table
ASoC: cs42l43: Report insert for exotic peripherals
ALSA: usb-audio: Skip clock selector for Focusrite devices
ALSA: usb-audio: Add QUIRK_FLAG_SKIP_IFACE_SETUP
ALSA: usb-audio: Remove VALIDATE_RATES quirk for Focusrite devices
ALSA: usb-audio: Improve Focusrite sample rate filtering
ALSA: hda/realtek: add quirk for Samsung Galaxy Book Flex (NT950QCT-A38A)
...

+196 -83
+36 -1
sound/hda/codecs/realtek/alc269.c
··· 1017 1017 return 0; 1018 1018 } 1019 1019 1020 + #define STARLABS_STARFIGHTER_SHUTUP_DELAY_MS 30 1021 + 1022 + static void starlabs_starfighter_shutup(struct hda_codec *codec) 1023 + { 1024 + if (snd_hda_gen_shutup_speakers(codec)) 1025 + msleep(STARLABS_STARFIGHTER_SHUTUP_DELAY_MS); 1026 + } 1027 + 1028 + static void alc233_fixup_starlabs_starfighter(struct hda_codec *codec, 1029 + const struct hda_fixup *fix, 1030 + int action) 1031 + { 1032 + struct alc_spec *spec = codec->spec; 1033 + 1034 + if (action == HDA_FIXUP_ACT_PRE_PROBE) 1035 + spec->shutup = starlabs_starfighter_shutup; 1036 + } 1037 + 1020 1038 static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec, 1021 1039 const struct hda_fixup *fix, int action) 1022 1040 { ··· 4058 4040 ALC245_FIXUP_CLEVO_NOISY_MIC, 4059 4041 ALC269_FIXUP_VAIO_VJFH52_MIC_NO_PRESENCE, 4060 4042 ALC233_FIXUP_MEDION_MTL_SPK, 4043 + ALC233_FIXUP_STARLABS_STARFIGHTER, 4061 4044 ALC294_FIXUP_BASS_SPEAKER_15, 4062 4045 ALC283_FIXUP_DELL_HP_RESUME, 4063 4046 ALC294_FIXUP_ASUS_CS35L41_SPI_2, ··· 4075 4056 ALC236_FIXUP_HP_MUTE_LED_MICMUTE_GPIO, 4076 4057 ALC233_FIXUP_LENOVO_GPIO2_MIC_HOTKEY, 4077 4058 ALC245_FIXUP_BASS_HP_DAC, 4059 + ALC245_FIXUP_ACER_MICMUTE_LED, 4078 4060 }; 4079 4061 4080 4062 /* A special fixup for Lenovo C940 and Yoga Duet 7; ··· 6519 6499 { } 6520 6500 }, 6521 6501 }, 6502 + [ALC233_FIXUP_STARLABS_STARFIGHTER] = { 6503 + .type = HDA_FIXUP_FUNC, 6504 + .v.func = alc233_fixup_starlabs_starfighter, 6505 + }, 6522 6506 [ALC294_FIXUP_BASS_SPEAKER_15] = { 6523 6507 .type = HDA_FIXUP_FUNC, 6524 6508 .v.func = alc294_fixup_bass_speaker_15, ··· 6600 6576 /* Borrow the DAC routing selected for those Thinkpads */ 6601 6577 .v.func = alc285_fixup_thinkpad_x1_gen7, 6602 6578 }, 6579 + [ALC245_FIXUP_ACER_MICMUTE_LED] = { 6580 + .type = HDA_FIXUP_FUNC, 6581 + .v.func = alc285_fixup_hp_coef_micmute_led, 6582 + .chained = true, 6583 + .chain_id = ALC2XX_FIXUP_HEADSET_MIC, 6584 + } 6603 6585 }; 6604 6586 6605 6587 static const struct hda_quirk alc269_fixup_tbl[] = { ··· 6621 6591 SND_PCI_QUIRK(0x1025, 0x079b, "Acer Aspire V5-573G", ALC282_FIXUP_ASPIRE_V5_PINS), 6622 6592 SND_PCI_QUIRK(0x1025, 0x080d, "Acer Aspire V5-122P", ALC269_FIXUP_ASPIRE_HEADSET_MIC), 6623 6593 SND_PCI_QUIRK(0x1025, 0x0840, "Acer Aspire E1", ALC269VB_FIXUP_ASPIRE_E1_COEF), 6594 + SND_PCI_QUIRK(0x1025, 0x0943, "Acer Aspire V3-572G", ALC269_FIXUP_ASPIRE_HEADSET_MIC), 6624 6595 SND_PCI_QUIRK(0x1025, 0x100c, "Acer Aspire E5-574G", ALC255_FIXUP_ACER_LIMIT_INT_MIC_BOOST), 6625 6596 SND_PCI_QUIRK(0x1025, 0x101c, "Acer Veriton N2510G", ALC269_FIXUP_LIFEBOOK), 6626 6597 SND_PCI_QUIRK(0x1025, 0x102b, "Acer Aspire C24-860", ALC286_FIXUP_ACER_AIO_MIC_NO_PRESENCE), ··· 6658 6627 SND_PCI_QUIRK(0x1025, 0x159c, "Acer Nitro 5 AN515-58", ALC2XX_FIXUP_HEADSET_MIC), 6659 6628 SND_PCI_QUIRK(0x1025, 0x1597, "Acer Nitro 5 AN517-55", ALC2XX_FIXUP_HEADSET_MIC), 6660 6629 SND_PCI_QUIRK(0x1025, 0x169a, "Acer Swift SFG16", ALC256_FIXUP_ACER_SFG16_MICMUTE_LED), 6630 + SND_PCI_QUIRK(0x1025, 0x171e, "Acer Nitro ANV15-51", ALC245_FIXUP_ACER_MICMUTE_LED), 6661 6631 SND_PCI_QUIRK(0x1025, 0x1826, "Acer Helios ZPC", ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2), 6662 6632 SND_PCI_QUIRK(0x1025, 0x182c, "Acer Helios ZPD", ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2), 6663 6633 SND_PCI_QUIRK(0x1025, 0x1844, "Acer Helios ZPS", ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2), ··· 7343 7311 SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC), 7344 7312 SND_PCI_QUIRK(0x144d, 0xc169, "Samsung Notebook 9 Pen (NP930SBE-K01US)", ALC298_FIXUP_SAMSUNG_AMP), 7345 7313 SND_PCI_QUIRK(0x144d, 0xc176, "Samsung Notebook 9 Pro (NP930MBE-K04US)", ALC298_FIXUP_SAMSUNG_AMP), 7346 - SND_PCI_QUIRK(0x144d, 0xc189, "Samsung Galaxy Flex Book (NT950QCG-X716)", ALC298_FIXUP_SAMSUNG_AMP), 7314 + SND_PCI_QUIRK(0x144d, 0xc188, "Samsung Galaxy Book Flex (NT950QCT-A38A)", ALC298_FIXUP_SAMSUNG_AMP), 7315 + SND_PCI_QUIRK(0x144d, 0xc189, "Samsung Galaxy Book Flex (NT950QCG-X716)", ALC298_FIXUP_SAMSUNG_AMP), 7347 7316 SND_PCI_QUIRK(0x144d, 0xc18a, "Samsung Galaxy Book Ion (NP930XCJ-K01US)", ALC298_FIXUP_SAMSUNG_AMP), 7348 7317 SND_PCI_QUIRK(0x144d, 0xc1a3, "Samsung Galaxy Book Pro (NP935XDB-KC1SE)", ALC298_FIXUP_SAMSUNG_AMP), 7349 7318 SND_PCI_QUIRK(0x144d, 0xc1a4, "Samsung Galaxy Book Pro 360 (NT935QBD)", ALC298_FIXUP_SAMSUNG_AMP), ··· 7684 7651 SND_PCI_QUIRK(0x2782, 0x1705, "MEDION E15433", ALC269VC_FIXUP_INFINIX_Y4_MAX), 7685 7652 SND_PCI_QUIRK(0x2782, 0x1707, "Vaio VJFE-ADL", ALC298_FIXUP_SPK_VOLUME), 7686 7653 SND_PCI_QUIRK(0x2782, 0x4900, "MEDION E15443", ALC233_FIXUP_MEDION_MTL_SPK), 7654 + SND_PCI_QUIRK(0x7017, 0x2014, "Star Labs StarFighter", ALC233_FIXUP_STARLABS_STARFIGHTER), 7687 7655 SND_PCI_QUIRK(0x8086, 0x2074, "Intel NUC 8", ALC233_FIXUP_INTEL_NUC8_DMIC), 7688 7656 SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED), 7689 7657 SND_PCI_QUIRK(0x8086, 0x2081, "Intel NUC 10", ALC256_FIXUP_INTEL_NUC10), ··· 7781 7747 {.id = ALC298_FIXUP_TPT470_DOCK_FIX, .name = "tpt470-dock-fix"}, 7782 7748 {.id = ALC298_FIXUP_TPT470_DOCK, .name = "tpt470-dock"}, 7783 7749 {.id = ALC233_FIXUP_LENOVO_MULTI_CODECS, .name = "dual-codecs"}, 7750 + {.id = ALC233_FIXUP_STARLABS_STARFIGHTER, .name = "starlabs-starfighter"}, 7784 7751 {.id = ALC700_FIXUP_INTEL_REFERENCE, .name = "alc700-ref"}, 7785 7752 {.id = ALC269_FIXUP_SONY_VAIO, .name = "vaio"}, 7786 7753 {.id = ALC269_FIXUP_DELL_M101Z, .name = "dell-m101z"},
+1 -6
sound/hda/codecs/side-codecs/cs35l56_hda.c
··· 249 249 struct snd_ctl_elem_value *ucontrol) 250 250 { 251 251 struct cs35l56_hda *cs35l56 = snd_kcontrol_chip(kcontrol); 252 - unsigned long pos = ucontrol->value.integer.value[0]; 252 + long pos = ucontrol->value.integer.value[0]; 253 253 bool changed; 254 254 int ret; 255 255 ··· 402 402 snd_ctl_remove(cs35l56->codec->card, cs35l56->posture_ctl); 403 403 snd_ctl_remove(cs35l56->codec->card, cs35l56->volume_ctl); 404 404 } 405 - 406 - static const struct cs_dsp_client_ops cs35l56_hda_client_ops = { 407 - /* cs_dsp requires the client to provide this even if it is empty */ 408 - }; 409 405 410 406 static int cs35l56_hda_request_firmware_file(struct cs35l56_hda *cs35l56, 411 407 const struct firmware **firmware, char **filename, ··· 1145 1149 cs35l56->base.cal_index = cs35l56->index; 1146 1150 1147 1151 cs35l56_init_cs_dsp(&cs35l56->base, &cs35l56->cs_dsp); 1148 - cs35l56->cs_dsp.client_ops = &cs35l56_hda_client_ops; 1149 1152 1150 1153 if (cs35l56->base.reset_gpio) { 1151 1154 dev_dbg(cs35l56->base.dev, "Hard reset\n");
+2
sound/hda/controllers/intel.c
··· 1751 1751 return 1; 1752 1752 case AZX_DRIVER_ZHAOXINHDMI: 1753 1753 return 128; 1754 + case AZX_DRIVER_NVIDIA: 1755 + return 64; 1754 1756 default: 1755 1757 return 32; 1756 1758 }
+7
sound/soc/amd/yc/acp6x-mach.c
··· 703 703 DMI_MATCH(DMI_PRODUCT_NAME, "Vivobook_ASUSLaptop M6501RR_M6501RR"), 704 704 } 705 705 }, 706 + { 707 + .driver_data = &acp6x_card, 708 + .matches = { 709 + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."), 710 + DMI_MATCH(DMI_PRODUCT_NAME, "ASUS EXPERTBOOK BM1503CDA"), 711 + } 712 + }, 706 713 {} 707 714 }; 708 715
+1
sound/soc/codecs/cs42l43-jack.c
··· 699 699 switch (type & CS42L43_HSDET_TYPE_STS_MASK) { 700 700 case 0x0: // CTIA 701 701 case 0x1: // OMTP 702 + case 0x4: 702 703 return cs42l43_run_load_detect(priv, true); 703 704 case 0x2: // 3-pole 704 705 return cs42l43_run_load_detect(priv, false);
+2 -2
sound/soc/sdca/sdca_interrupts.c
··· 265 265 } 266 266 267 267 /** 268 - * sdca_request_irq - request an individual SDCA interrupt 268 + * sdca_irq_request - request an individual SDCA interrupt 269 269 * @dev: Pointer to the struct device against which things should be allocated. 270 - * @interrupt_info: Pointer to the interrupt information structure. 270 + * @info: Pointer to the interrupt information structure. 271 271 * @sdca_irq: SDCA interrupt position. 272 272 * @name: Name to be given to the IRQ. 273 273 * @handler: A callback thread function to be called for the IRQ.
+7 -3
sound/usb/endpoint.c
··· 160 160 * This won't be used for implicit feedback which takes the packet size 161 161 * returned from the sync source 162 162 */ 163 - static int slave_next_packet_size(struct snd_usb_endpoint *ep, 164 - unsigned int avail) 163 + static int synced_next_packet_size(struct snd_usb_endpoint *ep, 164 + unsigned int avail) 165 165 { 166 166 unsigned int phase; 167 167 int ret; ··· 221 221 222 222 packet = ctx->packet_size[idx]; 223 223 if (packet) { 224 + packet = min(packet, ep->maxframesize); 224 225 if (avail && packet >= avail) 225 226 return -EAGAIN; 226 227 return packet; 227 228 } 228 229 229 230 if (ep->sync_source) 230 - return slave_next_packet_size(ep, avail); 231 + return synced_next_packet_size(ep, avail); 231 232 else 232 233 return next_packet_size(ep, avail); 233 234 } ··· 1378 1377 ep->maxpacksize, ep->cur_rate, ep->pps); 1379 1378 return -EINVAL; 1380 1379 } 1380 + 1381 + ep->packsize[0] = min(ep->packsize[0], ep->maxframesize); 1382 + ep->packsize[1] = min(ep->packsize[1], ep->maxframesize); 1381 1383 1382 1384 /* calculate the frequency in 16.16 format */ 1383 1385 ep->freqm = ep->freqn;
+65 -5
sound/usb/format.c
··· 305 305 } 306 306 307 307 /* 308 - * Many Focusrite devices supports a limited set of sampling rates per 309 - * altsetting. Maximum rate is exposed in the last 4 bytes of Format Type 310 - * descriptor which has a non-standard bLength = 10. 308 + * Focusrite devices use rate pairs: 44100/48000, 88200/96000, and 309 + * 176400/192000. Return true if rate is in the pair for max_rate. 310 + */ 311 + static bool focusrite_rate_pair(unsigned int rate, 312 + unsigned int max_rate) 313 + { 314 + switch (max_rate) { 315 + case 48000: return rate == 44100 || rate == 48000; 316 + case 96000: return rate == 88200 || rate == 96000; 317 + case 192000: return rate == 176400 || rate == 192000; 318 + default: return true; 319 + } 320 + } 321 + 322 + /* 323 + * Focusrite devices report all supported rates in a single clock 324 + * source but only a subset is valid per altsetting. 325 + * 326 + * Detection uses two descriptor features: 327 + * 328 + * 1. Format Type descriptor bLength == 10: non-standard extension 329 + * with max sample rate in bytes 6..9. 330 + * 331 + * 2. bmControls VAL_ALT_SETTINGS readable bit: when set, the device 332 + * only supports the highest rate pair for that altsetting, and when 333 + * clear, all rates up to max_rate are valid. 334 + * 335 + * For devices without the bLength == 10 extension but with 336 + * VAL_ALT_SETTINGS readable and multiple altsettings (only seen in 337 + * Scarlett 18i8 3rd Gen playback), fall back to the Focusrite 338 + * convention: alt 1 = 48kHz, alt 2 = 96kHz, alt 3 = 192kHz. 311 339 */ 312 340 static bool focusrite_valid_sample_rate(struct snd_usb_audio *chip, 313 341 struct audioformat *fp, 314 342 unsigned int rate) 315 343 { 344 + struct usb_interface *iface; 316 345 struct usb_host_interface *alts; 346 + struct uac2_as_header_descriptor *as; 317 347 unsigned char *fmt; 318 348 unsigned int max_rate; 349 + bool val_alt; 319 350 320 351 alts = snd_usb_get_host_interface(chip, fp->iface, fp->altsetting); 321 352 if (!alts) ··· 357 326 if (!fmt) 358 327 return true; 359 328 329 + as = snd_usb_find_csint_desc(alts->extra, alts->extralen, 330 + NULL, UAC_AS_GENERAL); 331 + if (!as) 332 + return true; 333 + 334 + val_alt = uac_v2v3_control_is_readable(as->bmControls, 335 + UAC2_AS_VAL_ALT_SETTINGS); 336 + 360 337 if (fmt[0] == 10) { /* bLength */ 361 338 max_rate = combine_quad(&fmt[6]); 362 339 340 + if (val_alt) 341 + return focusrite_rate_pair(rate, max_rate); 342 + 343 + /* No val_alt: rates fall through from higher */ 363 344 switch (max_rate) { 364 345 case 192000: 365 346 if (rate == 176400 || rate == 192000) ··· 387 344 usb_audio_info(chip, 388 345 "%u:%d : unexpected max rate: %u\n", 389 346 fp->iface, fp->altsetting, max_rate); 390 - 391 347 return true; 392 348 } 393 349 } 394 350 395 - return true; 351 + if (!val_alt) 352 + return true; 353 + 354 + /* Multi-altsetting device with val_alt but no max_rate 355 + * in the format descriptor. Use Focusrite convention: 356 + * alt 1 = 48kHz, alt 2 = 96kHz, alt 3 = 192kHz. 357 + */ 358 + iface = usb_ifnum_to_if(chip->dev, fp->iface); 359 + if (!iface || iface->num_altsetting <= 2) 360 + return true; 361 + 362 + switch (fp->altsetting) { 363 + case 1: max_rate = 48000; break; 364 + case 2: max_rate = 96000; break; 365 + case 3: max_rate = 192000; break; 366 + default: return true; 367 + } 368 + 369 + return focusrite_rate_pair(rate, max_rate); 396 370 } 397 371 398 372 /*
+6 -6
sound/usb/mixer_s1810c.c
··· 71 71 * * e I guess the same as with mixer 72 72 * 73 73 */ 74 - /** struct s1810c_ctl_packet - basic vendor request 74 + /* struct s1810c_ctl_packet - basic vendor request 75 75 * @selector: device/mixer/output 76 76 * @b: request-dependant field b 77 77 * @tag: fixed value identifying type of request ··· 94 94 __le32 e; 95 95 }; 96 96 97 - /** selectors for CMD request 97 + /* selectors for CMD request 98 98 */ 99 99 #define SC1810C_SEL_DEVICE 0 100 100 #define SC1810C_SEL_MIXER 0x64 101 101 #define SC1810C_SEL_OUTPUT 0x65 102 102 103 103 104 - /** control ids */ 104 + /* control ids */ 105 105 #define SC1810C_CTL_LINE_SW 0 106 106 #define SC1810C_CTL_MUTE_SW 1 107 107 #define SC1824C_CTL_MONO_SW 2 ··· 127 127 #define SC1810C_GET_STATE_TAG SC1810C_SET_STATE_TAG 128 128 #define SC1810C_GET_STATE_LEN SC1810C_SET_STATE_LEN 129 129 130 - /** Mixer levels normally range from 0 (off) to 0x0100 0000 (0 dB). 130 + /* Mixer levels normally range from 0 (off) to 0x0100 0000 (0 dB). 131 131 * raw_level = 2^24 * 10^(db_level / 20), thus 132 132 * -3dB = 0xb53bf0 (technically, half-power -3.01...dB would be 0xb504f3) 133 133 * -96dB = 0x109 ··· 145 145 #define MIXER_LEVEL_N3DB 0xb53bf0 146 146 #define MIXER_LEVEL_0DB 0x1000000 147 147 148 - /** 148 + /* 149 149 * This packet includes mixer volumes and 150 150 * various other fields, it's an extended 151 151 * version of ctl_packet, with a and b ··· 155 155 __le32 fields[63]; 156 156 }; 157 157 158 - /** indices into s1810c_state_packet.fields[] 158 + /* indices into s1810c_state_packet.fields[] 159 159 */ 160 160 #define SC1810C_STATE_TAG_IDX 2 161 161 #define SC1810C_STATE_LEN_IDX 3
+3 -7
sound/usb/mixer_scarlett2.c
··· 1328 1328 struct snd_kcontrol *mux_ctls[SCARLETT2_MUX_MAX]; 1329 1329 struct snd_kcontrol *mix_ctls[SCARLETT2_MIX_MAX]; 1330 1330 struct snd_kcontrol *compressor_ctls[SCARLETT2_COMPRESSOR_CTLS_MAX]; 1331 - struct snd_kcontrol *precomp_flt_ctls[SCARLETT2_PRECOMP_FLT_CTLS_MAX]; 1332 - struct snd_kcontrol *peq_flt_ctls[SCARLETT2_PEQ_FLT_CTLS_MAX]; 1333 1331 struct snd_kcontrol *precomp_flt_switch_ctls[SCARLETT2_DSP_SWITCH_MAX]; 1334 1332 struct snd_kcontrol *peq_flt_switch_ctls[SCARLETT2_DSP_SWITCH_MAX]; 1335 1333 struct snd_kcontrol *direct_monitor_ctl; ··· 3445 3447 private->autogain_status[i] = 3446 3448 private->num_autogain_status_texts - 1; 3447 3449 3448 - 3449 3450 for (i = 0; i < SCARLETT2_AG_TARGET_COUNT; i++) 3450 3451 if (scarlett2_has_config_item(private, 3451 3452 scarlett2_ag_target_configs[i])) { ··· 5369 5372 5370 5373 err = scarlett2_usb_get_config( 5371 5374 mixer, SCARLETT2_CONFIG_PEQ_FLT_SWITCH, 5372 - info->dsp_input_count * info->peq_flt_count, 5373 - private->peq_flt_switch); 5375 + info->dsp_input_count, private->peq_flt_switch); 5374 5376 if (err < 0) 5375 5377 return err; 5376 5378 ··· 6542 6546 err = scarlett2_add_new_ctl( 6543 6547 mixer, &scarlett2_precomp_flt_ctl, 6544 6548 i * info->precomp_flt_count + j, 6545 - 1, s, &private->precomp_flt_switch_ctls[j]); 6549 + 1, s, NULL); 6546 6550 if (err < 0) 6547 6551 return err; 6548 6552 } ··· 6552 6556 err = scarlett2_add_new_ctl( 6553 6557 mixer, &scarlett2_peq_flt_ctl, 6554 6558 i * info->peq_flt_count + j, 6555 - 1, s, &private->peq_flt_switch_ctls[j]); 6559 + 1, s, NULL); 6556 6560 if (err < 0) 6557 6561 return err; 6558 6562 }
+1 -1
sound/usb/qcom/qc_audio_offload.c
··· 1007 1007 /** 1008 1008 * uaudio_transfer_buffer_setup() - fetch and populate xfer buffer params 1009 1009 * @subs: usb substream 1010 - * @xfer_buf: xfer buf to be allocated 1010 + * @xfer_buf_cpu: xfer buf to be allocated 1011 1011 * @xfer_buf_len: size of allocation 1012 1012 * @mem_info: QMI response info 1013 1013 *
+5 -1
sound/usb/quirks.c
··· 2365 2365 QUIRK_FLAG_SHARE_MEDIA_DEVICE | QUIRK_FLAG_ALIGN_TRANSFER), 2366 2366 DEVICE_FLG(0x2040, 0x7281, /* Hauppauge HVR-950Q-MXL */ 2367 2367 QUIRK_FLAG_SHARE_MEDIA_DEVICE | QUIRK_FLAG_ALIGN_TRANSFER), 2368 + DEVICE_FLG(0x20b1, 0x2009, /* XMOS Ltd DIYINHK USB Audio 2.0 */ 2369 + QUIRK_FLAG_SKIP_IMPLICIT_FB | QUIRK_FLAG_DSD_RAW), 2368 2370 DEVICE_FLG(0x2040, 0x8200, /* Hauppauge Woodbury */ 2369 2371 QUIRK_FLAG_SHARE_MEDIA_DEVICE | QUIRK_FLAG_ALIGN_TRANSFER), 2370 2372 DEVICE_FLG(0x21b4, 0x0081, /* AudioQuest DragonFly */ ··· 2426 2424 VENDOR_FLG(0x07fd, /* MOTU */ 2427 2425 QUIRK_FLAG_VALIDATE_RATES), 2428 2426 VENDOR_FLG(0x1235, /* Focusrite Novation */ 2429 - QUIRK_FLAG_VALIDATE_RATES), 2427 + QUIRK_FLAG_SKIP_CLOCK_SELECTOR | 2428 + QUIRK_FLAG_SKIP_IFACE_SETUP), 2430 2429 VENDOR_FLG(0x1511, /* AURALiC */ 2431 2430 QUIRK_FLAG_DSD_RAW), 2432 2431 VENDOR_FLG(0x152a, /* Thesycon devices */ ··· 2509 2506 QUIRK_STRING_ENTRY(MIC_RES_384), 2510 2507 QUIRK_STRING_ENTRY(MIXER_PLAYBACK_MIN_MUTE), 2511 2508 QUIRK_STRING_ENTRY(MIXER_CAPTURE_MIN_MUTE), 2509 + QUIRK_STRING_ENTRY(SKIP_IFACE_SETUP), 2512 2510 NULL 2513 2511 }; 2514 2512
+3
sound/usb/stream.c
··· 1259 1259 set_iface_first = true; 1260 1260 1261 1261 /* try to set the interface... */ 1262 + if (chip->quirk_flags & QUIRK_FLAG_SKIP_IFACE_SETUP) 1263 + continue; 1264 + 1262 1265 usb_set_interface(chip->dev, iface_no, 0); 1263 1266 if (set_iface_first) 1264 1267 usb_set_interface(chip->dev, iface_no, altno);
+6
sound/usb/usbaudio.h
··· 224 224 * playback value represents muted state instead of minimum audible volume 225 225 * QUIRK_FLAG_MIXER_CAPTURE_MIN_MUTE 226 226 * Similar to QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE, but for capture streams 227 + * QUIRK_FLAG_SKIP_IFACE_SETUP 228 + * Skip the probe-time interface setup (usb_set_interface, 229 + * init_pitch, init_sample_rate); redundant with 230 + * snd_usb_endpoint_prepare() at stream-open time 227 231 */ 228 232 229 233 enum { ··· 257 253 QUIRK_TYPE_MIC_RES_384 = 23, 258 254 QUIRK_TYPE_MIXER_PLAYBACK_MIN_MUTE = 24, 259 255 QUIRK_TYPE_MIXER_CAPTURE_MIN_MUTE = 25, 256 + QUIRK_TYPE_SKIP_IFACE_SETUP = 26, 260 257 /* Please also edit snd_usb_audio_quirk_flag_names */ 261 258 }; 262 259 ··· 289 284 #define QUIRK_FLAG_MIC_RES_384 QUIRK_FLAG(MIC_RES_384) 290 285 #define QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE QUIRK_FLAG(MIXER_PLAYBACK_MIN_MUTE) 291 286 #define QUIRK_FLAG_MIXER_CAPTURE_MIN_MUTE QUIRK_FLAG(MIXER_CAPTURE_MIN_MUTE) 287 + #define QUIRK_FLAG_SKIP_IFACE_SETUP QUIRK_FLAG(SKIP_IFACE_SETUP) 292 288 293 289 #endif /* __USBAUDIO_H */
+7 -7
sound/usb/usx2y/us144mkii.c
··· 10 10 MODULE_DESCRIPTION("ALSA Driver for TASCAM US-144MKII"); 11 11 MODULE_LICENSE("GPL"); 12 12 13 - /** 14 - * @brief Module parameters for ALSA card instantiation. 13 + /* 14 + * Module parameters for ALSA card instantiation. 15 15 * 16 16 * These parameters allow users to configure how the ALSA sound card 17 17 * for the TASCAM US-144MKII is instantiated. ··· 269 269 atomic_set(&tascam->active_urbs, 0); 270 270 } 271 271 272 - /** 272 + /* 273 273 * tascam_card_private_free() - Frees private data associated with the sound 274 274 * card. 275 275 * @card: Pointer to the ALSA sound card instance. ··· 291 291 } 292 292 } 293 293 294 - /** 294 + /* 295 295 * tascam_suspend() - Handles device suspension. 296 296 * @intf: The USB interface being suspended. 297 297 * @message: Power management message. ··· 332 332 return 0; 333 333 } 334 334 335 - /** 335 + /* 336 336 * tascam_resume() - Handles device resumption from suspend. 337 337 * @intf: The USB interface being resumed. 338 338 * ··· 390 390 schedule_work(&tascam->midi_out_work); 391 391 } 392 392 393 - /** 393 + /* 394 394 * tascam_probe() - Probes for the TASCAM US-144MKII device. 395 395 * @intf: The USB interface being probed. 396 396 * @usb_id: The USB device ID. ··· 565 565 return err; 566 566 } 567 567 568 - /** 568 + /* 569 569 * tascam_disconnect() - Disconnects the TASCAM US-144MKII device. 570 570 * @intf: The USB interface being disconnected. 571 571 *
+6 -6
sound/usb/usx2y/us144mkii_capture.c
··· 3 3 4 4 #include "us144mkii.h" 5 5 6 - /** 6 + /* 7 7 * tascam_capture_open() - Opens the PCM capture substream. 8 8 * @substream: The ALSA PCM substream to open. 9 9 * ··· 23 23 return 0; 24 24 } 25 25 26 - /** 26 + /* 27 27 * tascam_capture_close() - Closes the PCM capture substream. 28 28 * @substream: The ALSA PCM substream to close. 29 29 * ··· 41 41 return 0; 42 42 } 43 43 44 - /** 44 + /* 45 45 * tascam_capture_prepare() - Prepares the PCM capture substream for use. 46 46 * @substream: The ALSA PCM substream to prepare. 47 47 * ··· 62 62 return 0; 63 63 } 64 64 65 - /** 65 + /* 66 66 * tascam_capture_pointer() - Returns the current capture pointer position. 67 67 * @substream: The ALSA PCM substream. 68 68 * ··· 91 91 return do_div(pos, runtime->buffer_size); 92 92 } 93 93 94 - /** 94 + /* 95 95 * tascam_capture_ops - ALSA PCM operations for capture. 96 96 * 97 97 * This structure defines the callback functions for capture stream operations, ··· 109 109 .pointer = tascam_capture_pointer, 110 110 }; 111 111 112 - /** 112 + /* 113 113 * decode_tascam_capture_block() - Decodes a raw 512-byte block from the device. 114 114 * @src_block: Pointer to the 512-byte raw source block. 115 115 * @dst_block: Pointer to the destination buffer for decoded audio frames.
+21 -21
sound/usb/usx2y/us144mkii_controls.c
··· 3 3 4 4 #include "us144mkii.h" 5 5 6 - /** 7 - * @brief Text descriptions for playback output source options. 6 + /* 7 + * Text descriptions for playback output source options. 8 8 * 9 9 * Used by ALSA kcontrol elements to provide user-friendly names for 10 10 * the playback routing options (e.g., "Playback 1-2", "Playback 3-4"). ··· 12 12 static const char *const playback_source_texts[] = { "Playback 1-2", 13 13 "Playback 3-4" }; 14 14 15 - /** 16 - * @brief Text descriptions for capture input source options. 15 + /* 16 + * Text descriptions for capture input source options. 17 17 * 18 18 * Used by ALSA kcontrol elements to provide user-friendly names for 19 19 * the capture routing options (e.g., "Analog In", "Digital In"). 20 20 */ 21 21 static const char *const capture_source_texts[] = { "Analog In", "Digital In" }; 22 22 23 - /** 23 + /* 24 24 * tascam_playback_source_info() - ALSA control info callback for playback 25 25 * source. 26 26 * @kcontrol: The ALSA kcontrol instance. ··· 38 38 return snd_ctl_enum_info(uinfo, 1, 2, playback_source_texts); 39 39 } 40 40 41 - /** 41 + /* 42 42 * tascam_line_out_get() - ALSA control get callback for Line Outputs Source. 43 43 * @kcontrol: The ALSA kcontrol instance. 44 44 * @ucontrol: The ALSA control element value structure to fill. ··· 60 60 return 0; 61 61 } 62 62 63 - /** 63 + /* 64 64 * tascam_line_out_put() - ALSA control put callback for Line Outputs Source. 65 65 * @kcontrol: The ALSA kcontrol instance. 66 66 * @ucontrol: The ALSA control element value structure containing the new value. ··· 89 89 return changed; 90 90 } 91 91 92 - /** 92 + /* 93 93 * tascam_line_out_control - ALSA kcontrol definition for Line Outputs Source. 94 94 * 95 95 * This defines a new ALSA mixer control named "Line OUTPUTS Source" that allows ··· 106 106 .put = tascam_line_out_put, 107 107 }; 108 108 109 - /** 109 + /* 110 110 * tascam_digital_out_get() - ALSA control get callback for Digital Outputs 111 111 * Source. 112 112 * @kcontrol: The ALSA kcontrol instance. ··· 129 129 return 0; 130 130 } 131 131 132 - /** 132 + /* 133 133 * tascam_digital_out_put() - ALSA control put callback for Digital Outputs 134 134 * Source. 135 135 * @kcontrol: The ALSA kcontrol instance. ··· 159 159 return changed; 160 160 } 161 161 162 - /** 162 + /* 163 163 * tascam_digital_out_control - ALSA kcontrol definition for Digital Outputs 164 164 * Source. 165 165 * ··· 177 177 .put = tascam_digital_out_put, 178 178 }; 179 179 180 - /** 180 + /* 181 181 * tascam_capture_source_info() - ALSA control info callback for capture source. 182 182 * @kcontrol: The ALSA kcontrol instance. 183 183 * @uinfo: The ALSA control element info structure to fill. ··· 194 194 return snd_ctl_enum_info(uinfo, 1, 2, capture_source_texts); 195 195 } 196 196 197 - /** 197 + /* 198 198 * tascam_capture_12_get() - ALSA control get callback for Capture channels 1 199 199 * and 2 Source. 200 200 * @kcontrol: The ALSA kcontrol instance. ··· 217 217 return 0; 218 218 } 219 219 220 - /** 220 + /* 221 221 * tascam_capture_12_put() - ALSA control put callback for Capture channels 1 222 222 * and 2 Source. 223 223 * @kcontrol: The ALSA kcontrol instance. ··· 247 247 return changed; 248 248 } 249 249 250 - /** 250 + /* 251 251 * tascam_capture_12_control - ALSA kcontrol definition for Capture channels 1 252 252 * and 2 Source. 253 253 * ··· 265 265 .put = tascam_capture_12_put, 266 266 }; 267 267 268 - /** 268 + /* 269 269 * tascam_capture_34_get() - ALSA control get callback for Capture channels 3 270 270 * and 4 Source. 271 271 * @kcontrol: The ALSA kcontrol instance. ··· 288 288 return 0; 289 289 } 290 290 291 - /** 291 + /* 292 292 * tascam_capture_34_put() - ALSA control put callback for Capture channels 3 293 293 * and 4 Source. 294 294 * @kcontrol: The ALSA kcontrol instance. ··· 318 318 return changed; 319 319 } 320 320 321 - /** 321 + /* 322 322 * tascam_capture_34_control - ALSA kcontrol definition for Capture channels 3 323 323 * and 4 Source. 324 324 * ··· 336 336 .put = tascam_capture_34_put, 337 337 }; 338 338 339 - /** 339 + /* 340 340 * tascam_samplerate_info() - ALSA control info callback for Sample Rate. 341 341 * @kcontrol: The ALSA kcontrol instance. 342 342 * @uinfo: The ALSA control element info structure to fill. ··· 356 356 return 0; 357 357 } 358 358 359 - /** 359 + /* 360 360 * tascam_samplerate_get() - ALSA control get callback for Sample Rate. 361 361 * @kcontrol: The ALSA kcontrol instance. 362 362 * @ucontrol: The ALSA control element value structure to fill. ··· 400 400 return 0; 401 401 } 402 402 403 - /** 403 + /* 404 404 * tascam_samplerate_control - ALSA kcontrol definition for Sample Rate. 405 405 * 406 406 * This defines a new ALSA mixer control named "Sample Rate" that displays
+11 -11
sound/usb/usx2y/us144mkii_midi.c
··· 3 3 4 4 #include "us144mkii.h" 5 5 6 - /** 6 + /* 7 7 * tascam_midi_in_work_handler() - Deferred work for processing MIDI input. 8 8 * @work: The work_struct instance. 9 9 * ··· 75 75 usb_put_urb(urb); 76 76 } 77 77 78 - /** 78 + /* 79 79 * tascam_midi_in_open() - Opens the MIDI input substream. 80 80 * @substream: The ALSA rawmidi substream to open. 81 81 * ··· 92 92 return 0; 93 93 } 94 94 95 - /** 95 + /* 96 96 * tascam_midi_in_close() - Closes the MIDI input substream. 97 97 * @substream: The ALSA rawmidi substream to close. 98 98 * ··· 103 103 return 0; 104 104 } 105 105 106 - /** 106 + /* 107 107 * tascam_midi_in_trigger() - Triggers MIDI input stream activity. 108 108 * @substream: The ALSA rawmidi substream. 109 109 * @up: Boolean indicating whether to start (1) or stop (0) the stream. ··· 150 150 } 151 151 } 152 152 153 - /** 153 + /* 154 154 * tascam_midi_in_ops - ALSA rawmidi operations for MIDI input. 155 155 * 156 156 * This structure defines the callback functions for MIDI input stream ··· 205 205 usb_put_urb(urb); 206 206 } 207 207 208 - /** 208 + /* 209 209 * tascam_midi_out_work_handler() - Deferred work for sending MIDI data 210 210 * @work: The work_struct instance. 211 211 * ··· 282 282 } 283 283 } 284 284 285 - /** 285 + /* 286 286 * tascam_midi_out_open() - Opens the MIDI output substream. 287 287 * @substream: The ALSA rawmidi substream to open. 288 288 * ··· 301 301 return 0; 302 302 } 303 303 304 - /** 304 + /* 305 305 * tascam_midi_out_close() - Closes the MIDI output substream. 306 306 * @substream: The ALSA rawmidi substream to close. 307 307 * ··· 312 312 return 0; 313 313 } 314 314 315 - /** 315 + /* 316 316 * tascam_midi_out_drain() - Drains the MIDI output stream. 317 317 * @substream: The ALSA rawmidi substream. 318 318 * ··· 340 340 usb_kill_anchored_urbs(&tascam->midi_out_anchor); 341 341 } 342 342 343 - /** 343 + /* 344 344 * tascam_midi_out_trigger() - Triggers MIDI output stream activity. 345 345 * @substream: The ALSA rawmidi substream. 346 346 * @up: Boolean indicating whether to start (1) or stop (0) the stream. ··· 361 361 } 362 362 } 363 363 364 - /** 364 + /* 365 365 * tascam_midi_out_ops - ALSA rawmidi operations for MIDI output. 366 366 * 367 367 * This structure defines the callback functions for MIDI output stream
+5 -5
sound/usb/usx2y/us144mkii_playback.c
··· 3 3 4 4 #include "us144mkii.h" 5 5 6 - /** 6 + /* 7 7 * tascam_playback_open() - Opens the PCM playback substream. 8 8 * @substream: The ALSA PCM substream to open. 9 9 * ··· 23 23 return 0; 24 24 } 25 25 26 - /** 26 + /* 27 27 * tascam_playback_close() - Closes the PCM playback substream. 28 28 * @substream: The ALSA PCM substream to close. 29 29 * ··· 41 41 return 0; 42 42 } 43 43 44 - /** 44 + /* 45 45 * tascam_playback_prepare() - Prepares the PCM playback substream for use. 46 46 * @substream: The ALSA PCM substream to prepare. 47 47 * ··· 108 108 return 0; 109 109 } 110 110 111 - /** 111 + /* 112 112 * tascam_playback_pointer() - Returns the current playback pointer position. 113 113 * @substream: The ALSA PCM substream. 114 114 * ··· 137 137 return do_div(pos, runtime->buffer_size); 138 138 } 139 139 140 - /** 140 + /* 141 141 * tascam_playback_ops - ALSA PCM operations for playback. 142 142 * 143 143 * This structure defines the callback functions for playback stream operations,
+1 -1
sound/usb/validate.c
··· 281 281 /* UAC_VERSION_2, UAC2_SAMPLE_RATE_CONVERTER: not implemented yet */ 282 282 283 283 /* UAC3 */ 284 - FIXED(UAC_VERSION_2, UAC_HEADER, struct uac3_ac_header_descriptor), 284 + FIXED(UAC_VERSION_3, UAC_HEADER, struct uac3_ac_header_descriptor), 285 285 FIXED(UAC_VERSION_3, UAC_INPUT_TERMINAL, 286 286 struct uac3_input_terminal_descriptor), 287 287 FIXED(UAC_VERSION_3, UAC_OUTPUT_TERMINAL,