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

Pull sound fixes from Takashi Iwai:
"Lots of small fixes, and almost all are device-specific.

A few of them are the fixes for the old regressions by the fast kctl
lookups (introduced around 5.19). Others are ASoC simple-card fixes,
selftest compile warning fixes, ASoC AMD quirks, various ASoC codec
fixes as well as usual HD-audio quirks"

* tag 'sound-6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (26 commits)
ALSA: hda/realtek: Enable 4 amplifiers instead of 2 on a HP platform
ALSA: hda: Fix kctl->id initialization
ALSA: gus: Fix kctl->id initialization
ALSA: cmipci: Fix kctl->id initialization
ALSA: ymfpci: Fix kctl->id initialization
ALSA: ice1712,ice1724: fix the kcontrol->id initialization
ALSA: hda/realtek: Add quirk for Clevo NS50AU
ALSA: hda/realtek: Add quirks for Asus ROG 2024 laptops using CS35L41
ALSA: hda/realtek: Add "Intel Reference board" and "NUC 13" SSID in the ALC256
ALSA: hda/realtek: Add Lenovo P3 Tower platform
ALSA: hda/realtek: Add a quirk for HP Slim Desktop S01
selftests: alsa: pcm-test: Fix compiler warnings about the format
ASoC: fsl_sai: Enable BCI bit if SAI works on synchronous mode with BYP asserted
ASoC: simple-card-utils: fix PCM constraint error check
ASoC: cs35l56: Remove NULL check from cs35l56_sdw_dai_set_stream()
ASoC: max98363: limit the number of channel to 1
ASoC: max98363: Removed 32bit support
ASoC: mediatek: mt8195: fix use-after-free in driver remove path
ASoC: mediatek: mt8188: fix use-after-free in driver remove path
ASoC: amd: yc: Add Thinkpad Neo14 to quirks list for acp6x
...

