Skip to content

Commit a14e151

Browse files
committed
Merge tag 'sound-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "Just a few fixes: all small and device-specific (ASoC FSL, SOF, and HD-audio quirks), should be safe to apply at the last minute" * tag 'sound-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook ASoC: fsl_asrc_dma: fix potential null-ptr-deref ASoC: fsl_sai: Fix pins setting for i.MX8QM platform ALSA: hda/realtek: Remove specific patch for Dell Precision 3260 ASoC: max98373: change power down sequence for smart amp ASoC: SOF: pm: Tear down pipelines only if DSP was active ASoC: SOF: ipc4-topology: Clarify bind failure caused by missing fw_module
2 parents 5a43001 + 2ae147d commit a14e151

File tree

6 files changed

+25
-12
lines changed

6 files changed

+25
-12
lines changed

sound/pci/hda/patch_realtek.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9288,7 +9288,6 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
92889288
SND_PCI_QUIRK(0x1028, 0x0a62, "Dell Precision 5560", ALC289_FIXUP_DUAL_SPK),
92899289
SND_PCI_QUIRK(0x1028, 0x0a9d, "Dell Latitude 5430", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE),
92909290
SND_PCI_QUIRK(0x1028, 0x0a9e, "Dell Latitude 5430", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE),
9291-
SND_PCI_QUIRK(0x1028, 0x0ac9, "Dell Precision 3260", ALC283_FIXUP_CHROME_BOOK),
92929291
SND_PCI_QUIRK(0x1028, 0x0b19, "Dell XPS 15 9520", ALC289_FIXUP_DUAL_SPK),
92939292
SND_PCI_QUIRK(0x1028, 0x0b1a, "Dell Precision 5570", ALC289_FIXUP_DUAL_SPK),
92949293
SND_PCI_QUIRK(0x1028, 0x0b37, "Dell Inspiron 16 Plus 7620 2-in-1", ALC295_FIXUP_DELL_INSPIRON_TOP_SPEAKERS),
@@ -9469,6 +9468,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
94699468
SND_PCI_QUIRK(0x103c, 0x8b47, "HP", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
94709469
SND_PCI_QUIRK(0x103c, 0x8b5d, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
94719470
SND_PCI_QUIRK(0x103c, 0x8b5e, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
9471+
SND_PCI_QUIRK(0x103c, 0x8b65, "HP ProBook 455 15.6 inch G10 Notebook PC", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
94729472
SND_PCI_QUIRK(0x103c, 0x8b66, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
94739473
SND_PCI_QUIRK(0x103c, 0x8b7a, "HP", ALC236_FIXUP_HP_GPIO_LED),
94749474
SND_PCI_QUIRK(0x103c, 0x8b7d, "HP", ALC236_FIXUP_HP_GPIO_LED),

sound/soc/codecs/max98373.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ static int max98373_dac_event(struct snd_soc_dapm_widget *w,
3131
MAX98373_GLOBAL_EN_MASK, 1);
3232
usleep_range(30000, 31000);
3333
break;
34-
case SND_SOC_DAPM_POST_PMD:
34+
case SND_SOC_DAPM_PRE_PMD:
3535
regmap_update_bits(max98373->regmap,
3636
MAX98373_R20FF_GLOBAL_SHDN,
3737
MAX98373_GLOBAL_EN_MASK, 0);
@@ -64,7 +64,7 @@ static const struct snd_kcontrol_new max98373_spkfb_control =
6464
static const struct snd_soc_dapm_widget max98373_dapm_widgets[] = {
6565
SND_SOC_DAPM_DAC_E("Amp Enable", "HiFi Playback",
6666
MAX98373_R202B_PCM_RX_EN, 0, 0, max98373_dac_event,
67-
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
67+
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
6868
SND_SOC_DAPM_MUX("DAI Sel Mux", SND_SOC_NOPM, 0, 0,
6969
&max98373_dai_controls),
7070
SND_SOC_DAPM_OUTPUT("BE_OUT"),

sound/soc/fsl/fsl_asrc_dma.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,14 +209,19 @@ static int fsl_asrc_dma_hw_params(struct snd_soc_component *component,
209209
be_chan = soc_component_to_pcm(component_be)->chan[substream->stream];
210210
tmp_chan = be_chan;
211211
}
212-
if (!tmp_chan)
213-
tmp_chan = dma_request_slave_channel(dev_be, tx ? "tx" : "rx");
212+
if (!tmp_chan) {
213+
tmp_chan = dma_request_chan(dev_be, tx ? "tx" : "rx");
214+
if (IS_ERR(tmp_chan)) {
215+
dev_err(dev, "failed to request DMA channel for Back-End\n");
216+
return -EINVAL;
217+
}
218+
}
214219

215220
/*
216221
* An EDMA DEV_TO_DEV channel is fixed and bound with DMA event of each
217222
* peripheral, unlike SDMA channel that is allocated dynamically. So no
218223
* need to configure dma_request and dma_request2, but get dma_chan of
219-
* Back-End device directly via dma_request_slave_channel.
224+
* Back-End device directly via dma_request_chan.
220225
*/
221226
if (!asrc->use_edma) {
222227
/* Get DMA request of Back-End */

sound/soc/fsl/fsl_sai.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1546,7 +1546,7 @@ static const struct fsl_sai_soc_data fsl_sai_imx8qm_data = {
15461546
.use_imx_pcm = true,
15471547
.use_edma = true,
15481548
.fifo_depth = 64,
1549-
.pins = 1,
1549+
.pins = 4,
15501550
.reg_offset = 0,
15511551
.mclk0_is_mclk1 = false,
15521552
.flags = 0,

sound/soc/sof/ipc4-topology.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1806,10 +1806,12 @@ static int sof_ipc4_route_setup(struct snd_sof_dev *sdev, struct snd_sof_route *
18061806
int ret;
18071807

18081808
if (!src_fw_module || !sink_fw_module) {
1809-
/* The NULL module will print as "(efault)" */
1810-
dev_err(sdev->dev, "source %s or sink %s widget weren't set up properly\n",
1811-
src_fw_module->man4_module_entry.name,
1812-
sink_fw_module->man4_module_entry.name);
1809+
dev_err(sdev->dev,
1810+
"cannot bind %s -> %s, no firmware module for: %s%s\n",
1811+
src_widget->widget->name, sink_widget->widget->name,
1812+
src_fw_module ? "" : " source",
1813+
sink_fw_module ? "" : " sink");
1814+
18131815
return -ENODEV;
18141816
}
18151817

sound/soc/sof/pm.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ static int sof_suspend(struct device *dev, bool runtime_suspend)
183183
const struct sof_ipc_tplg_ops *tplg_ops = sof_ipc_get_ops(sdev, tplg);
184184
pm_message_t pm_state;
185185
u32 target_state = snd_sof_dsp_power_target(sdev);
186+
u32 old_state = sdev->dsp_power_state.state;
186187
int ret;
187188

188189
/* do nothing if dsp suspend callback is not set */
@@ -192,7 +193,12 @@ static int sof_suspend(struct device *dev, bool runtime_suspend)
192193
if (runtime_suspend && !sof_ops(sdev)->runtime_suspend)
193194
return 0;
194195

195-
if (tplg_ops && tplg_ops->tear_down_all_pipelines)
196+
/* we need to tear down pipelines only if the DSP hardware is
197+
* active, which happens for PCI devices. if the device is
198+
* suspended, it is brought back to full power and then
199+
* suspended again
200+
*/
201+
if (tplg_ops && tplg_ops->tear_down_all_pipelines && (old_state == SOF_DSP_PM_D0))
196202
tplg_ops->tear_down_all_pipelines(sdev, false);
197203

198204
if (sdev->fw_state != SOF_FW_BOOT_COMPLETE)

0 commit comments

Comments
 (0)