Skip to content

Commit e1d809b

Browse files
committed
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
2 parents ae4f52a + bce36aa commit e1d809b

File tree

18 files changed

+171
-51
lines changed

18 files changed

+171
-51
lines changed

sound/core/info.c

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ struct snd_info_private_data {
5656
};
5757

5858
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);
6060

6161
/*
6262
@@ -569,11 +569,16 @@ void snd_info_card_disconnect(struct snd_card *card)
569569
{
570570
if (!card)
571571
return;
572-
mutex_lock(&info_mutex);
572+
573573
proc_remove(card->proc_root_link);
574-
card->proc_root_link = NULL;
575574
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;
577582
mutex_unlock(&info_mutex);
578583
}
579584

@@ -745,15 +750,14 @@ struct snd_info_entry *snd_info_create_card_entry(struct snd_card *card,
745750
}
746751
EXPORT_SYMBOL(snd_info_create_card_entry);
747752

748-
static void snd_info_disconnect(struct snd_info_entry *entry)
753+
static void snd_info_clear_entries(struct snd_info_entry *entry)
749754
{
750755
struct snd_info_entry *p;
751756

752757
if (!entry->p)
753758
return;
754759
list_for_each_entry(p, &entry->children, list)
755-
snd_info_disconnect(p);
756-
proc_remove(entry->p);
760+
snd_info_clear_entries(p);
757761
entry->p = NULL;
758762
}
759763

@@ -770,8 +774,9 @@ void snd_info_free_entry(struct snd_info_entry * entry)
770774
if (!entry)
771775
return;
772776
if (entry->p) {
777+
proc_remove(entry->p);
773778
mutex_lock(&info_mutex);
774-
snd_info_disconnect(entry);
779+
snd_info_clear_entries(entry);
775780
mutex_unlock(&info_mutex);
776781
}
777782

sound/oss/dmasound/dmasound_paula.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -720,15 +720,14 @@ static int __init amiga_audio_probe(struct platform_device *pdev)
720720
return dmasound_init();
721721
}
722722

723-
static int __exit amiga_audio_remove(struct platform_device *pdev)
723+
static void __exit amiga_audio_remove(struct platform_device *pdev)
724724
{
725725
dmasound_deinit();
726-
return 0;
727726
}
728727

729728
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 = {
732731
.name = "amiga-audio",
733732
},
734733
};

sound/pci/hda/hda_intel.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2068,6 +2068,7 @@ static const struct pci_device_id driver_denylist[] = {
20682068
{ PCI_DEVICE_SUB(0x1022, 0x1487, 0x1043, 0x874f) }, /* ASUS ROG Zenith II / Strix */
20692069
{ PCI_DEVICE_SUB(0x1022, 0x1487, 0x1462, 0xcb59) }, /* MSI TRX40 Creator */
20702070
{ PCI_DEVICE_SUB(0x1022, 0x1487, 0x1462, 0xcb60) }, /* MSI TRX40 */
2071+
{ PCI_DEVICE_SUB(0x1022, 0x15e3, 0x1022, 0xd601) }, /* ASRock X670E Taichi */
20712072
{}
20722073
};
20732074

