Skip to content

Commit ce03e18

Browse files
committed
Merge tag 'sound-6.5-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "Slightly bigger than I wished, but here we go, a collection of fixes for 6.5. The only change in the core side is the ease for repeated ASoC error messages, and the rest are all pretty device-specific small fixes (including regression fixes) for ASoC Intel and HD-audio / USB-audio quirks" * tag 'sound-6.5-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: hda/realtek - Remodified 3k pull low procedure ASoC: rt1308-sdw: fix random louder sound ALSA: hda/cs8409: Support new Dell Dolphin Variants ALSA: hda/realtek: Switch Dell Oasis models to use SPI ALSA: hda/realtek: Add quirks for HP G11 Laptops ASoC: meson: axg-tdm-formatter: fix channel slot allocation ASoC: SOF: ipc4-topology: Update the basecfg for copier earlier ASoC: SOF: intel: hda: Clean up link DMA for IPC3 during stop ASoC: Intel: sof-sdw-cs42142: fix for codec button mapping ASoC: Intel: sof-sdw: update jack detection quirk for LunarLake RVP ASoC: SOF: Fix incorrect use of sizeof in sof_ipc3_do_rx_work() ASoC: lower "no backend DAIs enabled for ... Port" log severity ASoC: rt5665: add missed regulator_bulk_disable ASoC: max98363: don't return on success reading revision ID ALSA: usb-audio: Add support for Mythware XA001AU capture and playback interfaces. ASoC: fsl: micfil: Use dual license micfil code
2 parents 88d4a16 + 46cdff2 commit ce03e18

File tree

17 files changed

+125
-46
lines changed

17 files changed

+125
-46
lines changed

sound/pci/hda/patch_cs8409-tables.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,10 @@ const struct snd_pci_quirk cs8409_fixup_tbl[] = {
550550
SND_PCI_QUIRK(0x1028, 0x0C50, "Dolphin", CS8409_DOLPHIN),
551551
SND_PCI_QUIRK(0x1028, 0x0C51, "Dolphin", CS8409_DOLPHIN),
552552
SND_PCI_QUIRK(0x1028, 0x0C52, "Dolphin", CS8409_DOLPHIN),
553+
SND_PCI_QUIRK(0x1028, 0x0C73, "Dolphin", CS8409_DOLPHIN),
554+
SND_PCI_QUIRK(0x1028, 0x0C75, "Dolphin", CS8409_DOLPHIN),
555+
SND_PCI_QUIRK(0x1028, 0x0C7D, "Dolphin", CS8409_DOLPHIN),
556+
SND_PCI_QUIRK(0x1028, 0x0C7F, "Dolphin", CS8409_DOLPHIN),
553557
{} /* terminator */
554558
};
555559

