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-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"People have been so busy for hunting and we're still getting more
changes than wished for, but it doesn't look too scary; almost all
changes are device-specific small fixes.

I guess it's rather a casual bump, and no more Easter eggs are left
for 7.0 (hopefully)...

- Fixes for the recent regression on ctxfi driver

- Fix missing INIT_LIST_HEAD() for ASoC card_aux_list

- Usual HD- and USB-audio, and ASoC AMD quirk updates

- ASoC fixes for AMD and Intel"

* tag 'sound-7.0-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (24 commits)
ASoC: amd: ps: Fix missing leading zeros in subsystem_device SSID log
ALSA: usb-audio: Exclude Scarlett 2i2 1st Gen (8016) from SKIP_IFACE_SETUP
ALSA: hda/realtek: add quirk for Acer Swift SFG14-73
ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7 14IMH9
ASoC: Intel: boards: fix unmet dependency on PINCTRL
ASoC: Intel: ehl_rt5660: Use the correct rtd->dev device in hw_params
ALSA: ctxfi: Don't enumerate SPDIF1 at DAIO initialization
ALSA: hda/realtek: Add quirk for Lenovo Yoga Slim 7 14AKP10
ALSA: hda/realtek: add quirk for HP Laptop 15-fc0xxx
ASoC: ep93xx: Fix unchecked clk_prepare_enable() and add rollback on failure
ASoC: soc-core: call missing INIT_LIST_HEAD() for card_aux_list
ALSA: hda/realtek: Add quirk for Samsung Book2 Pro 360 (NP950QED)
ASoC: amd: yc: Add DMI entry for HP Laptop 15-fc0xxx
ASoC: amd: yc: Add DMI quirk for ASUS Vivobook Pro 16X OLED M7601RM
ALSA: hda/realtek: Add quirk for ASUS ROG Strix SCAR 15
ALSA: usb-audio: Exclude Scarlett Solo 1st Gen from SKIP_IFACE_SETUP
ALSA: caiaq: fix stack out-of-bounds read in init_card
ALSA: ctxfi: Check the error for index mapping
ALSA: ctxfi: Fix missing SPDIFI1 index handling
ALSA: hda/realtek: add quirk for HP Victus 15-fb0xxx
...

