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

Pull sound fixes from Takashi Iwai:
"A collection of fixes for rc1.

The majority of changes are various ASoC driver-specific small fixes
and usual HD-audio quirks, while there are a couple of core changes: a
fix in ALSA core procfs code to avoid deadlocks at disconnection and
an ASoC core fix for DAPM clock widgets"

* tag 'sound-fix-6.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
OSS: dmasound/paula: Convert to platform remove callback returning void
ALSA: hda: ASUS UM5302LA: Added quirks for cs35L41/10431A83 on i2c bus
ALSA: info: Fix potential deadlock at disconnection
ASoC: nau8540: Add self recovery to improve capture quility
ALSA: hda/realtek: Add support dual speaker for Dell
ALSA: hda: Add ASRock X670E Taichi to denylist
ALSA: hda/realtek: Add quirk for ASUS UX7602ZM
ASoC: SOF: sof-client: trivial: fix comment typo
ASoC: dapm: fix clock get name
ASoC: hdmi-codec: register hpd callback on component probe
ASoC: mediatek: mt8186_mt6366_rt1019_rt5682s: trivial: fix error messages
ASoC: da7219: Improve system suspend and resume handling
ASoC: codecs: Modify macro value error
ASoC: codecs: Modify the wrong judgment of re value
ASoC: codecs: Modify the maximum value of calib
ASoC: amd: acp: fix for i2s mode register field update
ASoC: codecs: aw88399: Fix -Wuninitialized in aw_dev_set_vcalb()
ASoC: rt712-sdca: fix speaker route missing issue
ASoC: rockchip: Fix unused rockchip_i2s_tdm_match warning for !CONFIG_OF
ASoC: ti: omap-mcbsp: Fix runtime PM underflow warnings