sound/pci/hda/patch_realtek.c

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7343,8 +7343,10 @@ enum {
73437343
ALC256_FIXUP_ASUS_MIC_NO_PRESENCE,
73447344
ALC299_FIXUP_PREDATOR_SPK,
73457345
ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE,
7346+
ALC289_FIXUP_DELL_SPK1,
73467347
ALC289_FIXUP_DELL_SPK2,
73477348
ALC289_FIXUP_DUAL_SPK,
7349+
ALC289_FIXUP_RTK_AMP_DUAL_SPK,
73487350
ALC294_FIXUP_SPK2_TO_DAC1,
73497351
ALC294_FIXUP_ASUS_DUAL_SPK,
73507352
ALC285_FIXUP_THINKPAD_X1_GEN7,
@@ -7444,6 +7446,8 @@ enum {
74447446
ALC287_FIXUP_THINKPAD_I2S_SPK,
74457447
ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD,
74467448
ALC2XX_FIXUP_HEADSET_MIC,
7449+
ALC289_FIXUP_DELL_CS35L41_SPI_2,
7450+
ALC294_FIXUP_CS35L41_I2C_2,
74477451
};
74487452

74497453
/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -8670,6 +8674,15 @@ static const struct hda_fixup alc269_fixups[] = {
86708674
.chained = true,
86718675
.chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE
86728676
},
8677+
[ALC289_FIXUP_DELL_SPK1] = {
8678+
.type = HDA_FIXUP_PINS,
8679+
.v.pins = (const struct hda_pintbl[]) {
8680+
{ 0x14, 0x90170140 },
8681+
{ }
8682+
},
8683+
.chained = true,
8684+
.chain_id = ALC269_FIXUP_DELL4_MIC_NO_PRESENCE
8685+
},
86738686
[ALC289_FIXUP_DELL_SPK2] = {
86748687
.type = HDA_FIXUP_PINS,
86758688
.v.pins = (const struct hda_pintbl[]) {
@@ -8685,6 +8698,12 @@ static const struct hda_fixup alc269_fixups[] = {
86858698
.chained = true,
86868699
.chain_id = ALC289_FIXUP_DELL_SPK2
86878700
},
8701+
[ALC289_FIXUP_RTK_AMP_DUAL_SPK] = {
8702+
.type = HDA_FIXUP_FUNC,
8703+
.v.func = alc285_fixup_speaker2_to_dac1,
8704+
.chained = true,
8705+
.chain_id = ALC289_FIXUP_DELL_SPK1
8706+
},
86888707
[ALC294_FIXUP_SPK2_TO_DAC1] = {
86898708
.type = HDA_FIXUP_FUNC,
86908709
.v.func = alc285_fixup_speaker2_to_dac1,
@@ -9552,6 +9571,16 @@ static const struct hda_fixup alc269_fixups[] = {
95529571
.type = HDA_FIXUP_FUNC,
95539572
.v.func = alc_fixup_headset_mic,
95549573
},
9574+
[ALC289_FIXUP_DELL_CS35L41_SPI_2] = {
9575+
.type = HDA_FIXUP_FUNC,
9576+
.v.func = cs35l41_fixup_spi_two,
9577+
.chained = true,
9578+
.chain_id = ALC289_FIXUP_DUAL_SPK
9579+
},
9580+
[ALC294_FIXUP_CS35L41_I2C_2] = {
9581+
.type = HDA_FIXUP_FUNC,
9582+
.v.func = cs35l41_fixup_i2c_two,
9583+
},
95559584
};
95569585

95579586
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -9662,13 +9691,15 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
96629691
SND_PCI_QUIRK(0x1028, 0x0c1c, "Dell Precision 3540", ALC236_FIXUP_DELL_DUAL_CODECS),
96639692
SND_PCI_QUIRK(0x1028, 0x0c1d, "Dell Precision 3440", ALC236_FIXUP_DELL_DUAL_CODECS),
96649693
SND_PCI_QUIRK(0x1028, 0x0c1e, "Dell Precision 3540", ALC236_FIXUP_DELL_DUAL_CODECS),
9665-
SND_PCI_QUIRK(0x1028, 0x0cbd, "Dell Oasis 13 CS MTL-U", ALC245_FIXUP_CS35L41_SPI_2),
9666-
SND_PCI_QUIRK(0x1028, 0x0cbe, "Dell Oasis 13 2-IN-1 MTL-U", ALC245_FIXUP_CS35L41_SPI_2),
9667-
SND_PCI_QUIRK(0x1028, 0x0cbf, "Dell Oasis 13 Low Weight MTU-L", ALC245_FIXUP_CS35L41_SPI_2),
9668-
SND_PCI_QUIRK(0x1028, 0x0cc1, "Dell Oasis 14 MTL-H/U", ALC245_FIXUP_CS35L41_SPI_2),
9669-
SND_PCI_QUIRK(0x1028, 0x0cc2, "Dell Oasis 14 2-in-1 MTL-H/U", ALC245_FIXUP_CS35L41_SPI_2),
9670-
SND_PCI_QUIRK(0x1028, 0x0cc3, "Dell Oasis 14 Low Weight MTL-U", ALC245_FIXUP_CS35L41_SPI_2),
9671-
SND_PCI_QUIRK(0x1028, 0x0cc4, "Dell Oasis 16 MTL-H/U", ALC245_FIXUP_CS35L41_SPI_2),
9694+
SND_PCI_QUIRK(0x1028, 0x0cbd, "Dell Oasis 13 CS MTL-U", ALC289_FIXUP_DELL_CS35L41_SPI_2),
9695+
SND_PCI_QUIRK(0x1028, 0x0cbe, "Dell Oasis 13 2-IN-1 MTL-U", ALC289_FIXUP_DELL_CS35L41_SPI_2),
9696+
SND_PCI_QUIRK(0x1028, 0x0cbf, "Dell Oasis 13 Low Weight MTU-L", ALC289_FIXUP_DELL_CS35L41_SPI_2),
9697+
SND_PCI_QUIRK(0x1028, 0x0cc0, "Dell Oasis 13", ALC289_FIXUP_RTK_AMP_DUAL_SPK),
9698+
SND_PCI_QUIRK(0x1028, 0x0cc1, "Dell Oasis 14 MTL-H/U", ALC289_FIXUP_DELL_CS35L41_SPI_2),
9699+
SND_PCI_QUIRK(0x1028, 0x0cc2, "Dell Oasis 14 2-in-1 MTL-H/U", ALC289_FIXUP_DELL_CS35L41_SPI_2),
9700+
SND_PCI_QUIRK(0x1028, 0x0cc3, "Dell Oasis 14 Low Weight MTL-U", ALC289_FIXUP_DELL_CS35L41_SPI_2),
9701+
SND_PCI_QUIRK(0x1028, 0x0cc4, "Dell Oasis 16 MTL-H/U", ALC289_FIXUP_DELL_CS35L41_SPI_2),
9702+
SND_PCI_QUIRK(0x1028, 0x0cc5, "Dell Oasis 14", ALC289_FIXUP_RTK_AMP_DUAL_SPK),
96729703
SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
96739704
SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
96749705
SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),
@@ -9913,6 +9944,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
99139944
SND_PCI_QUIRK(0x1043, 0x19e1, "ASUS UX581LV", ALC295_FIXUP_ASUS_MIC_NO_PRESENCE),
99149945
SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
99159946
SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC),
9947+
SND_PCI_QUIRK(0x1043, 0x1a83, "ASUS UM5302LA", ALC294_FIXUP_CS35L41_I2C_2),
99169948
SND_PCI_QUIRK(0x1043, 0x1a8f, "ASUS UX582ZS", ALC245_FIXUP_CS35L41_SPI_2),
99179949
SND_PCI_QUIRK(0x1043, 0x1b11, "ASUS UX431DA", ALC294_FIXUP_ASUS_COEF_1B),
99189950
SND_PCI_QUIRK(0x1043, 0x1b13, "Asus U41SV", ALC269_FIXUP_INV_DMIC),
@@ -9929,6 +9961,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
99299961
SND_PCI_QUIRK(0x1043, 0x1d4e, "ASUS TM420", ALC256_FIXUP_ASUS_HPE),
99309962
SND_PCI_QUIRK(0x1043, 0x1e02, "ASUS UX3402ZA", ALC245_FIXUP_CS35L41_SPI_2),
99319963
SND_PCI_QUIRK(0x1043, 0x16a3, "ASUS UX3402VA", ALC245_FIXUP_CS35L41_SPI_2),
9964+
SND_PCI_QUIRK(0x1043, 0x1f62, "ASUS UX7602ZM", ALC245_FIXUP_CS35L41_SPI_2),
99329965
SND_PCI_QUIRK(0x1043, 0x1e11, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA502),
99339966
SND_PCI_QUIRK(0x1043, 0x1e12, "ASUS UM3402", ALC287_FIXUP_CS35L41_I2C_2),
99349967
SND_PCI_QUIRK(0x1043, 0x1e51, "ASUS Zephyrus M15", ALC294_FIXUP_ASUS_GU502_PINS),

sound/soc/amd/acp/acp-i2s.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
#define DRV_NAME "acp_i2s_playcap"
2828
#define I2S_MASTER_MODE_ENABLE 1
29-
#define I2S_MODE_ENABLE 0
3029
#define LRCLK_DIV_FIELD GENMASK(10, 2)
3130
#define BCLK_DIV_FIELD GENMASK(23, 11)
3231
#define ACP63_LRCLK_DIV_FIELD GENMASK(12, 2)
@@ -56,7 +55,8 @@ static inline void acp_set_i2s_clk(struct acp_dev_data *adata, int dai_id)
5655
}
5756