+144 -50
+27 -1
sound/hda/codecs/realtek/alc269.c
··· 4122 4122 ALC233_FIXUP_LENOVO_GPIO2_MIC_HOTKEY, 4123 4123 ALC245_FIXUP_BASS_HP_DAC, 4124 4124 ALC245_FIXUP_ACER_MICMUTE_LED, 4125 + ALC245_FIXUP_CS35L41_I2C_2_MUTE_LED, 4126 + ALC236_FIXUP_HP_DMIC, 4125 4127 }; 4126 4128 4127 4129 /* A special fixup for Lenovo C940 and Yoga Duet 7; ··· 6653 6651 .v.func = alc285_fixup_hp_coef_micmute_led, 6654 6652 .chained = true, 6655 6653 .chain_id = ALC2XX_FIXUP_HEADSET_MIC, 6654 + }, 6655 + [ALC245_FIXUP_CS35L41_I2C_2_MUTE_LED] = { 6656 + .type = HDA_FIXUP_FUNC, 6657 + .v.func = alc245_fixup_hp_mute_led_coefbit, 6658 + .chained = true, 6659 + .chain_id = ALC287_FIXUP_CS35L41_I2C_2, 6660 + }, 6661 + [ALC236_FIXUP_HP_DMIC] = { 6662 + .type = HDA_FIXUP_PINS, 6663 + .v.pins = (const struct hda_pintbl[]) { 6664 + { 0x12, 0x90a60160 }, /* use as internal mic */ 6665 + { } 6666 + }, 6656 6667 } 6657 6668 }; 6658 6669 ··· 6720 6705 SND_PCI_QUIRK(0x1025, 0x1597, "Acer Nitro 5 AN517-55", ALC2XX_FIXUP_HEADSET_MIC), 6721 6706 SND_PCI_QUIRK(0x1025, 0x169a, "Acer Swift SFG16", ALC256_FIXUP_ACER_SFG16_MICMUTE_LED), 6722 6707 SND_PCI_QUIRK(0x1025, 0x171e, "Acer Nitro ANV15-51", ALC245_FIXUP_ACER_MICMUTE_LED), 6708 + SND_PCI_QUIRK(0x1025, 0x173a, "Acer Swift SFG14-73", ALC245_FIXUP_ACER_MICMUTE_LED), 6723 6709 SND_PCI_QUIRK(0x1025, 0x1826, "Acer Helios ZPC", ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2), 6724 6710 SND_PCI_QUIRK(0x1025, 0x182c, "Acer Helios ZPD", ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2), 6725 6711 SND_PCI_QUIRK(0x1025, 0x1844, "Acer Helios ZPS", ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2), ··· 7018 7002 SND_PCI_QUIRK(0x103c, 0x8a30, "HP Envy 17", ALC287_FIXUP_CS35L41_I2C_2), 7019 7003 SND_PCI_QUIRK(0x103c, 0x8a31, "HP Envy 15", ALC287_FIXUP_CS35L41_I2C_2), 7020 7004 SND_PCI_QUIRK(0x103c, 0x8a34, "HP Pavilion x360 2-in-1 Laptop 14-ek0xxx", ALC245_FIXUP_HP_MUTE_LED_COEFBIT), 7005 + SND_PCI_QUIRK(0x103c, 0x8a3d, "HP Victus 15-fb0xxx (MB 8A3D)", ALC245_FIXUP_HP_MUTE_LED_V2_COEFBIT), 7021 7006 SND_PCI_QUIRK(0x103c, 0x8a4f, "HP Victus 15-fa0xxx (MB 8A4F)", ALC245_FIXUP_HP_MUTE_LED_COEFBIT), 7022 7007 SND_PCI_QUIRK(0x103c, 0x8a6e, "HP EDNA 360", ALC287_FIXUP_CS35L41_I2C_4), 7023 7008 SND_PCI_QUIRK(0x103c, 0x8a74, "HP ProBook 440 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED), ··· 7162 7145 SND_PCI_QUIRK(0x103c, 0x8da1, "HP 16 Clipper OmniBook X", ALC287_FIXUP_CS35L41_I2C_2), 7163 7146 SND_PCI_QUIRK(0x103c, 0x8da7, "HP 14 Enstrom OmniBook X", ALC287_FIXUP_CS35L41_I2C_2), 7164 7147 SND_PCI_QUIRK(0x103c, 0x8da8, "HP 16 Piston OmniBook X", ALC287_FIXUP_CS35L41_I2C_2), 7148 + SND_PCI_QUIRK(0x103c, 0x8dc9, "HP Laptop 15-fc0xxx", ALC236_FIXUP_HP_DMIC), 7165 7149 SND_PCI_QUIRK(0x103c, 0x8dd4, "HP EliteStudio 8 AIO", ALC274_FIXUP_HP_AIO_BIND_DACS), 7166 7150 SND_PCI_QUIRK(0x103c, 0x8dd7, "HP Laptop 15-fd0xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2), 7167 7151 SND_PCI_QUIRK(0x103c, 0x8de8, "HP Gemtree", ALC245_FIXUP_TAS2781_SPI_2), ··· 7195 7177 SND_PCI_QUIRK(0x103c, 0x8e37, "HP 16 Piston OmniBook X", ALC287_FIXUP_CS35L41_I2C_2), 7196 7178 SND_PCI_QUIRK(0x103c, 0x8e3a, "HP Agusta", ALC287_FIXUP_CS35L41_I2C_2), 7197 7179 SND_PCI_QUIRK(0x103c, 0x8e3b, "HP Agusta", ALC287_FIXUP_CS35L41_I2C_2), 7198 - SND_PCI_QUIRK(0x103c, 0x8e60, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2), 7180 + SND_PCI_QUIRK(0x103c, 0x8e60, "HP OmniBook 7 Laptop 16-bh0xxx", ALC245_FIXUP_CS35L41_I2C_2_MUTE_LED), 7199 7181 SND_PCI_QUIRK(0x103c, 0x8e61, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2), 7200 7182 SND_PCI_QUIRK(0x103c, 0x8e62, "HP Trekker ", ALC287_FIXUP_CS35L41_I2C_2), 7201 7183 SND_PCI_QUIRK(0x103c, 0x8e8a, "HP NexusX", ALC245_FIXUP_HP_TAS2781_I2C_MUTE_LED), ··· 7279 7261 SND_PCI_QUIRK(0x1043, 0x1533, "ASUS GV302XA/XJ/XQ/XU/XV/XI", ALC287_FIXUP_CS35L41_I2C_2), 7280 7262 SND_PCI_QUIRK(0x1043, 0x1573, "ASUS GZ301VV/VQ/VU/VJ/VA/VC/VE/VVC/VQC/VUC/VJC/VEC/VCC", ALC285_FIXUP_ASUS_HEADSET_MIC), 7281 7263 SND_PCI_QUIRK(0x1043, 0x1584, "ASUS UM3406GA ", ALC287_FIXUP_CS35L41_I2C_2), 7264 + SND_PCI_QUIRK(0x1043, 0x1602, "ASUS ROG Strix SCAR 15", ALC285_FIXUP_ASUS_G533Z_PINS), 7282 7265 SND_PCI_QUIRK(0x1043, 0x1652, "ASUS ROG Zephyrus Do 15 SE", ALC289_FIXUP_ASUS_ZEPHYRUS_DUAL_SPK), 7283 7266 SND_PCI_QUIRK(0x1043, 0x1662, "ASUS GV301QH", ALC294_FIXUP_ASUS_DUAL_SPK), 7284 7267 SND_PCI_QUIRK(0x1043, 0x1663, "ASUS GU603ZI/ZJ/ZQ/ZU/ZV", ALC285_FIXUP_ASUS_HEADSET_MIC), ··· 7419 7400 SND_PCI_QUIRK(0x144d, 0xc188, "Samsung Galaxy Book Flex (NT950QCT-A38A)", ALC298_FIXUP_SAMSUNG_AMP), 7420 7401 SND_PCI_QUIRK(0x144d, 0xc189, "Samsung Galaxy Book Flex (NT950QCG-X716)", ALC298_FIXUP_SAMSUNG_AMP), 7421 7402 SND_PCI_QUIRK(0x144d, 0xc18a, "Samsung Galaxy Book Ion (NP930XCJ-K01US)", ALC298_FIXUP_SAMSUNG_AMP), 7403 + SND_PCI_QUIRK(0x144d, 0xc1ac, "Samsung Galaxy Book2 Pro 360 (NP950QED)", ALC298_FIXUP_SAMSUNG_AMP_V2_2_AMPS), 7422 7404 SND_PCI_QUIRK(0x144d, 0xc1a3, "Samsung Galaxy Book Pro (NP935XDB-KC1SE)", ALC298_FIXUP_SAMSUNG_AMP), 7423 7405 SND_PCI_QUIRK(0x144d, 0xc1a4, "Samsung Galaxy Book Pro 360 (NT935QBD)", ALC298_FIXUP_SAMSUNG_AMP), 7424 7406 SND_PCI_QUIRK(0x144d, 0xc1a6, "Samsung Galaxy Book Pro 360 (NP930QBD)", ALC298_FIXUP_SAMSUNG_AMP), ··· 7615 7595 SND_PCI_QUIRK(0x17aa, 0x3834, "Lenovo IdeaPad Slim 9i 14ITL5", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS), 7616 7596 SND_PCI_QUIRK(0x17aa, 0x383d, "Legion Y9000X 2019", ALC285_FIXUP_LEGION_Y9000X_SPEAKERS), 7617 7597 SND_PCI_QUIRK(0x17aa, 0x3843, "Lenovo Yoga 9i / Yoga Book 9i", ALC287_FIXUP_LENOVO_YOGA_BOOK_9I), 7598 + /* Yoga Pro 7 14IMH9 shares PCI SSID 17aa:3847 with Legion 7 16ACHG6; 7599 + * use codec SSID to distinguish them 7600 + */ 7601 + HDA_CODEC_QUIRK(0x17aa, 0x38cf, "Lenovo Yoga Pro 7 14IMH9", ALC287_FIXUP_YOGA9_14IMH9_BASS_SPK_PIN), 7618 7602 SND_PCI_QUIRK(0x17aa, 0x3847, "Legion 7 16ACHG6", ALC287_FIXUP_LEGION_16ACHG6), 7619 7603 SND_PCI_QUIRK(0x17aa, 0x384a, "Lenovo Yoga 7 15ITL5", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS), 7620 7604 SND_PCI_QUIRK(0x17aa, 0x3852, "Lenovo Yoga 7 14ITL5", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS), ··· 7681 7657 SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI), 7682 7658 SND_PCI_QUIRK(0x17aa, 0x390d, "Lenovo Yoga Pro 7 14ASP10", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN), 7683 7659 SND_PCI_QUIRK(0x17aa, 0x3913, "Lenovo 145", ALC236_FIXUP_LENOVO_INV_DMIC), 7660 + SND_PCI_QUIRK(0x17aa, 0x391a, "Lenovo Yoga Slim 7 14AKP10", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN), 7684 7661 SND_PCI_QUIRK(0x17aa, 0x391f, "Yoga S990-16 pro Quad YC Quad", ALC287_FIXUP_TXNW2781_I2C), 7685 7662 SND_PCI_QUIRK(0x17aa, 0x3920, "Yoga S990-16 pro Quad VECO Quad", ALC287_FIXUP_TXNW2781_I2C), 7686 7663 SND_PCI_QUIRK(0x17aa, 0x3929, "Thinkbook 13x Gen 5", ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD), ··· 7775 7750 SND_PCI_QUIRK(0xf111, 0x0009, "Framework Laptop", ALC295_FIXUP_FRAMEWORK_LAPTOP_MIC_NO_PRESENCE), 7776 7751 SND_PCI_QUIRK(0xf111, 0x000b, "Framework Laptop", ALC295_FIXUP_FRAMEWORK_LAPTOP_MIC_NO_PRESENCE), 7777 7752 SND_PCI_QUIRK(0xf111, 0x000c, "Framework Laptop", ALC295_FIXUP_FRAMEWORK_LAPTOP_MIC_NO_PRESENCE), 7753 + SND_PCI_QUIRK(0xf111, 0x000f, "Framework Laptop", ALC295_FIXUP_FRAMEWORK_LAPTOP_MIC_NO_PRESENCE), 7778 7754 7779 7755 #if 0 7780 7756 /* Below is a quirk table taken from the old code.
+13
sound/hda/controllers/intel.c
··· 2085 2085 {} 2086 2086 }; 2087 2087 2088 + static struct pci_device_id driver_denylist_msi_x870e[] = { 2089 + { PCI_DEVICE_SUB(0x1022, 0x15e3, 0x1462, 0xee59) }, /* MSI X870E Tomahawk WiFi */ 2090 + {} 2091 + }; 2092 + 2088 2093 /* DMI-based denylist, to be used when: 2089 2094 * - PCI subsystem IDs are zero, impossible to distinguish from valid sound cards. 2090 2095 * - Different modifications of the same laptop use different GPU models. ··· 2102 2097 DMI_MATCH(DMI_PRODUCT_VERSION, "Ideapad Z570"), 2103 2098 }, 2104 2099 .driver_data = &driver_denylist_ideapad_z570, 2100 + }, 2101 + { 2102 + /* PCI device matching alone incorrectly matches some laptops */ 2103 + .matches = { 2104 + DMI_MATCH(DMI_BOARD_VENDOR, "Micro-Star International Co., Ltd."), 2105 + DMI_MATCH(DMI_BOARD_NAME, "MAG X870E TOMAHAWK WIFI (MS-7E59)"), 2106 + }, 2107 + .driver_data = &driver_denylist_msi_x870e, 2105 2108 }, 2106 2109 {} 2107 2110 };
+7 -3
sound/pci/ctxfi/ctatc.c
··· 1427 1427 daio_mgr = (struct daio_mgr *)atc->rsc_mgrs[DAIO]; 1428 1428 da_desc.msr = atc->msr; 1429 1429 for (i = 0; i < NUM_DAIOTYP; i++) { 1430 - if (((i == MIC) && !cap.dedicated_mic) || ((i == RCA) && !cap.dedicated_rca)) 1430 + if (((i == MIC) && !cap.dedicated_mic) || 1431 + ((i == RCA) && !cap.dedicated_rca) || 1432 + i == SPDIFI1) 1431 1433 continue; 1432 - da_desc.type = (atc->model != CTSB073X) ? i : 1433 - ((i == SPDIFIO) ? SPDIFI1 : i); 1434 + if (atc->model == CTSB073X && i == SPDIFIO) 1435 + da_desc.type = SPDIFI1; 1436 + else 1437 + da_desc.type = i; 1434 1438 da_desc.output = (i < LINEIM) || (i == RCA); 1435 1439 err = daio_mgr->get_daio(daio_mgr, &da_desc, 1436 1440 (struct daio **)&atc->daios[i]);
+51 -31
sound/pci/ctxfi/ctdaio.c
··· 99 99 .output_slot = daio_index, 100 100 }; 101 101 102 - static unsigned int daio_device_index(enum DAIOTYP type, struct hw *hw) 102 + static int daio_device_index(enum DAIOTYP type, struct hw *hw) 103 103 { 104 104 switch (hw->chip_type) { 105 105 case ATC20K1: ··· 112 112 case LINEO3: return 5; 113 113 case LINEO4: return 6; 114 114 case LINEIM: return 7; 115 - default: return -EINVAL; 115 + default: 116 + pr_err("ctxfi: Invalid type %d for hw20k1\n", type); 117 + return -EINVAL; 116 118 } 117 119 case ATC20K2: 118 120 switch (type) { 119 121 case SPDIFOO: return 0; 120 122 case SPDIFIO: return 0; 123 + case SPDIFI1: return 1; 121 124 case LINEO1: return 4; 122 125 case LINEO2: return 7; 123 126 case LINEO3: return 5; ··· 128 125 case LINEIM: return 4; 129 126 case MIC: return 5; 130 127 case RCA: return 3; 131 - default: return -EINVAL; 128 + default: 129 + pr_err("ctxfi: Invalid type %d for hw20k2\n", type); 130 + return -EINVAL; 132 131 } 133 132 default: 133 + pr_err("ctxfi: Invalid chip type %d\n", hw->chip_type); 134 134 return -EINVAL; 135 135 } 136 136 } ··· 154 148 155 149 static int dao_commit_write(struct dao *dao) 156 150 { 157 - dao->hw->dao_commit_write(dao->hw, 158 - daio_device_index(dao->daio.type, dao->hw), dao->ctrl_blk); 151 + int idx = daio_device_index(dao->daio.type, dao->hw); 152 + 153 + if (idx < 0) 154 + return idx; 155 + dao->hw->dao_commit_write(dao->hw, idx, dao->ctrl_blk); 159 156 return 0; 160 157 } 161 158 ··· 296 287 297 288 static int dai_commit_write(struct dai *dai) 298 289 { 299 - dai->hw->dai_commit_write(dai->hw, 300 - daio_device_index(dai->daio.type, dai->hw), dai->ctrl_blk); 290 + int idx = daio_device_index(dai->daio.type, dai->hw); 291 + 292 + if (idx < 0) 293 + return idx; 294 + dai->hw->dai_commit_write(dai->hw, idx, dai->ctrl_blk); 301 295 return 0; 302 296 } 303 297 ··· 379 367 { 380 368 struct hw *hw = mgr->mgr.hw; 381 369 unsigned int conf; 382 - int err; 370 + int idx, err; 383 371 384 372 err = daio_rsc_init(&dao->daio, desc, mgr->mgr.hw); 385 373 if (err) ··· 398 386 if (err) 399 387 goto error2; 400 388 401 - hw->daio_mgr_dsb_dao(mgr->mgr.ctrl_blk, 402 - daio_device_index(dao->daio.type, hw)); 389 + idx = daio_device_index(dao->daio.type, hw); 390 + if (idx < 0) { 391 + err = idx; 392 + goto error2; 393 + } 394 + 395 + hw->daio_mgr_dsb_dao(mgr->mgr.ctrl_blk, idx); 403 396 hw->daio_mgr_commit_write(hw, mgr->mgr.ctrl_blk); 404 397 405 398 conf = (desc->msr & 0x7) | (desc->passthru << 3); 406 - hw->daio_mgr_dao_init(hw, mgr->mgr.ctrl_blk, 407 - daio_device_index(dao->daio.type, hw), conf); 408 - hw->daio_mgr_enb_dao(mgr->mgr.ctrl_blk, 409 - daio_device_index(dao->daio.type, hw)); 399 + hw->daio_mgr_dao_init(hw, mgr->mgr.ctrl_blk, idx, conf); 400 + hw->daio_mgr_enb_dao(mgr->mgr.ctrl_blk, idx); 410 401 hw->daio_mgr_commit_write(hw, mgr->mgr.ctrl_blk); 411 402 412 403 return 0; ··· 458 443 const struct daio_desc *desc, 459 444 struct daio_mgr *mgr) 460 445 { 461 - int err; 446 + int idx, err; 462 447 struct hw *hw = mgr->mgr.hw; 463 448 unsigned int rsr, msr; 464 449 ··· 472 457 if (err) 473 458 goto error1; 474 459 460 + idx = daio_device_index(dai->daio.type, dai->hw); 461 + if (idx < 0) { 462 + err = idx; 463 + goto error1; 464 + } 465 + 475 466 for (rsr = 0, msr = desc->msr; msr > 1; msr >>= 1) 476 467 rsr++; 477 468 ··· 486 465 /* default to disabling control of a SRC */ 487 466 hw->dai_srt_set_ec(dai->ctrl_blk, 0); 488 467 hw->dai_srt_set_et(dai->ctrl_blk, 0); /* default to disabling SRT */ 489 - hw->dai_commit_write(hw, 490 - daio_device_index(dai->daio.type, dai->hw), dai->ctrl_blk); 468 + hw->dai_commit_write(hw, idx, dai->ctrl_blk); 491 469 492 470 return 0; 493 471 ··· 601 581 static int daio_mgr_enb_daio(struct daio_mgr *mgr, struct daio *daio) 602 582 { 603 583 struct hw *hw = mgr->mgr.hw; 584 + int idx = daio_device_index(daio->type, hw); 604 585 605 - if (daio->output) { 606 - hw->daio_mgr_enb_dao(mgr->mgr.ctrl_blk, 607 - daio_device_index(daio->type, hw)); 608 - } else { 609 - hw->daio_mgr_enb_dai(mgr->mgr.ctrl_blk, 610 - daio_device_index(daio->type, hw)); 611 - } 586 + if (idx < 0) 587 + return idx; 588 + if (daio->output) 589 + hw->daio_mgr_enb_dao(mgr->mgr.ctrl_blk, idx); 590 + else 591 + hw->daio_mgr_enb_dai(mgr->mgr.ctrl_blk, idx); 612 592 return 0; 613 593 } 614 594 615 595 static int daio_mgr_dsb_daio(struct daio_mgr *mgr, struct daio *daio) 616 596 { 617 597 struct hw *hw = mgr->mgr.hw; 598 + int idx = daio_device_index(daio->type, hw); 618 599 619 - if (daio->output) { 620 - hw->daio_mgr_dsb_dao(mgr->mgr.ctrl_blk, 621 - daio_device_index(daio->type, hw)); 622 - } else { 623 - hw->daio_mgr_dsb_dai(mgr->mgr.ctrl_blk, 624 - daio_device_index(daio->type, hw)); 625 - } 600 + if (idx < 0) 601 + return idx; 602 + if (daio->output) 603 + hw->daio_mgr_dsb_dao(mgr->mgr.ctrl_blk, idx); 604 + else 605 + hw->daio_mgr_dsb_dai(mgr->mgr.ctrl_blk, idx); 626 606 return 0; 627 607 } 628 608
+1 -1
sound/soc/amd/ps/pci-ps.c
··· 339 339 mach->mach_params.subsystem_device = acp_data->subsystem_device; 340 340 mach->mach_params.subsystem_id_set = true; 341 341 342 - dev_dbg(dev, "SSID %x%x\n", mach->mach_params.subsystem_vendor, 342 + dev_dbg(dev, "SSID %x%04x\n", mach->mach_params.subsystem_vendor, 343 343 mach->mach_params.subsystem_device); 344 344 return mach; 345 345 }
+14
sound/soc/amd/yc/acp6x-mach.c
··· 48 48 { 49 49 .driver_data = &acp6x_card, 50 50 .matches = { 51 + DMI_MATCH(DMI_BOARD_VENDOR, "HP"), 52 + DMI_MATCH(DMI_PRODUCT_NAME, "HP Laptop 15-fc0xxx"), 53 + } 54 + }, 55 + { 56 + .driver_data = &acp6x_card, 57 + .matches = { 51 58 DMI_MATCH(DMI_BOARD_VENDOR, "Dell Inc."), 52 59 DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5525"), 53 60 } ··· 736 729 .matches = { 737 730 DMI_MATCH(DMI_BOARD_VENDOR, "Micro-Star International Co., Ltd."), 738 731 DMI_MATCH(DMI_PRODUCT_NAME, "Thin A15 B7VE"), 732 + } 733 + }, 734 + { 735 + .driver_data = &acp6x_card, 736 + .matches = { 737 + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."), 738 + DMI_MATCH(DMI_PRODUCT_NAME, "M7601RM"), 739 739 } 740 740 }, 741 741 {}
+24 -10
sound/soc/cirrus/ep93xx-i2s.c
··· 91 91 return __raw_readl(info->regs + reg); 92 92 } 93 93 94 - static void ep93xx_i2s_enable(struct ep93xx_i2s_info *info, int stream) 94 + static int ep93xx_i2s_enable(struct ep93xx_i2s_info *info, int stream) 95 95 { 96 96 unsigned base_reg; 97 + int err; 97 98 98 99 if ((ep93xx_i2s_read_reg(info, EP93XX_I2S_TX0EN) & 0x1) == 0 && 99 100 (ep93xx_i2s_read_reg(info, EP93XX_I2S_RX0EN) & 0x1) == 0) { 100 101 /* Enable clocks */ 101 - clk_prepare_enable(info->mclk); 102 - clk_prepare_enable(info->sclk); 103 - clk_prepare_enable(info->lrclk); 102 + err = clk_prepare_enable(info->mclk); 103 + if (err) 104 + return err; 105 + err = clk_prepare_enable(info->sclk); 106 + if (err) { 107 + clk_disable_unprepare(info->mclk); 108 + return err; 109 + } 110 + err = clk_prepare_enable(info->lrclk); 111 + if (err) { 112 + clk_disable_unprepare(info->sclk); 113 + clk_disable_unprepare(info->mclk); 114 + return err; 115 + } 104 116 105 117 /* Enable i2s */ 106 118 ep93xx_i2s_write_reg(info, EP93XX_I2S_GLCTRL, 1); ··· 131 119 ep93xx_i2s_write_reg(info, EP93XX_I2S_TXCTRL, 132 120 EP93XX_I2S_TXCTRL_TXEMPTY_LVL | 133 121 EP93XX_I2S_TXCTRL_TXUFIE); 122 + 123 + return 0; 134 124 } 135 125 136 126 static void ep93xx_i2s_disable(struct ep93xx_i2s_info *info, int stream) ··· 209 195 { 210 196 struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(dai); 211 197 212 - ep93xx_i2s_enable(info, substream->stream); 213 - 214 - return 0; 198 + return ep93xx_i2s_enable(info, substream->stream); 215 199 } 216 200 217 201 static void ep93xx_i2s_shutdown(struct snd_pcm_substream *substream, ··· 385 373 static int ep93xx_i2s_resume(struct snd_soc_component *component) 386 374 { 387 375 struct ep93xx_i2s_info *info = snd_soc_component_get_drvdata(component); 376 + int err; 388 377 389 378 if (!snd_soc_component_active(component)) 390 379 return 0; 391 380 392 - ep93xx_i2s_enable(info, SNDRV_PCM_STREAM_PLAYBACK); 393 - ep93xx_i2s_enable(info, SNDRV_PCM_STREAM_CAPTURE); 381 + err = ep93xx_i2s_enable(info, SNDRV_PCM_STREAM_PLAYBACK); 382 + if (err) 383 + return err; 394 384 395 - return 0; 385 + return ep93xx_i2s_enable(info, SNDRV_PCM_STREAM_CAPTURE); 396 386 } 397 387 #else 398 388 #define ep93xx_i2s_suspend NULL
-2
sound/soc/intel/boards/Kconfig
··· 530 530 select SND_SOC_CS42L43_SDW 531 531 select MFD_CS42L43 532 532 select MFD_CS42L43_SDW 533 - select PINCTRL_CS42L43 534 - select SPI_CS42L43 535 533 select SND_SOC_CS35L56_SPI 536 534 select SND_SOC_CS35L56_SDW 537 535 select SND_SOC_DMIC
+1 -1
sound/soc/intel/boards/ehl_rt5660.c
··· 127 127 params_rate(params) * 50, 128 128 params_rate(params) * 512); 129 129 if (ret < 0) 130 - dev_err(codec_dai->dev, "can't set codec pll: %d\n", ret); 130 + dev_err(rtd->dev, "can't set codec pll: %d\n", ret); 131 131 132 132 return ret; 133 133 }
+1
sound/soc/soc-core.c
··· 2859 2859 INIT_LIST_HEAD(&component->dobj_list); 2860 2860 INIT_LIST_HEAD(&component->card_list); 2861 2861 INIT_LIST_HEAD(&component->list); 2862 + INIT_LIST_HEAD(&component->card_aux_list); 2862 2863 mutex_init(&component->io_mutex); 2863 2864 2864 2865 if (!component->name) {
+1 -1
sound/usb/caiaq/device.c
··· 488 488 memset(id, 0, sizeof(id)); 489 489 490 490 for (c = card->shortname, len = 0; 491 - *c && len < sizeof(card->id); c++) 491 + *c && len < sizeof(card->id) - 1; c++) 492 492 if (*c != ' ') 493 493 id[len++] = *c; 494 494
+4
sound/usb/quirks.c
··· 2305 2305 QUIRK_FLAG_PLAYBACK_FIRST | QUIRK_FLAG_GENERIC_IMPLICIT_FB), 2306 2306 DEVICE_FLG(0x13e5, 0x0001, /* Serato Phono */ 2307 2307 QUIRK_FLAG_IGNORE_CTL_ERROR), 2308 + DEVICE_FLG(0x152a, 0x880a, /* NeuralDSP Quad Cortex */ 2309 + 0), /* Doesn't have the vendor quirk which would otherwise apply */ 2308 2310 DEVICE_FLG(0x154e, 0x1002, /* Denon DCD-1500RE */ 2309 2311 QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY), 2310 2312 DEVICE_FLG(0x154e, 0x1003, /* Denon DA-300USB */ ··· 2435 2433 QUIRK_FLAG_VALIDATE_RATES), 2436 2434 DEVICE_FLG(0x1235, 0x8006, 0), /* Focusrite Scarlett 2i2 1st Gen */ 2437 2435 DEVICE_FLG(0x1235, 0x800a, 0), /* Focusrite Scarlett 2i4 1st Gen */ 2436 + DEVICE_FLG(0x1235, 0x8016, 0), /* Focusrite Scarlett 2i2 1st Gen */ 2437 + DEVICE_FLG(0x1235, 0x801c, 0), /* Focusrite Scarlett Solo 1st Gen */ 2438 2438 VENDOR_FLG(0x1235, /* Focusrite Novation */ 2439 2439 QUIRK_FLAG_SKIP_CLOCK_SELECTOR | 2440 2440 QUIRK_FLAG_SKIP_IFACE_SETUP),