+171 -51
+13 -8
sound/core/info.c
··· 56 56 }; 57 57 58 58 static int snd_info_version_init(void); 59 - static void snd_info_disconnect(struct snd_info_entry *entry); 59 + static void snd_info_clear_entries(struct snd_info_entry *entry); 60 60 61 61 /* 62 62 ··· 569 569 { 570 570 if (!card) 571 571 return; 572 - mutex_lock(&info_mutex); 572 + 573 573 proc_remove(card->proc_root_link); 574 - card->proc_root_link = NULL; 575 574 if (card->proc_root) 576 - snd_info_disconnect(card->proc_root); 575 + proc_remove(card->proc_root->p); 576 + 577 + mutex_lock(&info_mutex); 578 + if (card->proc_root) 579 + snd_info_clear_entries(card->proc_root); 580 + card->proc_root_link = NULL; 581 + card->proc_root = NULL; 577 582 mutex_unlock(&info_mutex); 578 583 } 579 584 ··· 750 745 } 751 746 EXPORT_SYMBOL(snd_info_create_card_entry); 752 747 753 - static void snd_info_disconnect(struct snd_info_entry *entry) 748 + static void snd_info_clear_entries(struct snd_info_entry *entry) 754 749 { 755 750 struct snd_info_entry *p; 756 751 757 752 if (!entry->p) 758 753 return; 759 754 list_for_each_entry(p, &entry->children, list) 760 - snd_info_disconnect(p); 761 - proc_remove(entry->p); 755 + snd_info_clear_entries(p); 762 756 entry->p = NULL; 763 757 } 764 758 ··· 774 770 if (!entry) 775 771 return; 776 772 if (entry->p) { 773 + proc_remove(entry->p); 777 774 mutex_lock(&info_mutex); 778 - snd_info_disconnect(entry); 775 + snd_info_clear_entries(entry); 779 776 mutex_unlock(&info_mutex); 780 777 } 781 778
+3 -4
sound/oss/dmasound/dmasound_paula.c
··· 720 720 return dmasound_init(); 721 721 } 722 722 723 - static int __exit amiga_audio_remove(struct platform_device *pdev) 723 + static void __exit amiga_audio_remove(struct platform_device *pdev) 724 724 { 725 725 dmasound_deinit(); 726 - return 0; 727 726 } 728 727 729 728 static struct platform_driver amiga_audio_driver = { 730 - .remove = __exit_p(amiga_audio_remove), 731 - .driver = { 729 + .remove_new = __exit_p(amiga_audio_remove), 730 + .driver = { 732 731 .name = "amiga-audio", 733 732 }, 734 733 };
+1
sound/pci/hda/hda_intel.c
··· 2068 2068 { PCI_DEVICE_SUB(0x1022, 0x1487, 0x1043, 0x874f) }, /* ASUS ROG Zenith II / Strix */ 2069 2069 { PCI_DEVICE_SUB(0x1022, 0x1487, 0x1462, 0xcb59) }, /* MSI TRX40 Creator */ 2070 2070 { PCI_DEVICE_SUB(0x1022, 0x1487, 0x1462, 0xcb60) }, /* MSI TRX40 */ 2071 + { PCI_DEVICE_SUB(0x1022, 0x15e3, 0x1022, 0xd601) }, /* ASRock X670E Taichi */ 2071 2072 {} 2072 2073 }; 2073 2074
+40 -7
sound/pci/hda/patch_realtek.c
··· 7343 7343 ALC256_FIXUP_ASUS_MIC_NO_PRESENCE, 7344 7344 ALC299_FIXUP_PREDATOR_SPK, 7345 7345 ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE, 7346 + ALC289_FIXUP_DELL_SPK1, 7346 7347 ALC289_FIXUP_DELL_SPK2, 7347 7348 ALC289_FIXUP_DUAL_SPK, 7349 + ALC289_FIXUP_RTK_AMP_DUAL_SPK, 7348 7350 ALC294_FIXUP_SPK2_TO_DAC1, 7349 7351 ALC294_FIXUP_ASUS_DUAL_SPK, 7350 7352 ALC285_FIXUP_THINKPAD_X1_GEN7, ··· 7446 7444 ALC287_FIXUP_THINKPAD_I2S_SPK, 7447 7445 ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD, 7448 7446 ALC2XX_FIXUP_HEADSET_MIC, 7447 + ALC289_FIXUP_DELL_CS35L41_SPI_2, 7448 + ALC294_FIXUP_CS35L41_I2C_2, 7449 7449 }; 7450 7450 7451 7451 /* A special fixup for Lenovo C940 and Yoga Duet 7; ··· 8674 8670 .chained = true, 8675 8671 .chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE 8676 8672 }, 8673 + [ALC289_FIXUP_DELL_SPK1] = { 8674 + .type = HDA_FIXUP_PINS, 8675 + .v.pins = (const struct hda_pintbl[]) { 8676 + { 0x14, 0x90170140 }, 8677 + { } 8678 + }, 8679 + .chained = true, 8680 + .chain_id = ALC269_FIXUP_DELL4_MIC_NO_PRESENCE 8681 + }, 8677 8682 [ALC289_FIXUP_DELL_SPK2] = { 8678 8683 .type = HDA_FIXUP_PINS, 8679 8684 .v.pins = (const struct hda_pintbl[]) { ··· 8697 8684 .v.func = alc285_fixup_speaker2_to_dac1, 8698 8685 .chained = true, 8699 8686 .chain_id = ALC289_FIXUP_DELL_SPK2 8687 + }, 8688 + [ALC289_FIXUP_RTK_AMP_DUAL_SPK] = { 8689 + .type = HDA_FIXUP_FUNC, 8690 + .v.func = alc285_fixup_speaker2_to_dac1, 8691 + .chained = true, 8692 + .chain_id = ALC289_FIXUP_DELL_SPK1 8700 8693 }, 8701 8694 [ALC294_FIXUP_SPK2_TO_DAC1] = { 8702 8695 .type = HDA_FIXUP_FUNC, ··· 9571 9552 .type = HDA_FIXUP_FUNC, 9572 9553 .v.func = alc_fixup_headset_mic, 9573 9554 }, 9555 + [ALC289_FIXUP_DELL_CS35L41_SPI_2] = { 9556 + .type = HDA_FIXUP_FUNC, 9557 + .v.func = cs35l41_fixup_spi_two, 9558 + .chained = true, 9559 + .chain_id = ALC289_FIXUP_DUAL_SPK 9560 + }, 9561 + [ALC294_FIXUP_CS35L41_I2C_2] = { 9562 + .type = HDA_FIXUP_FUNC, 9563 + .v.func = cs35l41_fixup_i2c_two, 9564 + }, 9574 9565 }; 9575 9566 9576 9567 static const struct snd_pci_quirk alc269_fixup_tbl[] = { ··· 9691 9662 SND_PCI_QUIRK(0x1028, 0x0c1c, "Dell Precision 3540", ALC236_FIXUP_DELL_DUAL_CODECS), 9692 9663 SND_PCI_QUIRK(0x1028, 0x0c1d, "Dell Precision 3440", ALC236_FIXUP_DELL_DUAL_CODECS), 9693 9664 SND_PCI_QUIRK(0x1028, 0x0c1e, "Dell Precision 3540", ALC236_FIXUP_DELL_DUAL_CODECS), 9694 - SND_PCI_QUIRK(0x1028, 0x0cbd, "Dell Oasis 13 CS MTL-U", ALC245_FIXUP_CS35L41_SPI_2), 9695 - SND_PCI_QUIRK(0x1028, 0x0cbe, "Dell Oasis 13 2-IN-1 MTL-U", ALC245_FIXUP_CS35L41_SPI_2), 9696 - SND_PCI_QUIRK(0x1028, 0x0cbf, "Dell Oasis 13 Low Weight MTU-L", ALC245_FIXUP_CS35L41_SPI_2), 9697 - SND_PCI_QUIRK(0x1028, 0x0cc1, "Dell Oasis 14 MTL-H/U", ALC245_FIXUP_CS35L41_SPI_2), 9698 - SND_PCI_QUIRK(0x1028, 0x0cc2, "Dell Oasis 14 2-in-1 MTL-H/U", ALC245_FIXUP_CS35L41_SPI_2), 9699 - SND_PCI_QUIRK(0x1028, 0x0cc3, "Dell Oasis 14 Low Weight MTL-U", ALC245_FIXUP_CS35L41_SPI_2), 9700 - SND_PCI_QUIRK(0x1028, 0x0cc4, "Dell Oasis 16 MTL-H/U", ALC245_FIXUP_CS35L41_SPI_2), 9665 + SND_PCI_QUIRK(0x1028, 0x0cbd, "Dell Oasis 13 CS MTL-U", ALC289_FIXUP_DELL_CS35L41_SPI_2), 9666 + SND_PCI_QUIRK(0x1028, 0x0cbe, "Dell Oasis 13 2-IN-1 MTL-U", ALC289_FIXUP_DELL_CS35L41_SPI_2), 9667 + SND_PCI_QUIRK(0x1028, 0x0cbf, "Dell Oasis 13 Low Weight MTU-L", ALC289_FIXUP_DELL_CS35L41_SPI_2), 9668 + SND_PCI_QUIRK(0x1028, 0x0cc0, "Dell Oasis 13", ALC289_FIXUP_RTK_AMP_DUAL_SPK), 9669 + SND_PCI_QUIRK(0x1028, 0x0cc1, "Dell Oasis 14 MTL-H/U", ALC289_FIXUP_DELL_CS35L41_SPI_2), 9670 + SND_PCI_QUIRK(0x1028, 0x0cc2, "Dell Oasis 14 2-in-1 MTL-H/U", ALC289_FIXUP_DELL_CS35L41_SPI_2), 9671 + SND_PCI_QUIRK(0x1028, 0x0cc3, "Dell Oasis 14 Low Weight MTL-U", ALC289_FIXUP_DELL_CS35L41_SPI_2), 9672 + SND_PCI_QUIRK(0x1028, 0x0cc4, "Dell Oasis 16 MTL-H/U", ALC289_FIXUP_DELL_CS35L41_SPI_2), 9673 + SND_PCI_QUIRK(0x1028, 0x0cc5, "Dell Oasis 14", ALC289_FIXUP_RTK_AMP_DUAL_SPK), 9701 9674 SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), 9702 9675 SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), 9703 9676 SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2), ··· 9944 9913 SND_PCI_QUIRK(0x1043, 0x19e1, "ASUS UX581LV", ALC295_FIXUP_ASUS_MIC_NO_PRESENCE), 9945 9914 SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), 9946 9915 SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC), 9916 + SND_PCI_QUIRK(0x1043, 0x1a83, "ASUS UM5302LA", ALC294_FIXUP_CS35L41_I2C_2), 9947 9917 SND_PCI_QUIRK(0x1043, 0x1a8f, "ASUS UX582ZS", ALC245_FIXUP_CS35L41_SPI_2), 9948 9918 SND_PCI_QUIRK(0x1043, 0x1b11, "ASUS UX431DA", ALC294_FIXUP_ASUS_COEF_1B), 9949 9919 SND_PCI_QUIRK(0x1043, 0x1b13, "Asus U41SV", ALC269_FIXUP_INV_DMIC), ··· 9961 9929 SND_PCI_QUIRK(0x1043, 0x1d4e, "ASUS TM420", ALC256_FIXUP_ASUS_HPE), 9962 9930 SND_PCI_QUIRK(0x1043, 0x1e02, "ASUS UX3402ZA", ALC245_FIXUP_CS35L41_SPI_2), 9963 9931 SND_PCI_QUIRK(0x1043, 0x16a3, "ASUS UX3402VA", ALC245_FIXUP_CS35L41_SPI_2), 9932 + SND_PCI_QUIRK(0x1043, 0x1f62, "ASUS UX7602ZM", ALC245_FIXUP_CS35L41_SPI_2), 9964 9933 SND_PCI_QUIRK(0x1043, 0x1e11, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA502), 9965 9934 SND_PCI_QUIRK(0x1043, 0x1e12, "ASUS UM3402", ALC287_FIXUP_CS35L41_I2C_2), 9966 9935 SND_PCI_QUIRK(0x1043, 0x1e51, "ASUS Zephyrus M15", ALC294_FIXUP_ASUS_GU502_PINS),
+2 -2
sound/soc/amd/acp/acp-i2s.c
··· 26 26 27 27 #define DRV_NAME "acp_i2s_playcap" 28 28 #define I2S_MASTER_MODE_ENABLE 1 29 - #define I2S_MODE_ENABLE 0 30 29 #define LRCLK_DIV_FIELD GENMASK(10, 2) 31 30 #define BCLK_DIV_FIELD GENMASK(23, 11) 32 31 #define ACP63_LRCLK_DIV_FIELD GENMASK(12, 2) ··· 55 56 } 56 57 57 58 val = I2S_MASTER_MODE_ENABLE; 58 - val |= I2S_MODE_ENABLE & BIT(1); 59 + if (adata->tdm_mode) 60 + val |= BIT(1); 59 61 60 62 switch (chip->acp_rev) { 61 63 case ACP63_DEV:
+1 -1
sound/soc/codecs/aw88395/aw88395.c
··· 356 356 aw88395_get_fade_in_time, aw88395_set_fade_in_time), 357 357 SOC_SINGLE_EXT("Volume Ramp Down Step", 0, 0, FADE_TIME_MAX, FADE_TIME_MIN, 358 358 aw88395_get_fade_out_time, aw88395_set_fade_out_time), 359 - SOC_SINGLE_EXT("Calib", 0, 0, 100, 0, 359 + SOC_SINGLE_EXT("Calib", 0, 0, AW88395_CALI_RE_MAX, 0, 360 360 aw88395_re_get, aw88395_re_set), 361 361 AW88395_PROFILE_EXT("Profile Set", aw88395_profile_info, 362 362 aw88395_profile_get, aw88395_profile_set),
+4 -4
sound/soc/codecs/aw88399.c
··· 438 438 if (ret) 439 439 return ret; 440 440 441 - vsense_select = vsense_select & (~AW88399_VDSEL_MASK); 441 + vsense_select = vsense_value & (~AW88399_VDSEL_MASK); 442 442 443 443 ret = aw88399_dev_get_icalk(aw88399, &icalk); 444 444 if (ret) { ··· 486 486 u32 cali_re; 487 487 int ret; 488 488 489 - if ((aw_dev->cali_desc.cali_re <= AW88399_CALI_RE_MAX) || 490 - (aw_dev->cali_desc.cali_re >= AW88399_CALI_RE_MIN)) 489 + if ((aw_dev->cali_desc.cali_re >= AW88399_CALI_RE_MAX) || 490 + (aw_dev->cali_desc.cali_re <= AW88399_CALI_RE_MIN)) 491 491 return -EINVAL; 492 492 493 493 cali_re = AW88399_SHOW_RE_TO_DSP_RE((aw_dev->cali_desc.cali_re + ··· 1710 1710 aw88399_get_fade_in_time, aw88399_set_fade_in_time), 1711 1711 SOC_SINGLE_EXT("Volume Ramp Down Step", 0, 0, FADE_TIME_MAX, FADE_TIME_MIN, 1712 1712 aw88399_get_fade_out_time, aw88399_set_fade_out_time), 1713 - SOC_SINGLE_EXT("Calib", 0, 0, 100, 0, 1713 + SOC_SINGLE_EXT("Calib", 0, 0, AW88399_CALI_RE_MAX, 0, 1714 1714 aw88399_re_get, aw88399_re_set), 1715 1715 AW88399_PROFILE_EXT("AW88399 Profile Set", aw88399_profile_info, 1716 1716 aw88399_profile_get, aw88399_profile_set),
+1 -1
sound/soc/codecs/aw88399.h
··· 522 522 523 523 enum { 524 524 AW88399_DEV_VDSEL_DAC = 0, 525 - AW88399_DEV_VDSEL_VSENSE = 1, 525 + AW88399_DEV_VDSEL_VSENSE = 32, 526 526 }; 527 527 528 528 enum {
+7 -2
sound/soc/codecs/da7219-aad.c
··· 927 927 struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); 928 928 u8 micbias_ctrl; 929 929 930 + disable_irq(da7219_aad->irq); 931 + 930 932 if (da7219_aad->jack) { 931 933 /* Disable jack detection during suspend */ 932 934 snd_soc_component_update_bits(component, DA7219_ACCDET_CONFIG_1, 933 935 DA7219_ACCDET_EN_MASK, 0); 936 + cancel_delayed_work_sync(&da7219_aad->jack_det_work); 937 + /* Disable ground switch */ 938 + snd_soc_component_update_bits(component, 0xFB, 0x01, 0x00); 934 939 935 940 /* 936 941 * If we have a 4-pole jack inserted, then micbias will be ··· 952 947 } 953 948 } 954 949 } 955 - 956 - synchronize_irq(da7219_aad->irq); 957 950 } 958 951 959 952 void da7219_aad_resume(struct snd_soc_component *component) ··· 974 971 DA7219_ACCDET_EN_MASK, 975 972 DA7219_ACCDET_EN_MASK); 976 973 } 974 + 975 + enable_irq(da7219_aad->irq); 977 976 } 978 977 979 978
+19 -8
sound/soc/codecs/hdmi-codec.c
··· 877 877 void *data) 878 878 { 879 879 struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component); 880 - int ret = -ENOTSUPP; 881 880 882 881 if (hcp->hcd.ops->hook_plugged_cb) { 883 882 hcp->jack = jack; 884 - ret = hcp->hcd.ops->hook_plugged_cb(component->dev->parent, 885 - hcp->hcd.data, 886 - plugged_cb, 887 - component->dev); 888 - if (ret) 889 - hcp->jack = NULL; 883 + return 0; 890 884 } 891 - return ret; 885 + 886 + return -ENOTSUPP; 892 887 } 893 888 894 889 static int hdmi_dai_spdif_probe(struct snd_soc_dai *dai) ··· 977 982 return ret; 978 983 } 979 984 985 + static int hdmi_probe(struct snd_soc_component *component) 986 + { 987 + struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component); 988 + int ret = 0; 989 + 990 + if (hcp->hcd.ops->hook_plugged_cb) { 991 + ret = hcp->hcd.ops->hook_plugged_cb(component->dev->parent, 992 + hcp->hcd.data, 993 + plugged_cb, 994 + component->dev); 995 + } 996 + 997 + return ret; 998 + } 999 + 980 1000 static void hdmi_remove(struct snd_soc_component *component) 981 1001 { 982 1002 struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component); ··· 1002 992 } 1003 993 1004 994 static const struct snd_soc_component_driver hdmi_driver = { 995 + .probe = hdmi_probe, 1005 996 .remove = hdmi_remove, 1006 997 .dapm_widgets = hdmi_widgets, 1007 998 .num_dapm_widgets = ARRAY_SIZE(hdmi_widgets),
+49
sound/soc/codecs/nau8540.c
··· 530 530 return 0; 531 531 } 532 532 533 + static int nau8540_dai_trigger(struct snd_pcm_substream *substream, 534 + int cmd, struct snd_soc_dai *dai) 535 + { 536 + struct snd_soc_component *component = dai->component; 537 + struct nau8540 *nau8540 = snd_soc_component_get_drvdata(component); 538 + struct regmap *regmap = nau8540->regmap; 539 + unsigned int val; 540 + int ret = 0; 541 + 542 + /* Reading the peak data to detect abnormal data in the ADC channel. 543 + * If abnormal data happens, the driver takes recovery actions to 544 + * refresh the ADC channel. 545 + */ 546 + switch (cmd) { 547 + case SNDRV_PCM_TRIGGER_START: 548 + regmap_update_bits(regmap, NAU8540_REG_CLOCK_CTRL, 549 + NAU8540_CLK_AGC_EN, NAU8540_CLK_AGC_EN); 550 + regmap_update_bits(regmap, NAU8540_REG_ALC_CONTROL_3, 551 + NAU8540_ALC_CH_ALL_EN, NAU8540_ALC_CH_ALL_EN); 552 + 553 + regmap_read(regmap, NAU8540_REG_PEAK_CH1, &val); 554 + dev_dbg(nau8540->dev, "1.ADC CH1 peak data %x", val); 555 + if (!val) { 556 + regmap_update_bits(regmap, NAU8540_REG_MUTE, 557 + NAU8540_PGA_CH_ALL_MUTE, NAU8540_PGA_CH_ALL_MUTE); 558 + regmap_update_bits(regmap, NAU8540_REG_MUTE, 559 + NAU8540_PGA_CH_ALL_MUTE, 0); 560 + regmap_write(regmap, NAU8540_REG_RST, 0x1); 561 + regmap_write(regmap, NAU8540_REG_RST, 0); 562 + regmap_read(regmap, NAU8540_REG_PEAK_CH1, &val); 563 + dev_dbg(nau8540->dev, "2.ADC CH1 peak data %x", val); 564 + if (!val) { 565 + dev_err(nau8540->dev, "Channel recovery failed!!"); 566 + ret = -EIO; 567 + } 568 + } 569 + regmap_update_bits(regmap, NAU8540_REG_CLOCK_CTRL, 570 + NAU8540_CLK_AGC_EN, 0); 571 + regmap_update_bits(regmap, NAU8540_REG_ALC_CONTROL_3, 572 + NAU8540_ALC_CH_ALL_EN, 0); 573 + break; 574 + 575 + default: 576 + break; 577 + } 578 + 579 + return ret; 580 + } 533 581 534 582 static const struct snd_soc_dai_ops nau8540_dai_ops = { 535 583 .startup = nau8540_dai_startup, 536 584 .hw_params = nau8540_hw_params, 537 585 .set_fmt = nau8540_set_fmt, 538 586 .set_tdm_slot = nau8540_set_tdm_slot, 587 + .trigger = nau8540_dai_trigger, 539 588 }; 540 589 541 590 #define NAU8540_RATES SNDRV_PCM_RATE_8000_48000
+15
sound/soc/codecs/nau8540.h
··· 85 85 86 86 /* CLOCK_CTRL (0x02) */ 87 87 #define NAU8540_CLK_ADC_EN (0x1 << 15) 88 + #define NAU8540_CLK_AGC_EN (0x1 << 3) 88 89 #define NAU8540_CLK_I2S_EN (0x1 << 1) 89 90 90 91 /* CLOCK_SRC (0x03) */ ··· 169 168 #define NAU8540_TDM_OFFSET_EN (0x1 << 14) 170 169 #define NAU8540_TDM_TX_MASK 0xf 171 170 171 + /* ALC_CONTROL_3 (0x22) */ 172 + #define NAU8540_ALC_CH1_EN (0x1 << 12) 173 + #define NAU8540_ALC_CH2_EN (0x1 << 13) 174 + #define NAU8540_ALC_CH3_EN (0x1 << 14) 175 + #define NAU8540_ALC_CH4_EN (0x1 << 15) 176 + #define NAU8540_ALC_CH_ALL_EN (0xf << 12) 177 + 172 178 /* ADC_SAMPLE_RATE (0x3A) */ 173 179 #define NAU8540_CH_SYNC (0x1 << 14) 174 180 #define NAU8540_ADC_OSR_MASK 0x3 ··· 188 180 #define NAU8540_VMID_EN (1 << 6) 189 181 #define NAU8540_VMID_SEL_SFT 4 190 182 #define NAU8540_VMID_SEL_MASK (0x3 << NAU8540_VMID_SEL_SFT) 183 + 184 + /* MUTE (0x61) */ 185 + #define NAU8540_PGA_CH1_MUTE 0x1 186 + #define NAU8540_PGA_CH2_MUTE 0x2 187 + #define NAU8540_PGA_CH3_MUTE 0x4 188 + #define NAU8540_PGA_CH4_MUTE 0x8 189 + #define NAU8540_PGA_CH_ALL_MUTE 0xf 191 190 192 191 /* MIC_BIAS (0x67) */ 193 192 #define NAU8540_PU_PRE (0x1 << 8)
+7 -7
sound/soc/codecs/rt712-sdca.c
··· 963 963 rt712_sdca_parse_dt(rt712, &rt712->slave->dev); 964 964 rt712->component = component; 965 965 966 - if (!rt712->first_hw_init) 967 - return 0; 968 - 969 - ret = pm_runtime_resume(component->dev); 970 - if (ret < 0 && ret != -EACCES) 971 - return ret; 972 - 973 966 /* add SPK route */ 974 967 if (rt712->hw_id != RT712_DEV_ID_713) { 975 968 snd_soc_add_component_controls(component, ··· 972 979 snd_soc_dapm_add_routes(dapm, 973 980 rt712_sdca_spk_dapm_routes, ARRAY_SIZE(rt712_sdca_spk_dapm_routes)); 974 981 } 982 + 983 + if (!rt712->first_hw_init) 984 + return 0; 985 + 986 + ret = pm_runtime_resume(component->dev); 987 + if (ret < 0 && ret != -EACCES) 988 + return ret; 975 989 976 990 return 0; 977 991 }
+2 -2
sound/soc/mediatek/mt8186/mt8186-mt6366-rt1019-rt5682s.c
··· 1216 1216 playback_codec = of_get_child_by_name(pdev->dev.of_node, "playback-codecs"); 1217 1217 if (!playback_codec) { 1218 1218 ret = -EINVAL; 1219 - dev_err_probe(&pdev->dev, ret, "Property 'speaker-codecs' missing or invalid\n"); 1219 + dev_err_probe(&pdev->dev, ret, "Property 'playback-codecs' missing or invalid\n"); 1220 1220 goto err_playback_codec; 1221 1221 } 1222 1222 ··· 1230 1230 for_each_card_prelinks(card, i, dai_link) { 1231 1231 ret = mt8186_mt6366_card_set_be_link(card, dai_link, playback_codec, "I2S3"); 1232 1232 if (ret) { 1233 - dev_err_probe(&pdev->dev, ret, "%s set speaker_codec fail\n", 1233 + dev_err_probe(&pdev->dev, ret, "%s set playback_codec fail\n", 1234 1234 dai_link->name); 1235 1235 goto err_probe; 1236 1236 }
+1 -1
sound/soc/rockchip/rockchip_i2s_tdm.c
··· 1757 1757 .remove_new = rockchip_i2s_tdm_remove, 1758 1758 .driver = { 1759 1759 .name = DRV_NAME, 1760 - .of_match_table = of_match_ptr(rockchip_i2s_tdm_match), 1760 + .of_match_table = rockchip_i2s_tdm_match, 1761 1761 .pm = &rockchip_i2s_tdm_pm_ops, 1762 1762 }, 1763 1763 };
+1 -1
sound/soc/soc-dapm.c
··· 3670 3670 dapm_pinctrl_event(w, NULL, SND_SOC_DAPM_POST_PMD); 3671 3671 break; 3672 3672 case snd_soc_dapm_clock_supply: 3673 - w->clk = devm_clk_get(dapm->dev, w->name); 3673 + w->clk = devm_clk_get(dapm->dev, widget->name); 3674 3674 if (IS_ERR(w->clk)) { 3675 3675 ret = PTR_ERR(w->clk); 3676 3676 goto request_failed;
+1 -1
sound/soc/sof/sof-client.c
··· 176 176 goto err_kernel_injector; 177 177 } 178 178 179 - /* Platform depndent client device registration */ 179 + /* Platform dependent client device registration */ 180 180 181 181 if (sof_ops(sdev) && sof_ops(sdev)->register_ipc_clients) 182 182 ret = sof_ops(sdev)->register_ipc_clients(sdev);
+4 -2
sound/soc/ti/omap-mcbsp.c
··· 73 73 return 0; 74 74 } 75 75 76 - pm_runtime_put_sync(mcbsp->dev); 76 + if (mcbsp->active) 77 + pm_runtime_put_sync(mcbsp->dev); 77 78 78 79 r = clk_set_parent(mcbsp->fclk, fck_src); 79 80 if (r) 80 81 dev_err(mcbsp->dev, "CLKS: could not clk_set_parent() to %s\n", 81 82 src); 82 83 83 - pm_runtime_get_sync(mcbsp->dev); 84 + if (mcbsp->active) 85 + pm_runtime_get_sync(mcbsp->dev); 84 86 85 87 clk_put(fck_src); 86 88