Skip to content

Commit c3850b3

Browse files
committed
Merge tag 'sound-5.19-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "This became largish as it includes the pending ASoC fixes. Almost all changes are device-specific small fixes, while many of them are coverage for mixer issues that were detected by selftest. In addition, usual suspects for HD/USB-audio are there" * tag 'sound-5.19-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (43 commits) ALSA: cs46xx: Fix missing snd_card_free() call at probe error ALSA: usb-audio: Add quirk for Fiero SC-01 (fw v1.0.0) ALSA: usb-audio: Add quirk for Fiero SC-01 ALSA: hda/realtek: Add quirk for Clevo L140PU ALSA: usb-audio: Add quirks for MacroSilicon MS2100/MS2106 devices ASoC: madera: Fix event generation for rate controls ASoC: madera: Fix event generation for OUT1 demux ASoC: cs47l15: Fix event generation for low power mux control ASoC: cs35l41: Add ASP TX3/4 source to register patch ASoC: dapm: Initialise kcontrol data for mux/demux controls ASoC: rt711-sdca: fix kernel NULL pointer dereference when IO error ASoC: cs35l41: Correct some control names ASoC: wm5110: Fix DRE control ASoC: wm_adsp: Fix event for preloader MAINTAINERS: update ASoC Qualcomm maintainer email-id ASoC: rockchip: i2s: switch BCLK to GPIO ASoC: SOF: Intel: disable IMR boot when resuming from ACPI S4 and S5 states ASoC: SOF: pm: add definitions for S4 and S5 states ASoC: SOF: pm: add explicit behavior for ACPI S1 and S2 ASoC: SOF: Intel: hda: Fix compressed stream position tracking ...
2 parents e35e5b6 + c5e58c4 commit c3850b3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+812
-249
lines changed

MAINTAINERS

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9837,7 +9837,10 @@ INTEL ASoC DRIVERS
98379837
M: Cezary Rojewski <[email protected]>
98389838
M: Pierre-Louis Bossart <[email protected]>
98399839
M: Liam Girdwood <[email protected]>
9840-
M: Jie Yang <[email protected]>
9840+
M: Peter Ujfalusi <[email protected]>
9841+
M: Bard Liao <[email protected]>
9842+
M: Ranjani Sridharan <[email protected]>
9843+
M: Kai Vehmanen <[email protected]>
98419844
L: [email protected] (moderated for non-subscribers)
98429845
S: Supported
98439846
F: sound/soc/intel/
@@ -16311,7 +16314,7 @@ F: drivers/crypto/qat/
1631116314

1631216315
QCOM AUDIO (ASoC) DRIVERS
1631316316
M: Srinivas Kandagatla <[email protected]>
16314-
M: Banajit Goswami <bgoswami@codeaurora.org>
16317+
M: Banajit Goswami <bgoswami@quicinc.com>
1631516318
L: [email protected] (moderated for non-subscribers)
1631616319
S: Supported
1631716320
F: sound/soc/codecs/lpass-va-macro.c
@@ -18738,8 +18741,10 @@ F: sound/soc/
1873818741
SOUND - SOUND OPEN FIRMWARE (SOF) DRIVERS
1873918742
M: Pierre-Louis Bossart <[email protected]>
1874018743
M: Liam Girdwood <[email protected]>
18744+
M: Peter Ujfalusi <[email protected]>
18745+
M: Bard Liao <[email protected]>
1874118746
M: Ranjani Sridharan <[email protected]>
18742-
M: Kai Vehmanen <[email protected]>
18747+
R: Kai Vehmanen <[email protected]>
1874318748
M: Daniel Baluta <[email protected]>
1874418749
L: [email protected] (moderated for non-subscribers)
1874518750
S: Supported

include/sound/soc.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -408,8 +408,6 @@ struct snd_soc_jack_pin;
408408

409409
struct snd_soc_jack_gpio;
410410