5857
val = I2S_MASTER_MODE_ENABLE;
59-
val |= I2S_MODE_ENABLE & BIT(1);
58+
if (adata->tdm_mode)
59+
val |= BIT(1);
6060

6161
switch (chip->acp_rev) {
6262
case ACP63_DEV:

sound/soc/codecs/aw88395/aw88395.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ static const struct snd_kcontrol_new aw88395_controls[] = {
356356
aw88395_get_fade_in_time, aw88395_set_fade_in_time),
357357
SOC_SINGLE_EXT("Volume Ramp Down Step", 0, 0, FADE_TIME_MAX, FADE_TIME_MIN,
358358
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,
360360
aw88395_re_get, aw88395_re_set),
361361
AW88395_PROFILE_EXT("Profile Set", aw88395_profile_info,
362362
aw88395_profile_get, aw88395_profile_set),

sound/soc/codecs/aw88399.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ static int aw_dev_set_vcalb(struct aw88399 *aw88399)
438438
if (ret)
439439
return ret;
440440

441-
vsense_select = vsense_select & (~AW88399_VDSEL_MASK);
441+
vsense_select = vsense_value & (~AW88399_VDSEL_MASK);
442442

443443
ret = aw88399_dev_get_icalk(aw88399, &icalk);
444444
if (ret) {
@@ -486,8 +486,8 @@ static int aw_dev_update_cali_re(struct aw_cali_desc *cali_desc)
486486
u32 cali_re;
487487
int ret;
488488

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))
491491
return -EINVAL;
492492