+151 -116
+1 -1
sound/isa/gus/gus_pcm.c
··· 892 892 kctl = snd_ctl_new1(&snd_gf1_pcm_volume_control1, gus); 893 893 else 894 894 kctl = snd_ctl_new1(&snd_gf1_pcm_volume_control, gus); 895 + kctl->id.index = control_index; 895 896 err = snd_ctl_add(card, kctl); 896 897 if (err < 0) 897 898 return err; 898 - kctl->id.index = control_index; 899 899 900 900 return 0; 901 901 }
+3 -3
sound/pci/cmipci.c
··· 2688 2688 } 2689 2689 if (cm->can_ac3_hw) { 2690 2690 kctl = snd_ctl_new1(&snd_cmipci_spdif_default, cm); 2691 + kctl->id.device = pcm_spdif_device; 2691 2692 err = snd_ctl_add(card, kctl); 2692 2693 if (err < 0) 2693 2694 return err; 2694 - kctl->id.device = pcm_spdif_device; 2695 2695 kctl = snd_ctl_new1(&snd_cmipci_spdif_mask, cm); 2696 + kctl->id.device = pcm_spdif_device; 2696 2697 err = snd_ctl_add(card, kctl); 2697 2698 if (err < 0) 2698 2699 return err; 2699 - kctl->id.device = pcm_spdif_device; 2700 2700 kctl = snd_ctl_new1(&snd_cmipci_spdif_stream, cm); 2701 + kctl->id.device = pcm_spdif_device; 2701 2702 err = snd_ctl_add(card, kctl); 2702 2703 if (err < 0) 2703 2704 return err; 2704 - kctl->id.device = pcm_spdif_device; 2705 2705 } 2706 2706 if (cm->chip_version <= 37) { 2707 2707 sw = snd_cmipci_old_mixer_switches;
+5 -1
sound/pci/hda/hda_codec.c
··· 2458 2458 type == HDA_PCM_TYPE_HDMI) { 2459 2459 /* suppose a single SPDIF device */ 2460 2460 for (dig_mix = dig_mixes; dig_mix->name; dig_mix++) { 2461 + struct snd_ctl_elem_id id; 2462 + 2461 2463 kctl = find_mixer_ctl(codec, dig_mix->name, 0, 0); 2462 2464 if (!kctl) 2463 2465 break; 2464 - kctl->id.index = spdif_index; 2466 + id = kctl->id; 2467 + id.index = spdif_index; 2468 + snd_ctl_rename_id(codec->card, &kctl->id, &id); 2465 2469 } 2466 2470 bus->primary_dig_out_type = HDA_PCM_TYPE_HDMI; 2467 2471 }
+12 -1
sound/pci/hda/patch_realtek.c
··· 9500 9500 SND_PCI_QUIRK(0x103c, 0x8b8a, "HP", ALC236_FIXUP_HP_GPIO_LED), 9501 9501 SND_PCI_QUIRK(0x103c, 0x8b8b, "HP", ALC236_FIXUP_HP_GPIO_LED), 9502 9502 SND_PCI_QUIRK(0x103c, 0x8b8d, "HP", ALC236_FIXUP_HP_GPIO_LED), 9503 - SND_PCI_QUIRK(0x103c, 0x8b8f, "HP", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED), 9503 + SND_PCI_QUIRK(0x103c, 0x8b8f, "HP", ALC245_FIXUP_CS35L41_SPI_4_HP_GPIO_LED), 9504 9504 SND_PCI_QUIRK(0x103c, 0x8b92, "HP", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED), 9505 9505 SND_PCI_QUIRK(0x103c, 0x8b96, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), 9506 9506 SND_PCI_QUIRK(0x103c, 0x8b97, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), ··· 9547 9547 SND_PCI_QUIRK(0x1043, 0x1a8f, "ASUS UX582ZS", ALC245_FIXUP_CS35L41_SPI_2), 9548 9548 SND_PCI_QUIRK(0x1043, 0x1b11, "ASUS UX431DA", ALC294_FIXUP_ASUS_COEF_1B), 9549 9549 SND_PCI_QUIRK(0x1043, 0x1b13, "Asus U41SV", ALC269_FIXUP_INV_DMIC), 9550 + SND_PCI_QUIRK(0x1043, 0x1b93, "ASUS G614JVR/JIR", ALC245_FIXUP_CS35L41_SPI_2), 9550 9551 SND_PCI_QUIRK(0x1043, 0x1bbd, "ASUS Z550MA", ALC255_FIXUP_ASUS_MIC_NO_PRESENCE), 9551 9552 SND_PCI_QUIRK(0x1043, 0x1c23, "Asus X55U", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), 9552 9553 SND_PCI_QUIRK(0x1043, 0x1c62, "ASUS GU603", ALC289_FIXUP_ASUS_GA401), ··· 9566 9565 SND_PCI_QUIRK(0x1043, 0x1f12, "ASUS UM5302", ALC287_FIXUP_CS35L41_I2C_2), 9567 9566 SND_PCI_QUIRK(0x1043, 0x1f92, "ASUS ROG Flow X16", ALC289_FIXUP_ASUS_GA401), 9568 9567 SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2), 9568 + SND_PCI_QUIRK(0x1043, 0x3a20, "ASUS G614JZR", ALC245_FIXUP_CS35L41_SPI_2), 9569 + SND_PCI_QUIRK(0x1043, 0x3a30, "ASUS G814JVR/JIR", ALC245_FIXUP_CS35L41_SPI_2), 9570 + SND_PCI_QUIRK(0x1043, 0x3a40, "ASUS G814JZR", ALC245_FIXUP_CS35L41_SPI_2), 9571 + SND_PCI_QUIRK(0x1043, 0x3a50, "ASUS G834JYR/JZR", ALC245_FIXUP_CS35L41_SPI_2), 9572 + SND_PCI_QUIRK(0x1043, 0x3a60, "ASUS G634JYR/JZR", ALC245_FIXUP_CS35L41_SPI_2), 9569 9573 SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC), 9570 9574 SND_PCI_QUIRK(0x1043, 0x834a, "ASUS S101", ALC269_FIXUP_STEREO_DMIC), 9571 9575 SND_PCI_QUIRK(0x1043, 0x8398, "ASUS P1005", ALC269_FIXUP_STEREO_DMIC), ··· 9594 9588 SND_PCI_QUIRK(0x10ec, 0x124c, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK), 9595 9589 SND_PCI_QUIRK(0x10ec, 0x1252, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK), 9596 9590 SND_PCI_QUIRK(0x10ec, 0x1254, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK), 9591 + SND_PCI_QUIRK(0x10ec, 0x12cc, "Intel Reference board", ALC225_FIXUP_HEADSET_JACK), 9597 9592 SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-SZ6", ALC269_FIXUP_HEADSET_MODE), 9598 9593 SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC), 9599 9594 SND_PCI_QUIRK(0x144d, 0xc169, "Samsung Notebook 9 Pen (NP930SBE-K01US)", ALC298_FIXUP_SAMSUNG_AMP), ··· 9643 9636 SND_PCI_QUIRK(0x1558, 0x5101, "Clevo S510WU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), 9644 9637 SND_PCI_QUIRK(0x1558, 0x5157, "Clevo W517GU1", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), 9645 9638 SND_PCI_QUIRK(0x1558, 0x51a1, "Clevo NS50MU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), 9639 + SND_PCI_QUIRK(0x1558, 0x51b1, "Clevo NS50AU", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE), 9646 9640 SND_PCI_QUIRK(0x1558, 0x5630, "Clevo NP50RNJS", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE), 9647 9641 SND_PCI_QUIRK(0x1558, 0x70a1, "Clevo NB70T[HJK]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), 9648 9642 SND_PCI_QUIRK(0x1558, 0x70b3, "Clevo NK70SB", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE), ··· 9815 9807 SND_PCI_QUIRK(0x8086, 0x2074, "Intel NUC 8", ALC233_FIXUP_INTEL_NUC8_DMIC), 9816 9808 SND_PCI_QUIRK(0x8086, 0x2080, "Intel NUC 8 Rugged", ALC256_FIXUP_INTEL_NUC8_RUGGED), 9817 9809 SND_PCI_QUIRK(0x8086, 0x2081, "Intel NUC 10", ALC256_FIXUP_INTEL_NUC10), 9810 + SND_PCI_QUIRK(0x8086, 0x3038, "Intel NUC 13", ALC225_FIXUP_HEADSET_JACK), 9818 9811 SND_PCI_QUIRK(0xf111, 0x0001, "Framework Laptop", ALC295_FIXUP_FRAMEWORK_LAPTOP_MIC_NO_PRESENCE), 9819 9812 9820 9813 #if 0 ··· 11703 11694 SND_PCI_QUIRK(0x103c, 0x8719, "HP", ALC897_FIXUP_HP_HSMIC_VERB), 11704 11695 SND_PCI_QUIRK(0x103c, 0x872b, "HP", ALC897_FIXUP_HP_HSMIC_VERB), 11705 11696 SND_PCI_QUIRK(0x103c, 0x873e, "HP", ALC671_FIXUP_HP_HEADSET_MIC2), 11697 + SND_PCI_QUIRK(0x103c, 0x8768, "HP Slim Desktop S01", ALC671_FIXUP_HP_HEADSET_MIC2), 11706 11698 SND_PCI_QUIRK(0x103c, 0x877e, "HP 288 Pro G6", ALC671_FIXUP_HP_HEADSET_MIC2), 11707 11699 SND_PCI_QUIRK(0x103c, 0x885f, "HP 288 Pro G8", ALC671_FIXUP_HP_HEADSET_MIC2), 11708 11700 SND_PCI_QUIRK(0x1043, 0x1080, "Asus UX501VW", ALC668_FIXUP_HEADSET_MODE), ··· 11725 11715 SND_PCI_QUIRK(0x14cd, 0x5003, "USI", ALC662_FIXUP_USI_HEADSET_MODE), 11726 11716 SND_PCI_QUIRK(0x17aa, 0x1036, "Lenovo P520", ALC662_FIXUP_LENOVO_MULTI_CODECS), 11727 11717 SND_PCI_QUIRK(0x17aa, 0x1057, "Lenovo P360", ALC897_FIXUP_HEADSET_MIC_PIN), 11718 + SND_PCI_QUIRK(0x17aa, 0x1064, "Lenovo P3 Tower", ALC897_FIXUP_HEADSET_MIC_PIN), 11728 11719 SND_PCI_QUIRK(0x17aa, 0x32ca, "Lenovo ThinkCentre M80", ALC897_FIXUP_HEADSET_MIC_PIN), 11729 11720 SND_PCI_QUIRK(0x17aa, 0x32cb, "Lenovo ThinkCentre M70", ALC897_FIXUP_HEADSET_MIC_PIN), 11730 11721 SND_PCI_QUIRK(0x17aa, 0x32cf, "Lenovo ThinkCentre M950", ALC897_FIXUP_HEADSET_MIC_PIN),
+4 -3
sound/pci/ice1712/aureon.c
··· 1899 1899 else { 1900 1900 for (i = 0; i < ARRAY_SIZE(cs8415_controls); i++) { 1901 1901 struct snd_kcontrol *kctl; 1902 - err = snd_ctl_add(ice->card, (kctl = snd_ctl_new1(&cs8415_controls[i], ice))); 1903 - if (err < 0) 1904 - return err; 1902 + kctl = snd_ctl_new1(&cs8415_controls[i], ice); 1905 1903 if (i > 1) 1906 1904 kctl->id.device = ice->pcm->device; 1905 + err = snd_ctl_add(ice->card, kctl); 1906 + if (err < 0) 1907 + return err; 1907 1908 } 1908 1909 } 1909 1910 }
+9 -5
sound/pci/ice1712/ice1712.c
··· 2371 2371 2372 2372 if (snd_BUG_ON(!ice->pcm_pro)) 2373 2373 return -EIO; 2374 - err = snd_ctl_add(ice->card, kctl = snd_ctl_new1(&snd_ice1712_spdif_default, ice)); 2374 + kctl = snd_ctl_new1(&snd_ice1712_spdif_default, ice); 2375 + kctl->id.device = ice->pcm_pro->device; 2376 + err = snd_ctl_add(ice->card, kctl); 2375 2377 if (err < 0) 2376 2378 return err; 2379 + kctl = snd_ctl_new1(&snd_ice1712_spdif_maskc, ice); 2377 2380 kctl->id.device = ice->pcm_pro->device; 2378 - err = snd_ctl_add(ice->card, kctl = snd_ctl_new1(&snd_ice1712_spdif_maskc, ice)); 2381 + err = snd_ctl_add(ice->card, kctl); 2379 2382 if (err < 0) 2380 2383 return err; 2384 + kctl = snd_ctl_new1(&snd_ice1712_spdif_maskp, ice); 2381 2385 kctl->id.device = ice->pcm_pro->device; 2382 - err = snd_ctl_add(ice->card, kctl = snd_ctl_new1(&snd_ice1712_spdif_maskp, ice)); 2386 + err = snd_ctl_add(ice->card, kctl); 2383 2387 if (err < 0) 2384 2388 return err; 2389 + kctl = snd_ctl_new1(&snd_ice1712_spdif_stream, ice); 2385 2390 kctl->id.device = ice->pcm_pro->device; 2386 - err = snd_ctl_add(ice->card, kctl = snd_ctl_new1(&snd_ice1712_spdif_stream, ice)); 2391 + err = snd_ctl_add(ice->card, kctl); 2387 2392 if (err < 0) 2388 2393 return err; 2389 - kctl->id.device = ice->pcm_pro->device; 2390 2394 ice->spdif.stream_ctl = kctl; 2391 2395 return 0; 2392 2396 }
+10 -6
sound/pci/ice1712/ice1724.c
··· 2392 2392 if (err < 0) 2393 2393 return err; 2394 2394 2395 - err = snd_ctl_add(ice->card, kctl = snd_ctl_new1(&snd_vt1724_spdif_default, ice)); 2395 + kctl = snd_ctl_new1(&snd_vt1724_spdif_default, ice); 2396 + kctl->id.device = ice->pcm->device; 2397 + err = snd_ctl_add(ice->card, kctl); 2396 2398 if (err < 0) 2397 2399 return err; 2400 + kctl = snd_ctl_new1(&snd_vt1724_spdif_maskc, ice); 2398 2401 kctl->id.device = ice->pcm->device; 2399 - err = snd_ctl_add(ice->card, kctl = snd_ctl_new1(&snd_vt1724_spdif_maskc, ice)); 2402 + err = snd_ctl_add(ice->card, kctl); 2400 2403 if (err < 0) 2401 2404 return err; 2405 + kctl = snd_ctl_new1(&snd_vt1724_spdif_maskp, ice); 2402 2406 kctl->id.device = ice->pcm->device; 2403 - err = snd_ctl_add(ice->card, kctl = snd_ctl_new1(&snd_vt1724_spdif_maskp, ice)); 2407 + err = snd_ctl_add(ice->card, kctl); 2404 2408 if (err < 0) 2405 2409 return err; 2406 - kctl->id.device = ice->pcm->device; 2407 2410 #if 0 /* use default only */ 2408 - err = snd_ctl_add(ice->card, kctl = snd_ctl_new1(&snd_vt1724_spdif_stream, ice)); 2411 + kctl = snd_ctl_new1(&snd_vt1724_spdif_stream, ice); 2412 + kctl->id.device = ice->pcm->device; 2413 + err = snd_ctl_add(ice->card, kctl); 2409 2414 if (err < 0) 2410 2415 return err; 2411 - kctl->id.device = ice->pcm->device; 2412 2416 ice->spdif.stream_ctl = kctl; 2413 2417 #endif 2414 2418 return 0;
+3 -3
sound/pci/ymfpci/ymfpci_main.c
··· 1822 1822 if (snd_BUG_ON(!chip->pcm_spdif)) 1823 1823 return -ENXIO; 1824 1824 kctl = snd_ctl_new1(&snd_ymfpci_spdif_default, chip); 1825 + kctl->id.device = chip->pcm_spdif->device; 1825 1826 err = snd_ctl_add(chip->card, kctl); 1826 1827 if (err < 0) 1827 1828 return err; 1828 - kctl->id.device = chip->pcm_spdif->device; 1829 1829 kctl = snd_ctl_new1(&snd_ymfpci_spdif_mask, chip); 1830 + kctl->id.device = chip->pcm_spdif->device; 1830 1831 err = snd_ctl_add(chip->card, kctl); 1831 1832 if (err < 0) 1832 1833 return err; 1833 - kctl->id.device = chip->pcm_spdif->device; 1834 1834 kctl = snd_ctl_new1(&snd_ymfpci_spdif_stream, chip); 1835 + kctl->id.device = chip->pcm_spdif->device; 1835 1836 err = snd_ctl_add(chip->card, kctl); 1836 1837 if (err < 0) 1837 1838 return err; 1838 - kctl->id.device = chip->pcm_spdif->device; 1839 1839 chip->spdif_pcm_ctl = kctl; 1840 1840 1841 1841 /* direct recording source */
+1 -2
sound/soc/amd/ps/pci-ps.c
··· 211 211 case ACP63_PDM_DEV_MASK: 212 212 adata->pdm_dev_index = 0; 213 213 acp63_fill_platform_dev_info(&pdevinfo[0], parent, NULL, "acp_ps_pdm_dma", 214 - 0, adata->res, 1, &adata->acp_lock, 215 - sizeof(adata->acp_lock)); 214 + 0, adata->res, 1, NULL, 0); 216 215 acp63_fill_platform_dev_info(&pdevinfo[1], parent, NULL, "dmic-codec", 217 216 0, NULL, 0, NULL, 0); 218 217 acp63_fill_platform_dev_info(&pdevinfo[2], parent, NULL, "acp_ps_mach",
+5 -5
sound/soc/amd/ps/ps-pdm-dma.c
··· 361 361 { 362 362 struct resource *res; 363 363 struct pdm_dev_data *adata; 364 + struct acp63_dev_data *acp_data; 365 + struct device *parent; 364 366 int status; 365 367 366 - if (!pdev->dev.platform_data) { 367 - dev_err(&pdev->dev, "platform_data not retrieved\n"); 368 - return -ENODEV; 369 - } 368 + parent = pdev->dev.parent; 369 + acp_data = dev_get_drvdata(parent); 370 370 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 371 371 if (!res) { 372 372 dev_err(&pdev->dev, "IORESOURCE_MEM FAILED\n"); ··· 382 382 return -ENOMEM; 383 383 384 384 adata->capture_stream = NULL; 385 - adata->acp_lock = pdev->dev.platform_data; 385 + adata->acp_lock = &acp_data->acp_lock; 386 386 dev_set_drvdata(&pdev->dev, adata); 387 387 status = devm_snd_soc_register_component(&pdev->dev, 388 388 &acp63_pdm_component,
+7
sound/soc/amd/yc/acp6x-mach.c
··· 175 175 .driver_data = &acp6x_card, 176 176 .matches = { 177 177 DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), 178 + DMI_MATCH(DMI_PRODUCT_NAME, "21EF"), 179 + } 180 + }, 181 + { 182 + .driver_data = &acp6x_card, 183 + .matches = { 184 + DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), 178 185 DMI_MATCH(DMI_PRODUCT_NAME, "21EM"), 179 186 } 180 187 },
-3
sound/soc/codecs/cs35l56.c
··· 704 704 static int cs35l56_sdw_dai_set_stream(struct snd_soc_dai *dai, 705 705 void *sdw_stream, int direction) 706 706 { 707 - if (!sdw_stream) 708 - return 0; 709 - 710 707 snd_soc_dai_dma_data_set(dai, direction, sdw_stream); 711 708 712 709 return 0;
+2 -2
sound/soc/codecs/max98363.c
··· 211 211 } 212 212 213 213 #define MAX98363_RATES SNDRV_PCM_RATE_8000_192000 214 - #define MAX98363_FORMATS (SNDRV_PCM_FMTBIT_S32_LE) 214 + #define MAX98363_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE) 215 215 216 216 static int max98363_sdw_dai_hw_params(struct snd_pcm_substream *substream, 217 217 struct snd_pcm_hw_params *params, ··· 246 246 stream_config.frame_rate = params_rate(params); 247 247 stream_config.bps = snd_pcm_format_width(params_format(params)); 248 248 stream_config.direction = direction; 249 - stream_config.ch_count = params_channels(params); 249 + stream_config.ch_count = 1; 250 250 251 251 if (stream_config.ch_count > runtime->hw.channels_max) { 252 252 stream_config.ch_count = runtime->hw.channels_max;
+24
sound/soc/codecs/nau8824.c
··· 1903 1903 }, 1904 1904 .driver_data = (void *)(NAU8824_MONO_SPEAKER), 1905 1905 }, 1906 + { 1907 + /* Positivo CW14Q01P */ 1908 + .matches = { 1909 + DMI_MATCH(DMI_SYS_VENDOR, "Positivo Tecnologia SA"), 1910 + DMI_MATCH(DMI_BOARD_NAME, "CW14Q01P"), 1911 + }, 1912 + .driver_data = (void *)(NAU8824_JD_ACTIVE_HIGH), 1913 + }, 1914 + { 1915 + /* Positivo K1424G */ 1916 + .matches = { 1917 + DMI_MATCH(DMI_SYS_VENDOR, "Positivo Tecnologia SA"), 1918 + DMI_MATCH(DMI_BOARD_NAME, "K1424G"), 1919 + }, 1920 + .driver_data = (void *)(NAU8824_JD_ACTIVE_HIGH), 1921 + }, 1922 + { 1923 + /* Positivo N14ZP74G */ 1924 + .matches = { 1925 + DMI_MATCH(DMI_SYS_VENDOR, "Positivo Tecnologia SA"), 1926 + DMI_MATCH(DMI_BOARD_NAME, "N14ZP74G"), 1927 + }, 1928 + .driver_data = (void *)(NAU8824_JD_ACTIVE_HIGH), 1929 + }, 1906 1930 {} 1907 1931 }; 1908 1932
-1
sound/soc/codecs/wcd938x-sdw.c
··· 1190 1190 .readable_reg = wcd938x_readable_register, 1191 1191 .writeable_reg = wcd938x_writeable_register, 1192 1192 .volatile_reg = wcd938x_volatile_register, 1193 - .can_multi_write = true, 1194 1193 }; 1195 1194 1196 1195 static const struct sdw_slave_ops wcd9380_slave_ops = {
-1
sound/soc/codecs/wsa881x.c
··· 645 645 .readable_reg = wsa881x_readable_register, 646 646 .reg_format_endian = REGMAP_ENDIAN_NATIVE, 647 647 .val_format_endian = REGMAP_ENDIAN_NATIVE, 648 - .can_multi_write = true, 649 648 }; 650 649 651 650 enum {
-1
sound/soc/codecs/wsa883x.c
··· 946 946 .writeable_reg = wsa883x_writeable_register, 947 947 .reg_format_endian = REGMAP_ENDIAN_NATIVE, 948 948 .val_format_endian = REGMAP_ENDIAN_NATIVE, 949 - .can_multi_write = true, 950 949 .use_single_read = true, 951 950 }; 952 951
+9 -2
sound/soc/fsl/fsl_sai.c
··· 491 491 regmap_update_bits(sai->regmap, reg, FSL_SAI_CR2_MSEL_MASK, 492 492 FSL_SAI_CR2_MSEL(sai->mclk_id[tx])); 493 493 494 - if (savediv == 1) 494 + if (savediv == 1) { 495 495 regmap_update_bits(sai->regmap, reg, 496 496 FSL_SAI_CR2_DIV_MASK | FSL_SAI_CR2_BYP, 497 497 FSL_SAI_CR2_BYP); 498 - else 498 + if (fsl_sai_dir_is_synced(sai, adir)) 499 + regmap_update_bits(sai->regmap, FSL_SAI_xCR2(tx, ofs), 500 + FSL_SAI_CR2_BCI, FSL_SAI_CR2_BCI); 501 + else 502 + regmap_update_bits(sai->regmap, FSL_SAI_xCR2(tx, ofs), 503 + FSL_SAI_CR2_BCI, 0); 504 + } else { 499 505 regmap_update_bits(sai->regmap, reg, 500 506 FSL_SAI_CR2_DIV_MASK | FSL_SAI_CR2_BYP, 501 507 savediv / 2 - 1); 508 + } 502 509 503 510 if (sai->soc_data->max_register >= FSL_SAI_MCTL) { 504 511 /* SAI is in master mode at this point, so enable MCLK */
+1
sound/soc/fsl/fsl_sai.h
··· 116 116 117 117 /* SAI Transmit and Receive Configuration 2 Register */ 118 118 #define FSL_SAI_CR2_SYNC BIT(30) 119 + #define FSL_SAI_CR2_BCI BIT(28) 119 120 #define FSL_SAI_CR2_MSEL_MASK (0x3 << 26) 120 121 #define FSL_SAI_CR2_MSEL_BUS 0 121 122 #define FSL_SAI_CR2_MSEL_MCLK1 BIT(26)
+1 -1
sound/soc/generic/simple-card-utils.c
··· 314 314 } 315 315 ret = snd_pcm_hw_constraint_minmax(substream->runtime, SNDRV_PCM_HW_PARAM_RATE, 316 316 fixed_rate, fixed_rate); 317 - if (ret) 317 + if (ret < 0) 318 318 goto codec_err; 319 319 } 320 320
+1
sound/soc/generic/simple-card.c
··· 416 416 417 417 if (ret < 0) { 418 418 of_node_put(codec); 419 + of_node_put(plat); 419 420 of_node_put(np); 420 421 goto error; 421 422 }
-7
sound/soc/mediatek/mt8188/mt8188-afe-clk.c
··· 418 418 return 0; 419 419 } 420 420 421 - void mt8188_afe_deinit_clock(void *priv) 422 - { 423 - struct mtk_base_afe *afe = priv; 424 - 425 - mt8188_audsys_clk_unregister(afe); 426 - } 427 - 428 421 int mt8188_afe_enable_clk(struct mtk_base_afe *afe, struct clk *clk) 429 422 { 430 423 int ret;
-1
sound/soc/mediatek/mt8188/mt8188-afe-clk.h
··· 100 100 int mt8188_afe_get_mclk_source_rate(struct mtk_base_afe *afe, int apll); 101 101 int mt8188_afe_get_default_mclk_source_by_rate(int rate); 102 102 int mt8188_afe_init_clock(struct mtk_base_afe *afe); 103 - void mt8188_afe_deinit_clock(void *priv); 104 103 int mt8188_afe_enable_clk(struct mtk_base_afe *afe, struct clk *clk); 105 104 void mt8188_afe_disable_clk(struct mtk_base_afe *afe, struct clk *clk); 106 105 int mt8188_afe_set_clk_rate(struct mtk_base_afe *afe, struct clk *clk,
-4
sound/soc/mediatek/mt8188/mt8188-afe-pcm.c
··· 3185 3185 if (ret) 3186 3186 return dev_err_probe(dev, ret, "init clock error"); 3187 3187 3188 - ret = devm_add_action_or_reset(dev, mt8188_afe_deinit_clock, (void *)afe); 3189 - if (ret) 3190 - return ret; 3191 - 3192 3188 spin_lock_init(&afe_priv->afe_ctrl_lock); 3193 3189 3194 3190 mutex_init(&afe->irq_alloc_lock);
+24 -23
sound/soc/mediatek/mt8188/mt8188-audsys-clk.c
··· 138 138 GATE_AUD6(CLK_AUD_GASRC11, "aud_gasrc11", "top_asm_h", 11), 139 139 }; 140 140 141 + static void mt8188_audsys_clk_unregister(void *data) 142 + { 143 + struct mtk_base_afe *afe = data; 144 + struct mt8188_afe_private *afe_priv = afe->platform_priv; 145 + struct clk *clk; 146 + struct clk_lookup *cl; 147 + int i; 148 + 149 + if (!afe_priv) 150 + return; 151 + 152 + for (i = 0; i < CLK_AUD_NR_CLK; i++) { 153 + cl = afe_priv->lookup[i]; 154 + if (!cl) 155 + continue; 156 + 157 + clk = cl->clk; 158 + clk_unregister_gate(clk); 159 + 160 + clkdev_drop(cl); 161 + } 162 + } 163 + 141 164 int mt8188_audsys_clk_register(struct mtk_base_afe *afe) 142 165 { 143 166 struct mt8188_afe_private *afe_priv = afe->platform_priv; ··· 202 179 afe_priv->lookup[i] = cl; 203 180 } 204 181 205 - return 0; 206 - } 207 - 208 - void mt8188_audsys_clk_unregister(struct mtk_base_afe *afe) 209 - { 210 - struct mt8188_afe_private *afe_priv = afe->platform_priv; 211 - struct clk *clk; 212 - struct clk_lookup *cl; 213 - int i; 214 - 215 - if (!afe_priv) 216 - return; 217 - 218 - for (i = 0; i < CLK_AUD_NR_CLK; i++) { 219 - cl = afe_priv->lookup[i]; 220 - if (!cl) 221 - continue; 222 - 223 - clk = cl->clk; 224 - clk_unregister_gate(clk); 225 - 226 - clkdev_drop(cl); 227 - } 182 + return devm_add_action_or_reset(afe->dev, mt8188_audsys_clk_unregister, afe); 228 183 }
-1
sound/soc/mediatek/mt8188/mt8188-audsys-clk.h
··· 10 10 #define _MT8188_AUDSYS_CLK_H_ 11 11 12 12 int mt8188_audsys_clk_register(struct mtk_base_afe *afe); 13 - void mt8188_audsys_clk_unregister(struct mtk_base_afe *afe); 14 13 15 14 #endif
-5
sound/soc/mediatek/mt8195/mt8195-afe-clk.c
··· 410 410 return 0; 411 411 } 412 412 413 - void mt8195_afe_deinit_clock(struct mtk_base_afe *afe) 414 - { 415 - mt8195_audsys_clk_unregister(afe); 416 - } 417 - 418 413 int mt8195_afe_enable_clk(struct mtk_base_afe *afe, struct clk *clk) 419 414 { 420 415 int ret;
-1
sound/soc/mediatek/mt8195/mt8195-afe-clk.h
··· 101 101 int mt8195_afe_get_mclk_source_rate(struct mtk_base_afe *afe, int apll); 102 102 int mt8195_afe_get_default_mclk_source_by_rate(int rate); 103 103 int mt8195_afe_init_clock(struct mtk_base_afe *afe); 104 - void mt8195_afe_deinit_clock(struct mtk_base_afe *afe); 105 104 int mt8195_afe_enable_clk(struct mtk_base_afe *afe, struct clk *clk); 106 105 void mt8195_afe_disable_clk(struct mtk_base_afe *afe, struct clk *clk); 107 106 int mt8195_afe_prepare_clk(struct mtk_base_afe *afe, struct clk *clk);
-4
sound/soc/mediatek/mt8195/mt8195-afe-pcm.c
··· 3255 3255 3256 3256 static void mt8195_afe_pcm_dev_remove(struct platform_device *pdev) 3257 3257 { 3258 - struct mtk_base_afe *afe = platform_get_drvdata(pdev); 3259 - 3260 3258 snd_soc_unregister_component(&pdev->dev); 3261 3259 3262 3260 pm_runtime_disable(&pdev->dev); 3263 3261 if (!pm_runtime_status_suspended(&pdev->dev)) 3264 3262 mt8195_afe_runtime_suspend(&pdev->dev); 3265 - 3266 - mt8195_afe_deinit_clock(afe); 3267 3263 } 3268 3264 3269 3265 static const struct of_device_id mt8195_afe_pcm_dt_match[] = {
+24 -23
sound/soc/mediatek/mt8195/mt8195-audsys-clk.c
··· 148 148 GATE_AUD6(CLK_AUD_GASRC19, "aud_gasrc19", "top_asm_h", 19), 149 149 }; 150 150 151 + static void mt8195_audsys_clk_unregister(void *data) 152 + { 153 + struct mtk_base_afe *afe = data; 154 + struct mt8195_afe_private *afe_priv = afe->platform_priv; 155 + struct clk *clk; 156 + struct clk_lookup *cl; 157 + int i; 158 + 159 + if (!afe_priv) 160 + return; 161 + 162 + for (i = 0; i < CLK_AUD_NR_CLK; i++) { 163 + cl = afe_priv->lookup[i]; 164 + if (!cl) 165 + continue; 166 + 167 + clk = cl->clk; 168 + clk_unregister_gate(clk); 169 + 170 + clkdev_drop(cl); 171 + } 172 + } 173 + 151 174 int mt8195_audsys_clk_register(struct mtk_base_afe *afe) 152 175 { 153 176 struct mt8195_afe_private *afe_priv = afe->platform_priv; ··· 211 188 afe_priv->lookup[i] = cl; 212 189 } 213 190 214 - return 0; 215 - } 216 - 217 - void mt8195_audsys_clk_unregister(struct mtk_base_afe *afe) 218 - { 219 - struct mt8195_afe_private *afe_priv = afe->platform_priv; 220 - struct clk *clk; 221 - struct clk_lookup *cl; 222 - int i; 223 - 224 - if (!afe_priv) 225 - return; 226 - 227 - for (i = 0; i < CLK_AUD_NR_CLK; i++) { 228 - cl = afe_priv->lookup[i]; 229 - if (!cl) 230 - continue; 231 - 232 - clk = cl->clk; 233 - clk_unregister_gate(clk); 234 - 235 - clkdev_drop(cl); 236 - } 191 + return devm_add_action_or_reset(afe->dev, mt8195_audsys_clk_unregister, afe); 237 192 }
-1
sound/soc/mediatek/mt8195/mt8195-audsys-clk.h
··· 10 10 #define _MT8195_AUDSYS_CLK_H_ 11 11 12 12 int mt8195_audsys_clk_register(struct mtk_base_afe *afe); 13 - void mt8195_audsys_clk_unregister(struct mtk_base_afe *afe); 14 13 15 14 #endif
+5 -5
tools/testing/selftests/alsa/pcm-test.c
··· 381 381 goto __close; 382 382 } 383 383 if (rrate != rate) { 384 - snprintf(msg, sizeof(msg), "rate mismatch %ld != %ld", rate, rrate); 384 + snprintf(msg, sizeof(msg), "rate mismatch %ld != %d", rate, rrate); 385 385 goto __close; 386 386 } 387 387 rperiod_size = period_size; ··· 447 447 frames = snd_pcm_writei(handle, samples, rate); 448 448 if (frames < 0) { 449 449 snprintf(msg, sizeof(msg), 450 - "Write failed: expected %d, wrote %li", rate, frames); 450 + "Write failed: expected %ld, wrote %li", rate, frames); 451 451 goto __close; 452 452 } 453 453 if (frames < rate) { 454 454 snprintf(msg, sizeof(msg), 455 - "expected %d, wrote %li", rate, frames); 455 + "expected %ld, wrote %li", rate, frames); 456 456 goto __close; 457 457 } 458 458 } else { 459 459 frames = snd_pcm_readi(handle, samples, rate); 460 460 if (frames < 0) { 461 461 snprintf(msg, sizeof(msg), 462 - "expected %d, wrote %li", rate, frames); 462 + "expected %ld, wrote %li", rate, frames); 463 463 goto __close; 464 464 } 465 465 if (frames < rate) { 466 466 snprintf(msg, sizeof(msg), 467 - "expected %d, wrote %li", rate, frames); 467 + "expected %ld, wrote %li", rate, frames); 468 468 goto __close; 469 469 } 470 470 }