411-
typedef int (*hw_write_t)(void *,const char* ,int);
412-
413411
enum snd_soc_pcm_subclass {
414412
SND_SOC_PCM_CLASS_PCM = 0,
415413
SND_SOC_PCM_CLASS_BE = 1,

sound/pci/cs46xx/cs46xx.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,36 +74,36 @@ static int snd_card_cs46xx_probe(struct pci_dev *pci,
7474
err = snd_cs46xx_create(card, pci,
7575
external_amp[dev], thinkpad[dev]);
7676
if (err < 0)
77-
return err;
77+
goto error;
7878
card->private_data = chip;
7979
chip->accept_valid = mmap_valid[dev];
8080
err = snd_cs46xx_pcm(chip, 0);
8181
if (err < 0)
82-
return err;
82+
goto error;
8383
#ifdef CONFIG_SND_CS46XX_NEW_DSP
8484
err = snd_cs46xx_pcm_rear(chip, 1);
8585
if (err < 0)
86-
return err;
86+
goto error;
8787
err = snd_cs46xx_pcm_iec958(chip, 2);
8888
if (err < 0)
89-
return err;
89+
goto error;
9090
#endif
9191
err = snd_cs46xx_mixer(chip, 2);
9292
if (err < 0)
93-
return err;
93+
goto error;
9494
#ifdef CONFIG_SND_CS46XX_NEW_DSP
9595
if (chip->nr_ac97_codecs ==2) {
9696
err = snd_cs46xx_pcm_center_lfe(chip, 3);
9797
if (err < 0)
98-
return err;
98+
goto error;
9999
}
100100
#endif
101101
err = snd_cs46xx_midi(chip, 0);
102102
if (err < 0)
103-
return err;
103+
goto error;
104104
err = snd_cs46xx_start_dsp(chip);
105105
if (err < 0)
106-
return err;
106+
goto error;
107107

108108
snd_cs46xx_gameport(chip);
109109

@@ -117,11 +117,15 @@ static int snd_card_cs46xx_probe(struct pci_dev *pci,
117117

118118
err = snd_card_register(card);
119119
if (err < 0)
120-
return err;
120+
goto error;
121121

122122
pci_set_drvdata(pci, card);
123123
dev++;
124124
return 0;
125+
126+
error:
127+
snd_card_free(card);
128+
return err;
125129
}
126130

127131
static struct pci_driver cs46xx_driver = {

sound/pci/hda/patch_realtek.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9212,6 +9212,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
92129212
SND_PCI_QUIRK(0x1558, 0x70f4, "Clevo NH77EPY", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
92139213
SND_PCI_QUIRK(0x1558, 0x70f6, "Clevo NH77DPQ-Y", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
92149214
SND_PCI_QUIRK(0x1558, 0x7716, "Clevo NS50PU", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
9215+
SND_PCI_QUIRK(0x1558, 0x7718, "Clevo L140PU", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
92159216
SND_PCI_QUIRK(0x1558, 0x8228, "Clevo NR40BU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
92169217
SND_PCI_QUIRK(0x1558, 0x8520, "Clevo NH50D[CD]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
92179218
SND_PCI_QUIRK(0x1558, 0x8521, "Clevo NH77D[CD]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),

sound/soc/codecs/ak4613.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -868,10 +868,12 @@ static void ak4613_parse_of(struct ak4613_priv *priv,
868868

869869
/*
870870
* connected STDI
871+
* TDM support is assuming it is probed via Audio-Graph-Card style here.
872+
* Default is SDTIx1 if it was probed via Simple-Audio-Card for now.
871873
*/
872874
sdti_num = of_graph_get_endpoint_count(np);
873-
if (WARN_ON((sdti_num > 3) || (sdti_num < 1)))
874-
return;
875+
if ((sdti_num >= SDTx_MAX) || (sdti_num < 1))
876+
sdti_num = 1;
875877

876878
AK4613_CONFIG_SDTI_set(priv, sdti_num);
877879
}

sound/soc/codecs/cs35l41-lib.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ static const struct reg_default cs35l41_reg[] = {
3737
{ CS35L41_DAC_PCM1_SRC, 0x00000008 },
3838
{ CS35L41_ASP_TX1_SRC, 0x00000018 },
3939
{ CS35L41_ASP_TX2_SRC, 0x00000019 },
40-
{ CS35L41_ASP_TX3_SRC, 0x00000020 },
41-
{ CS35L41_ASP_TX4_SRC, 0x00000021 },
40+
{ CS35L41_ASP_TX3_SRC, 0x00000000 },
41+
{ CS35L41_ASP_TX4_SRC, 0x00000000 },
4242
{ CS35L41_DSP1_RX1_SRC, 0x00000008 },
4343
{ CS35L41_DSP1_RX2_SRC, 0x00000009 },
4444
{ CS35L41_DSP1_RX3_SRC, 0x00000018 },
@@ -644,6 +644,8 @@ static const struct reg_sequence cs35l41_reva0_errata_patch[] = {
644644
{ CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
645645
{ CS35L41_PWR_CTRL2, 0x00000000 },
646646
{ CS35L41_AMP_GAIN_CTRL, 0x00000000 },
647+
{ CS35L41_ASP_TX3_SRC, 0x00000000 },
648+
{ CS35L41_ASP_TX4_SRC, 0x00000000 },
647649
};
648650

649651
static const struct reg_sequence cs35l41_revb0_errata_patch[] = {
@@ -655,6 +657,8 @@ static const struct reg_sequence cs35l41_revb0_errata_patch[] = {
655657
{ CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
656658
{ CS35L41_PWR_CTRL2, 0x00000000 },
657659
{ CS35L41_AMP_GAIN_CTRL, 0x00000000 },
660+
{ CS35L41_ASP_TX3_SRC, 0x00000000 },
661+
{ CS35L41_ASP_TX4_SRC, 0x00000000 },
658662
};
659663

660664
static const struct reg_sequence cs35l41_revb2_errata_patch[] = {
@@ -666,6 +670,8 @@ static const struct reg_sequence cs35l41_revb2_errata_patch[] = {
666670
{ CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
667671
{ CS35L41_PWR_CTRL2, 0x00000000 },
668672
{ CS35L41_AMP_GAIN_CTRL, 0x00000000 },
673+
{ CS35L41_ASP_TX3_SRC, 0x00000000 },
674+
{ CS35L41_ASP_TX4_SRC, 0x00000000 },
669675
};
670676

671677
static const struct reg_sequence cs35l41_fs_errata_patch[] = {

sound/soc/codecs/cs35l41.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -333,23 +333,23 @@ static const struct snd_kcontrol_new cs35l41_aud_controls[] = {
333333
SOC_SINGLE("HW Noise Gate Enable", CS35L41_NG_CFG, 8, 63, 0),
334334
SOC_SINGLE("HW Noise Gate Delay", CS35L41_NG_CFG, 4, 7, 0),
335335
SOC_SINGLE("HW Noise Gate Threshold", CS35L41_NG_CFG, 0, 7, 0),
336-
SOC_SINGLE("Aux Noise Gate CH1 Enable",
336+
SOC_SINGLE("Aux Noise Gate CH1 Switch",
337337
CS35L41_MIXER_NGATE_CH1_CFG, 16, 1, 0),
338338
SOC_SINGLE("Aux Noise Gate CH1 Entry Delay",
339339
CS35L41_MIXER_NGATE_CH1_CFG, 8, 15, 0),
340340
SOC_SINGLE("Aux Noise Gate CH1 Threshold",
341341
CS35L41_MIXER_NGATE_CH1_CFG, 0, 7, 0),
342342
SOC_SINGLE("Aux Noise Gate CH2 Entry Delay",
343343
CS35L41_MIXER_NGATE_CH2_CFG, 8, 15, 0),
344-
SOC_SINGLE("Aux Noise Gate CH2 Enable",
344+
SOC_SINGLE("Aux Noise Gate CH2 Switch",
345345
CS35L41_MIXER_NGATE_CH2_CFG, 16, 1, 0),
346346
SOC_SINGLE("Aux Noise Gate CH2 Threshold",
347347
CS35L41_MIXER_NGATE_CH2_CFG, 0, 7, 0),
348-
SOC_SINGLE("SCLK Force", CS35L41_SP_FORMAT, CS35L41_SCLK_FRC_SHIFT, 1, 0),
349-
SOC_SINGLE("LRCLK Force", CS35L41_SP_FORMAT, CS35L41_LRCLK_FRC_SHIFT, 1, 0),
350-
SOC_SINGLE("Invert Class D", CS35L41_AMP_DIG_VOL_CTRL,
348+
SOC_SINGLE("SCLK Force Switch", CS35L41_SP_FORMAT, CS35L41_SCLK_FRC_SHIFT, 1, 0),
349+
SOC_SINGLE("LRCLK Force Switch", CS35L41_SP_FORMAT, CS35L41_LRCLK_FRC_SHIFT, 1, 0),
350+
SOC_SINGLE("Invert Class D Switch", CS35L41_AMP_DIG_VOL_CTRL,
351351
CS35L41_AMP_INV_PCM_SHIFT, 1, 0),
352-
SOC_SINGLE("Amp Gain ZC", CS35L41_AMP_GAIN_CTRL,
352+
SOC_SINGLE("Amp Gain ZC Switch", CS35L41_AMP_GAIN_CTRL,
353353
CS35L41_AMP_GAIN_ZC_SHIFT, 1, 0),
354354
WM_ADSP2_PRELOAD_SWITCH("DSP1", 1),
355355
WM_ADSP_FW_CONTROL("DSP1", 0),

sound/soc/codecs/cs47l15.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ static int cs47l15_in1_adc_put(struct snd_kcontrol *kcontrol,
122122
snd_soc_kcontrol_component(kcontrol);
123123
struct cs47l15 *cs47l15 = snd_soc_component_get_drvdata(component);
124124

125+
if (!!ucontrol->value.integer.value[0] == cs47l15->in1_lp_mode)
126+
return 0;
127+
125128
switch (ucontrol->value.integer.value[0]) {
126129
case 0:
127130
/* Set IN1 to normal mode */
@@ -150,7 +153,7 @@ static int cs47l15_in1_adc_put(struct snd_kcontrol *kcontrol,
150153
break;
151154
}
152155

153-
return 0;
156+
return 1;
154157
}
155158

156159
static const struct snd_kcontrol_new cs47l15_snd_controls[] = {

sound/soc/codecs/madera.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,13 @@ int madera_out1_demux_put(struct snd_kcontrol *kcontrol,
618618
end:
619619
snd_soc_dapm_mutex_unlock(dapm);
620620

621-
return snd_soc_dapm_mux_update_power(dapm, kcontrol, mux, e, NULL);
621+
ret = snd_soc_dapm_mux_update_power(dapm, kcontrol, mux, e, NULL);
622+
if (ret < 0) {
623+
dev_err(madera->dev, "Failed to update demux power state: %d\n", ret);
624+
return ret;
625+
}
626+
627+
return change;
622628
}
623629
EXPORT_SYMBOL_GPL(madera_out1_demux_put);
624630

@@ -893,7 +899,7 @@ static int madera_adsp_rate_put(struct snd_kcontrol *kcontrol,
893899
struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
894900
const int adsp_num = e->shift_l;
895901
const unsigned int item = ucontrol->value.enumerated.item[0];
896-
int ret;
902+
int ret = 0;
897903

898904
if (item >= e->items)
899905
return -EINVAL;
@@ -910,10 +916,10 @@ static int madera_adsp_rate_put(struct snd_kcontrol *kcontrol,
910916
"Cannot change '%s' while in use by active audio paths\n",
911917
kcontrol->id.name);
912918
ret = -EBUSY;
913-
} else {
919+
} else if (priv->adsp_rate_cache[adsp_num] != e->values[item]) {
914920
/* Volatile register so defer until the codec is powered up */
915921
priv->adsp_rate_cache[adsp_num] = e->values[item];
916-
ret = 0;
922+
ret = 1;
917923
}
918924

919925
mutex_unlock(&priv->rate_lock);

sound/soc/codecs/max98373-sdw.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -862,6 +862,16 @@ static int max98373_sdw_probe(struct sdw_slave *slave,
862862
return max98373_init(slave, regmap);
863863
}
864864

865+
static int max98373_sdw_remove(struct sdw_slave *slave)
866+
{
867+
struct max98373_priv *max98373 = dev_get_drvdata(&slave->dev);
868+
869+
if (max98373->first_hw_init)
870+
pm_runtime_disable(&slave->dev);
871+
872+
return 0;
873+
}
874+
865875
#if defined(CONFIG_OF)
866876
static const struct of_device_id max98373_of_match[] = {
867877
{ .compatible = "maxim,max98373", },
@@ -893,7 +903,7 @@ static struct sdw_driver max98373_sdw_driver = {
893903
.pm = &max98373_pm,
894904
},
895905
.probe = max98373_sdw_probe,
896-
.remove = NULL,
906+
.remove = max98373_sdw_remove,
897907
.ops = &max98373_slave_ops,
898908
.id_table = max98373_id,
899909
};

0 commit comments

Comments
 (0)