493493
cali_re = AW88399_SHOW_RE_TO_DSP_RE((aw_dev->cali_desc.cali_re +
@@ -1710,7 +1710,7 @@ static const struct snd_kcontrol_new aw88399_controls[] = {
17101710
aw88399_get_fade_in_time, aw88399_set_fade_in_time),
17111711
SOC_SINGLE_EXT("Volume Ramp Down Step", 0, 0, FADE_TIME_MAX, FADE_TIME_MIN,
17121712
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,
17141714
aw88399_re_get, aw88399_re_set),
17151715
AW88399_PROFILE_EXT("AW88399 Profile Set", aw88399_profile_info,
17161716
aw88399_profile_get, aw88399_profile_set),

sound/soc/codecs/aw88399.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ enum {
522522

523523
enum {
524524
AW88399_DEV_VDSEL_DAC = 0,
525-
AW88399_DEV_VDSEL_VSENSE = 1,
525+
AW88399_DEV_VDSEL_VSENSE = 32,
526526
};
527527

528528
enum {

sound/soc/codecs/da7219-aad.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -927,10 +927,15 @@ void da7219_aad_suspend(struct snd_soc_component *component)
927927
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
928928
u8 micbias_ctrl;
929929

930+
disable_irq(da7219_aad->irq);
931+
930932
if (da7219_aad->jack) {
931933
/* Disable jack detection during suspend */
932934
snd_soc_component_update_bits(component, DA7219_ACCDET_CONFIG_1,
933935
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);
934939

935940
/*
936941
* If we have a 4-pole jack inserted, then micbias will be
@@ -947,8 +952,6 @@ void da7219_aad_suspend(struct snd_soc_component *component)
947952
}
948953
}
949954
}
950-
951-
synchronize_irq(da7219_aad->irq);
952955
}
953956

954957
void da7219_aad_resume(struct snd_soc_component *component)
@@ -971,6 +974,8 @@ void da7219_aad_resume(struct snd_soc_component *component)
971974
DA7219_ACCDET_EN_MASK,
972975
DA7219_ACCDET_EN_MASK);
973976
}
977+
978+
enable_irq(da7219_aad->irq);
974979
}
975980

976981

sound/soc/codecs/hdmi-codec.c

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -877,18 +877,13 @@ static int hdmi_codec_set_jack(struct snd_soc_component *component,
877877
void *data)
878878
{
879879
struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component);
880-
int ret = -ENOTSUPP;
881880

882881
if (hcp->hcd.ops->hook_plugged_cb) {
883882
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;
890884
}
891-
return ret;
885+
886+
return -ENOTSUPP;
892887
}
893888

894889
static int hdmi_dai_spdif_probe(struct snd_soc_dai *dai)
@@ -982,6 +977,21 @@ static int hdmi_of_xlate_dai_id(struct snd_soc_component *component,
982977
return ret;
983978
}
984979

980+
static int hdmi_probe(struct snd_soc_component *component)
981+
{
982+
struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component);
983+
int ret = 0;
984+
985+
if (hcp->hcd.ops->hook_plugged_cb) {
986+
ret = hcp->hcd.ops->hook_plugged_cb(component->dev->parent,
987+
hcp->hcd.data,
988+
plugged_cb,
989+
component->dev);
990+
}
991+
992+
return ret;
993+
}
994+
985995
static void hdmi_remove(struct snd_soc_component *component)
986996
{
987997
struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component);
@@ -992,6 +1002,7 @@ static void hdmi_remove(struct snd_soc_component *component)
9921002
}
9931003

9941004
static const struct snd_soc_component_driver hdmi_driver = {
1005+
.probe = hdmi_probe,
9951006
.remove = hdmi_remove,
9961007
.dapm_widgets = hdmi_widgets,
9971008
.num_dapm_widgets = ARRAY_SIZE(hdmi_widgets),

0 commit comments

Comments
 (0)