sound/pci/hda/patch_realtek.c

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9422,11 +9422,10 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
94229422
SND_PCI_QUIRK(0x1028, 0x0cbd, "Dell Oasis 13 CS MTL-U", ALC245_FIXUP_CS35L41_SPI_2),
94239423
SND_PCI_QUIRK(0x1028, 0x0cbe, "Dell Oasis 13 2-IN-1 MTL-U", ALC245_FIXUP_CS35L41_SPI_2),
94249424
SND_PCI_QUIRK(0x1028, 0x0cbf, "Dell Oasis 13 Low Weight MTU-L", ALC245_FIXUP_CS35L41_SPI_2),
9425-
SND_PCI_QUIRK(0x1028, 0x0cc1, "Dell Oasis 14 MTL-H/U", ALC287_FIXUP_CS35L41_I2C_2),
9426-
SND_PCI_QUIRK(0x1028, 0x0cc2, "Dell Oasis 14 2-in-1 MTL-H/U", ALC287_FIXUP_CS35L41_I2C_2),
9427-
SND_PCI_QUIRK(0x1028, 0x0cc3, "Dell Oasis 14 Low Weight MTL-U", ALC287_FIXUP_CS35L41_I2C_2),
9428-
SND_PCI_QUIRK(0x1028, 0x0cc4, "Dell Oasis 16 MTL-H/U", ALC287_FIXUP_CS35L41_I2C_2),
9429-
SND_PCI_QUIRK(0x1028, 0x0cc5, "Dell Oasis MLK 14 RPL-P", ALC287_FIXUP_CS35L41_I2C_2),
9425+
SND_PCI_QUIRK(0x1028, 0x0cc1, "Dell Oasis 14 MTL-H/U", ALC245_FIXUP_CS35L41_SPI_2),
9426+
SND_PCI_QUIRK(0x1028, 0x0cc2, "Dell Oasis 14 2-in-1 MTL-H/U", ALC245_FIXUP_CS35L41_SPI_2),
9427+
SND_PCI_QUIRK(0x1028, 0x0cc3, "Dell Oasis 14 Low Weight MTL-U", ALC245_FIXUP_CS35L41_SPI_2),
9428+
SND_PCI_QUIRK(0x1028, 0x0cc4, "Dell Oasis 16 MTL-H/U", ALC245_FIXUP_CS35L41_SPI_2),
94309429
SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
94319430
SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE),
94329431
SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),
@@ -9617,7 +9616,13 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
96179616
SND_PCI_QUIRK(0x103c, 0x8b96, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
96189617
SND_PCI_QUIRK(0x103c, 0x8b97, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
96199618
SND_PCI_QUIRK(0x103c, 0x8bf0, "HP", ALC236_FIXUP_HP_GPIO_LED),
9620-
SND_PCI_QUIRK(0x103c, 0x8c26, "HP HP EliteBook 800G11", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
9619+
SND_PCI_QUIRK(0x103c, 0x8c46, "HP EliteBook 830 G11", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
9620+
SND_PCI_QUIRK(0x103c, 0x8c47, "HP EliteBook 840 G11", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
9621+
SND_PCI_QUIRK(0x103c, 0x8c48, "HP EliteBook 860 G11", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
9622+
SND_PCI_QUIRK(0x103c, 0x8c49, "HP Elite x360 830 2-in-1 G11", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
9623+
SND_PCI_QUIRK(0x103c, 0x8c70, "HP EliteBook 835 G11", ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED),
9624+
SND_PCI_QUIRK(0x103c, 0x8c71, "HP EliteBook 845 G11", ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED),
9625+
SND_PCI_QUIRK(0x103c, 0x8c72, "HP EliteBook 865 G11", ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED),
96219626
SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC),
96229627
SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300),
96239628
SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
@@ -10638,6 +10643,7 @@ static int patch_alc269(struct hda_codec *codec)
1063810643
spec = codec->spec;
1063910644
spec->gen.shared_mic_vref_pin = 0x18;
1064010645
codec->power_save_node = 0;
10646+
spec->en_3kpull_low = true;
1064110647

1064210648
#ifdef CONFIG_PM
1064310649
codec->patch_ops.suspend = alc269_suspend;
@@ -10720,14 +10726,16 @@ static int patch_alc269(struct hda_codec *codec)
1072010726
spec->shutup = alc256_shutup;
1072110727
spec->init_hook = alc256_init;
1072210728
spec->gen.mixer_nid = 0; /* ALC256 does not have any loopback mixer path */
10723-
if (codec->bus->pci->vendor == PCI_VENDOR_ID_AMD)
10724-
spec->en_3kpull_low = true;
10729+
if (codec->core.vendor_id == 0x10ec0236 &&
10730+
codec->bus->pci->vendor != PCI_VENDOR_ID_AMD)
10731+
spec->en_3kpull_low = false;
1072510732
break;
1072610733
case 0x10ec0257:
1072710734
spec->codec_variant = ALC269_TYPE_ALC257;
1072810735
spec->shutup = alc256_shutup;
1072910736
spec->init_hook = alc256_init;
1073010737
spec->gen.mixer_nid = 0;
10738+
spec->en_3kpull_low = false;
1073110739
break;
1073210740
case 0x10ec0215:
1073310741
case 0x10ec0245:

sound/soc/codecs/max98363.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -185,10 +185,10 @@ static int max98363_io_init(struct sdw_slave *slave)
185185
pm_runtime_get_noresume(dev);
186186

187187
ret = regmap_read(max98363->regmap, MAX98363_R21FF_REV_ID, &reg);
188-
if (!ret) {
188+
if (!ret)
189189
dev_info(dev, "Revision ID: %X\n", reg);
190-
return ret;
191-
}
190+
else
191+
goto out;
192192

193193
if (max98363->first_hw_init) {
194194
regcache_cache_bypass(max98363->regmap, false);
@@ -198,10 +198,11 @@ static int max98363_io_init(struct sdw_slave *slave)
198198
max98363->first_hw_init = true;
199199
max98363->hw_init = true;
200200

201+
out:
201202
pm_runtime_mark_last_busy(dev);
202203
pm_runtime_put_autosuspend(dev);
203204

204-
return 0;
205+
return ret;
205206
}
206207

207208
#define MAX98363_RATES SNDRV_PCM_RATE_8000_192000

sound/soc/codecs/rt1308-sdw.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ static bool rt1308_volatile_register(struct device *dev, unsigned int reg)
5252
case 0x300a:
5353
case 0xc000:
5454
case 0xc710:
55+
case 0xcf01:
5556
case 0xc860 ... 0xc863:
5657
case 0xc870 ... 0xc873:
5758
return true;
@@ -213,7 +214,7 @@ static int rt1308_io_init(struct device *dev, struct sdw_slave *slave)
213214
{
214215
struct rt1308_sdw_priv *rt1308 = dev_get_drvdata(dev);
215216
int ret = 0;
216-
unsigned int tmp;
217+
unsigned int tmp, hibernation_flag;
217218

218219
if (rt1308->hw_init)
219220
return 0;
@@ -242,6 +243,10 @@ static int rt1308_io_init(struct device *dev, struct sdw_slave *slave)
242243

243244
pm_runtime_get_noresume(&slave->dev);
244245

246+
regmap_read(rt1308->regmap, 0xcf01, &hibernation_flag);
247+
if ((hibernation_flag != 0x00) && rt1308->first_hw_init)
248+
goto _preset_ready_;
249+
245250
/* sw reset */
246251
regmap_write(rt1308->regmap, RT1308_SDW_RESET, 0);
247252

@@ -282,6 +287,12 @@ static int rt1308_io_init(struct device *dev, struct sdw_slave *slave)
282287
regmap_write(rt1308->regmap, 0xc100, 0xd7);
283288
regmap_write(rt1308->regmap, 0xc101, 0xd7);
284289

290+
/* apply BQ params */
291+
rt1308_apply_bq_params(rt1308);
292+
293+
regmap_write(rt1308->regmap, 0xcf01, 0x01);
294+
295+
_preset_ready_:
285296
if (rt1308->first_hw_init) {
286297
regcache_cache_bypass(rt1308->regmap, false);
287298
regcache_mark_dirty(rt1308->regmap);

sound/soc/codecs/rt5665.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4472,6 +4472,8 @@ static void rt5665_remove(struct snd_soc_component *component)
44724472
struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component);
44734473

44744474
regmap_write(rt5665->regmap, RT5665_RESET, 0);
4475+
4476+
regulator_bulk_disable(ARRAY_SIZE(rt5665->supplies), rt5665->supplies);
44754477
}
44764478

44774479
#ifdef CONFIG_PM

sound/soc/fsl/fsl_micfil.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// SPDX-License-Identifier: GPL-2.0
1+
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
22
// Copyright 2018 NXP
33

44
#include <linux/bitfield.h>
@@ -1254,4 +1254,4 @@ module_platform_driver(fsl_micfil_driver);
12541254

12551255
MODULE_AUTHOR("Cosmin-Gabriel Samoila <cosmin.samoila@nxp.com>");
12561256
MODULE_DESCRIPTION("NXP PDM Microphone Interface (MICFIL) driver");
1257-
MODULE_LICENSE("GPL v2");
1257+
MODULE_LICENSE("Dual BSD/GPL");

sound/soc/fsl/fsl_micfil.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* SPDX-License-Identifier: GPL-2.0 */
1+
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
22
/*
33
* PDM Microphone Interface for the NXP i.MX SoC
44
* Copyright 2018 NXP

sound/soc/intel/boards/sof_sdw.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ static const struct dmi_system_id sof_sdw_quirk_table[] = {
476476
DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
477477
DMI_MATCH(DMI_PRODUCT_NAME, "Lunar Lake Client Platform"),
478478
},
479-
.driver_data = (void *)(RT711_JD2_100K),
479+
.driver_data = (void *)(RT711_JD2),
480480
},
481481
{}
482482
};

sound/soc/intel/boards/sof_sdw_cs42l42.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ static int cs42l42_rtd_init(struct snd_soc_pcm_runtime *rtd)
9999
jack = &ctx->sdw_headset;
100100

101101
snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE);
102-
snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOICECOMMAND);
103-
snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEUP);
104-
snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOLUMEDOWN);
102+
snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP);
103+
snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN);
104+
snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND);
105105

106106
ret = snd_soc_component_set_jack(component, jack, NULL);
107107

sound/soc/meson/axg-tdm-formatter.c

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,27 +30,32 @@ int axg_tdm_formatter_set_channel_masks(struct regmap *map,
3030
struct axg_tdm_stream *ts,
3131
unsigned int offset)
3232
{
33-
unsigned int val, ch = ts->channels;
34-
unsigned long mask;
35-
int i, j;
33+
unsigned int ch = ts->channels;
34+
u32 val[AXG_TDM_NUM_LANES];
35+
int i, j, k;
36+
37+
/*
38+
* We need to mimick the slot distribution used by the HW to keep the
39+
* channel placement consistent regardless of the number of channel
40+
* in the stream. This is why the odd algorithm below is used.
41+
*/
42+
memset(val, 0, sizeof(*val) * AXG_TDM_NUM_LANES);
3643

3744
/*
3845
* Distribute the channels of the stream over the available slots
39-
* of each TDM lane
46+
* of each TDM lane. We need to go over the 32 slots ...
4047
*/
41-
for (i = 0; i < AXG_TDM_NUM_LANES; i++) {
42-
val = 0;
43-
mask = ts->mask[i];
44-
45-
for (j = find_first_bit(&mask, 32);
46-
(j < 32) && ch;
47-
j = find_next_bit(&mask, 32, j + 1)) {
48-
val |= 1 << j;
49-
ch -= 1;
48+
for (i = 0; (i < 32) && ch; i += 2) {
49+
/* ... of all the lanes ... */
50+
for (j = 0; j < AXG_TDM_NUM_LANES; j++) {
51+
/* ... then distribute the channels in pairs */
52+
for (k = 0; k < 2; k++) {
53+
if ((BIT(i + k) & ts->mask[j]) && ch) {
54+
val[j] |= BIT(i + k);
55+
ch -= 1;
56+
}
57+
}
5058
}
51-
52-
regmap_write(map, offset, val);
53-
offset += regmap_get_reg_stride(map);
5459
}
5560

5661
/*
@@ -63,6 +68,11 @@ int axg_tdm_formatter_set_channel_masks(struct regmap *map,
6368
return -EINVAL;
6469
}
6570

71+
for (i = 0; i < AXG_TDM_NUM_LANES; i++) {
72+
regmap_write(map, offset, val[i]);
73+
offset += regmap_get_reg_stride(map);
74+
}
75+
6676
return 0;
6777
}
6878
EXPORT_SYMBOL_GPL(axg_tdm_formatter_set_channel_masks);

0 commit comments

Comments
 (0)