Skip to content

Commit 58fdd84

Browse files
committed
Merge tag 'sound-6.18-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "A collection of small fixes. It became slightly bigger than usual due to timing issues (holidays, etc), but all changes are rather device-specific fixes, so not really worrisome. - ASoC Cirrus codec fixes for AMD - Various fixes for ASoC Intel AVS, Qualcomm, SoundWire, FSL, Mediatek, Renesas - A few HD-audio quirks, and USB-audio regression fixes for Presonus" * tag 'sound-6.18-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (24 commits) ALSA: hda/realtek: Enable mic on Vaio RPL ASoC: dt-bindings: pm4125-sdw: correct number of soundwire ports ASoC: renesas: rz-ssi: Use proper dma_buffer_pos after resume ASoC: soc_sdw_utils: remove cs42l43 component_name ASoC: fsl_sai: Fix sync error in consumer mode ASoC: Fix build for sdw_utils ALSA: hda/realtek: Fix mute led for HP Victus 15-fa1xxx (MB 8C2D) ASoC: rt721: fix prepare clock stop failed ALSA: usb-audio: don't log messages meant for 1810c when initializing 1824c ASoC: mediatek: Fix double pm_runtime_disable in remove functions ASoC: fsl_micfil: correct the endian format for DSD ASoC: fsl_sai: fix bit order for DSD format ASoC: Intel: avs: Use snd_codec format when initializing probe ASoC: Intel: avs: Disable periods-elapsed work when closing PCM ASoC: Intel: avs: Unprepare a stream when XRUN occurs ASoC: sdw_utils: add name_prefix for rt1321 part id ASoC: qdsp6: q6asm: do not sleep while atomic ASoC: Intel: soc-acpi-intel-ptl-match: Remove cs42l43 match from sdw link3 ASOC: max98090/91: fix for filter configuration: AHPF removed DMIC2_HPF added ASoC: amd: acp: Add ACP7.0 match entries for cs35l56 and cs42l43 ...
2 parents 3ad81aa + 390db60 commit 58fdd84

File tree

19 files changed

+236
-106
lines changed

19 files changed

+236
-106
lines changed

Documentation/devicetree/bindings/sound/qcom,pm4125-sdw.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ properties:
3232
3333
$ref: /schemas/types.yaml#/definitions/uint32-array
3434
minItems: 2
35-
maxItems: 2
35+
maxItems: 4
3636
items:
3737
enum: [1, 2, 3, 4]
3838

@@ -48,7 +48,7 @@ properties:
4848
4949
$ref: /schemas/types.yaml#/definitions/uint32-array
5050
minItems: 2
51-
maxItems: 2
51+
maxItems: 5
5252
items:
5353
enum: [1, 2, 3, 4, 5]
5454

sound/hda/codecs/realtek/alc269.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3736,6 +3736,7 @@ enum {
37363736
ALC285_FIXUP_ASUS_GA605K_I2C_SPEAKER2_TO_DAC1,
37373737
ALC269_FIXUP_POSITIVO_P15X_HEADSET_MIC,
37383738
ALC289_FIXUP_ASUS_ZEPHYRUS_DUAL_SPK,
3739+
ALC256_FIXUP_VAIO_RPL_MIC_NO_PRESENCE,
37393740
};
37403741

37413742
/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -6172,6 +6173,16 @@ static const struct hda_fixup alc269_fixups[] = {
61726173
{ 0x1e, 0x90170150 }, /* Internal Speaker */
61736174
{ }
61746175
},
6176+
},
6177+
[ALC256_FIXUP_VAIO_RPL_MIC_NO_PRESENCE] = {
6178+
.type = HDA_FIXUP_PINS,
6179+
.v.pins = (const struct hda_pintbl[]) {
6180+
{ 0x19, 0x03a1113c }, /* use as headset mic, without its own jack detect */
6181+
{ 0x1a, 0x22a190a0 }, /* dock mic */
6182+
{ }
6183+
},
6184+
.chained = true,
6185+
.chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
61756186
}
61766187
};
61776188

@@ -6578,6 +6589,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
65786589
SND_PCI_QUIRK(0x103c, 0x8c16, "HP Spectre x360 2-in-1 Laptop 16-aa0xxx", ALC245_FIXUP_HP_SPECTRE_X360_16_AA0XXX),
65796590
SND_PCI_QUIRK(0x103c, 0x8c17, "HP Spectre 16", ALC287_FIXUP_CS35L41_I2C_2),
65806591
SND_PCI_QUIRK(0x103c, 0x8c21, "HP Pavilion Plus Laptop 14-ey0XXX", ALC245_FIXUP_HP_X360_MUTE_LEDS),
6592+
SND_PCI_QUIRK(0x103c, 0x8c2d, "HP Victus 15-fa1xxx (MB 8C2D)", ALC245_FIXUP_HP_MUTE_LED_COEFBIT),
65816593
SND_PCI_QUIRK(0x103c, 0x8c30, "HP Victus 15-fb1xxx", ALC245_FIXUP_HP_MUTE_LED_COEFBIT),
65826594
SND_PCI_QUIRK(0x103c, 0x8c46, "HP EliteBook 830 G11", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
65836595
SND_PCI_QUIRK(0x103c, 0x8c47, "HP EliteBook 840 G11", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
@@ -6959,6 +6971,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
69596971
SND_PCI_QUIRK(0x1558, 0x971d, "Clevo N970T[CDF]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
69606972
SND_PCI_QUIRK(0x1558, 0xa500, "Clevo NL5[03]RU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
69616973
SND_PCI_QUIRK(0x1558, 0xa554, "VAIO VJFH52", ALC269_FIXUP_VAIO_VJFH52_MIC_NO_PRESENCE),
6974+
SND_PCI_QUIRK(0x1558, 0xa559, "VAIO RPL", ALC256_FIXUP_VAIO_RPL_MIC_NO_PRESENCE),
69626975
SND_PCI_QUIRK(0x1558, 0xa600, "Clevo NL50NU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
69636976
SND_PCI_QUIRK(0x1558, 0xa650, "Clevo NP[567]0SN[CD]", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
69646977
SND_PCI_QUIRK(0x1558, 0xa671, "Clevo NP70SN[CDE]", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
@@ -7080,6 +7093,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
70807093
SND_PCI_QUIRK(0x17aa, 0x38a9, "Thinkbook 16P", ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD),
70817094
SND_PCI_QUIRK(0x17aa, 0x38ab, "Thinkbook 16P", ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD),
70827095
SND_PCI_QUIRK(0x17aa, 0x38b4, "Legion Slim 7 16IRH8", ALC287_FIXUP_CS35L41_I2C_2),
7096+
HDA_CODEC_QUIRK(0x17aa, 0x391c, "Lenovo Yoga 7 2-in-1 14AKP10", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN),
70837097
SND_PCI_QUIRK(0x17aa, 0x38b5, "Legion Slim 7 16IRH8", ALC287_FIXUP_CS35L41_I2C_2),
70847098
SND_PCI_QUIRK(0x17aa, 0x38b6, "Legion Slim 7 16APH8", ALC287_FIXUP_CS35L41_I2C_2),
70857099
SND_PCI_QUIRK(0x17aa, 0x38b7, "Legion Slim 7 16APH8", ALC287_FIXUP_CS35L41_I2C_2),

sound/soc/amd/acp/amd-acp70-acpi-match.c

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,20 @@ static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
3030
.group_id = 1
3131
};
3232

33+
static const struct snd_soc_acpi_endpoint spk_2_endpoint = {
34+
.num = 0,
35+
.aggregated = 1,
36+
.group_position = 2,
37+
.group_id = 1
38+
};
39+
40+
static const struct snd_soc_acpi_endpoint spk_3_endpoint = {
41+
.num = 0,
42+
.aggregated = 1,
43+
.group_position = 3,
44+
.group_id = 1
45+
};
46+
3347
static const struct snd_soc_acpi_adr_device rt711_rt1316_group_adr[] = {
3448
{
3549
.adr = 0x000030025D071101ull,
@@ -112,6 +126,134 @@ static const struct snd_soc_acpi_adr_device rt1320_1_single_adr[] = {
112126
}
113127
};
114128

129+
static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = {
130+
{ /* Jack Playback Endpoint */
131+
.num = 0,
132+
.aggregated = 0,
133+
.group_position = 0,
134+
.group_id = 0,
135+
},
136+
{ /* DMIC Capture Endpoint */
137+
.num = 1,
138+
.aggregated = 0,
139+
.group_position = 0,
140+
.group_id = 0,
141+
},
142+
{ /* Jack Capture Endpoint */
143+
.num = 2,
144+
.aggregated = 0,
145+
.group_position = 0,
146+
.group_id = 0,
147+
},
148+
{ /* Speaker Playback Endpoint */
149+
.num = 3,
150+
.aggregated = 0,
151+
.group_position = 0,
152+
.group_id = 0,
153+
},
154+
};
155+
156+
static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = {
157+
{
158+
.adr = 0x00003001FA424301ull,
159+
.num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
160+
.endpoints = cs42l43_endpoints,
161+
.name_prefix = "cs42l43"
162+
}
163+
};
164+
165+
static const struct snd_soc_acpi_adr_device cs42l43_1_cs35l56x4_1_adr[] = {
166+
{
167+
.adr = 0x00013001FA424301ull,
168+
.num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
169+
.endpoints = cs42l43_endpoints,
170+
.name_prefix = "cs42l43"
171+
},
172+
{
173+
.adr = 0x00013001FA355601ull,
174+
.num_endpoints = 1,
175+
.endpoints = &spk_l_endpoint,
176+
.name_prefix = "AMP1"
177+
},
178+
{
179+
.adr = 0x00013101FA355601ull,
180+
.num_endpoints = 1,
181+
.endpoints = &spk_r_endpoint,
182+
.name_prefix = "AMP2"
183+
},
184+
{
185+
.adr = 0x00013201FA355601ull,
186+
.num_endpoints = 1,
187+
.endpoints = &spk_2_endpoint,
188+
.name_prefix = "AMP3"
189+
},
190+
{
191+
.adr = 0x00013301FA355601ull,
192+
.num_endpoints = 1,
193+
.endpoints = &spk_3_endpoint,
194+
.name_prefix = "AMP4"
195+
},
196+
};
197+
198+
static const struct snd_soc_acpi_adr_device cs35l56x4_1_adr[] = {
199+
{
200+
.adr = 0x00013301FA355601ull,
201+
.num_endpoints = 1,
202+
.endpoints = &spk_l_endpoint,
203+
.name_prefix = "AMP1"
204+
},
205+
{
206+
.adr = 0x00013201FA355601ull,
207+
.num_endpoints = 1,
208+
.endpoints = &spk_r_endpoint,
209+
.name_prefix = "AMP2"
210+
},
211+
{
212+
.adr = 0x00013101FA355601ull,
213+
.num_endpoints = 1,
214+
.endpoints = &spk_2_endpoint,
215+
.name_prefix = "AMP3"
216+
},
217+
{
218+
.adr = 0x00013001FA355601ull,
219+
.num_endpoints = 1,
220+
.endpoints = &spk_3_endpoint,
221+
.name_prefix = "AMP4"
222+
},
223+
};
224+
225+
static const struct snd_soc_acpi_link_adr acp70_cs42l43_l1_cs35l56x4_l1[] = {
226+
{
227+
.mask = BIT(1),
228+
.num_adr = ARRAY_SIZE(cs42l43_1_cs35l56x4_1_adr),
229+
.adr_d = cs42l43_1_cs35l56x4_1_adr,
230+
},
231+
{}
232+
};
233+
234+
static const struct snd_soc_acpi_link_adr acp70_cs42l43_l0_cs35l56x4_l1[] = {
235+
{
236+
.mask = BIT(0),
237+
.num_adr = ARRAY_SIZE(cs42l43_0_adr),
238+
.adr_d = cs42l43_0_adr,
239+
},
240+
{
241+
.mask = BIT(1),
242+
.num_adr = ARRAY_SIZE(cs35l56x4_1_adr),
243+
.adr_d = cs35l56x4_1_adr,
244+
},
245+
{}
246+
};
247+
248+
static const struct snd_soc_acpi_link_adr acp70_cs35l56x4_l1[] = {
249+
{
250+
.mask = BIT(1),
251+
.num_adr = ARRAY_SIZE(cs35l56x4_1_adr),
252+
.adr_d = cs35l56x4_1_adr,
253+
},
254+
{}
255+
};
256+
115257
static const struct snd_soc_acpi_link_adr acp70_rt722_only[] = {
116258
{
117259
.mask = BIT(0),
@@ -151,6 +293,21 @@ struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sdw_machines[] = {
151293
.links = acp70_4_in_1_sdca,
152294
.drv_name = "amd_sdw",
153295
},
296+
{
297+
.link_mask = BIT(0) | BIT(1),
298+
.links = acp70_cs42l43_l0_cs35l56x4_l1,
299+
.drv_name = "amd_sdw",
300+
},
301+
{
302+
.link_mask = BIT(1),
303+
.links = acp70_cs42l43_l1_cs35l56x4_l1,
304+
.drv_name = "amd_sdw",
305+
},
306+
{
307+
.link_mask = BIT(1),
308+
.links = acp70_cs35l56x4_l1,
309+
.drv_name = "amd_sdw",
310+
},
154311
{},
155312
};
156313
EXPORT_SYMBOL(snd_soc_acpi_amd_acp70_sdw_machines);

sound/soc/codecs/cs-amp-lib-test.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include <kunit/resource.h>
99
#include <kunit/test.h>
10+
#include <kunit/test-bug.h>
1011
#include <kunit/static_stub.h>
1112
#include <linux/device/faux.h>
1213
#include <linux/firmware/cirrus/cs_dsp.h>

sound/soc/codecs/cs530x.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -793,7 +793,7 @@ static int cs530x_set_sysclk(struct snd_soc_component *component, int clk_id,
793793
case CS530X_SYSCLK_SRC_PLL:
794794
break;
795795
default:
796-
dev_err(component->dev, "Invalid clock id %d\n", clk_id);
796+
dev_err(component->dev, "Invalid sysclk source: %d\n", source);
797797
return -EINVAL;
798798
}
799799

sound/soc/codecs/max98090.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1239,6 +1239,8 @@ static const struct snd_soc_dapm_widget max98091_dapm_widgets[] = {
12391239
SND_SOC_DAPM_SUPPLY("DMIC4_ENA", M98090_REG_DIGITAL_MIC_ENABLE,
12401240
M98090_DIGMIC4_SHIFT, 0, max98090_shdn_event,
12411241
SND_SOC_DAPM_POST_PMU),
1242+
SND_SOC_DAPM_SUPPLY("DMIC34_HPF", M98090_REG_FILTER_CONFIG,
1243+
M98090_FLT_DMIC34HPF_SHIFT, 0, NULL, 0),
12421244
};
12431245

12441246
static const struct snd_soc_dapm_route max98090_dapm_routes[] = {
@@ -1427,8 +1429,8 @@ static const struct snd_soc_dapm_route max98091_dapm_routes[] = {
14271429
/* DMIC inputs */
14281430
{"DMIC3", NULL, "DMIC3_ENA"},
14291431
{"DMIC4", NULL, "DMIC4_ENA"},
1430-
{"DMIC3", NULL, "AHPF"},
1431-
{"DMIC4", NULL, "AHPF"},
1432+
{"DMIC3", NULL, "DMIC34_HPF"},
1433+
{"DMIC4", NULL, "DMIC34_HPF"},
14321434
};
14331435

14341436
static int max98090_add_widgets(struct snd_soc_component *component)

sound/soc/codecs/rt721-sdca.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,10 @@ static void rt721_sdca_jack_preset(struct rt721_sdca_priv *rt721)
281281
rt_sdca_index_write(rt721->mbq_regmap, RT721_BOOST_CTRL,
282282
RT721_BST_4CH_TOP_GATING_CTRL1, 0x002a);
283283
regmap_write(rt721->regmap, 0x2f58, 0x07);
284+
285+
regmap_write(rt721->regmap, 0x2f51, 0x00);
286+
rt_sdca_index_write(rt721->mbq_regmap, RT721_HDA_SDCA_FLOAT,
287+
RT721_MISC_CTL, 0x0004);
284288
}
285289

286290
static void rt721_sdca_jack_init(struct rt721_sdca_priv *rt721)

sound/soc/codecs/rt721-sdca.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ struct rt721_sdca_dmic_kctrl_priv {
137137
#define RT721_HDA_LEGACY_UAJ_CTL 0x02
138138
#define RT721_HDA_LEGACY_CTL1 0x05
139139
#define RT721_HDA_LEGACY_RESET_CTL 0x06
140+
#define RT721_MISC_CTL 0x07
140141
#define RT721_XU_REL_CTRL 0x0c
141142
#define RT721_GE_REL_CTRL1 0x0d
142143
#define RT721_HDA_LEGACY_GPIO_WAKE_EN_CTL 0x0e

sound/soc/fsl/fsl_micfil.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ static struct fsl_micfil_soc_data fsl_micfil_imx943 = {
131131
.fifos = 8,
132132
.fifo_depth = 32,
133133
.dataline = 0xf,
134-
.formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_DSD_U32_BE,
134+
.formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_DSD_U32_LE,
135135
.use_edma = true,
136136
.use_verid = true,
137137
.volume_sx = false,
@@ -823,7 +823,7 @@ static int fsl_micfil_hw_params(struct snd_pcm_substream *substream,
823823
break;
824824
}
825825

826-
if (format == SNDRV_PCM_FORMAT_DSD_U32_BE) {
826+
if (format == SNDRV_PCM_FORMAT_DSD_U32_LE) {
827827
micfil->dec_bypass = true;
828828
/*
829829
* According to equation 29 in RM:

sound/soc/fsl/fsl_sai.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,6 @@ static int fsl_sai_set_dai_fmt_tr(struct snd_soc_dai *cpu_dai,
353353
break;
354354
case SND_SOC_DAIFMT_PDM:
355355
val_cr2 |= FSL_SAI_CR2_BCP;
356-
val_cr4 &= ~FSL_SAI_CR4_MF;
357356
sai->is_pdm_mode = true;
358357
break;
359358
case SND_SOC_DAIFMT_RIGHT_J:
@@ -638,7 +637,7 @@ static int fsl_sai_hw_params(struct snd_pcm_substream *substream,
638637
val_cr5 |= FSL_SAI_CR5_WNW(slot_width);
639638
val_cr5 |= FSL_SAI_CR5_W0W(slot_width);
640639

641-
if (sai->is_lsb_first || sai->is_pdm_mode)
640+
if (sai->is_lsb_first)
642641
val_cr5 |= FSL_SAI_CR5_FBT(0);
643642
else
644643
val_cr5 |= FSL_SAI_CR5_FBT(word_width - 1);
@@ -653,12 +652,12 @@ static int fsl_sai_hw_params(struct snd_pcm_substream *substream,
653652
val_cr4 |= FSL_SAI_CR4_CHMOD;
654653

655654
/*
656-
* For SAI provider mode, when Tx(Rx) sync with Rx(Tx) clock, Rx(Tx) will
657-
* generate bclk and frame clock for Tx(Rx), we should set RCR4(TCR4),
658-
* RCR5(TCR5) for playback(capture), or there will be sync error.
655+
* When Tx(Rx) sync with Rx(Tx) clock, Rx(Tx) will provide bclk and
656+
* frame clock for Tx(Rx). We should set RCR4(TCR4), RCR5(TCR5)
657+
* for playback(capture), or there will be sync error.
659658
*/
660659

661-
if (!sai->is_consumer_mode[tx] && fsl_sai_dir_is_synced(sai, adir)) {
660+
if (fsl_sai_dir_is_synced(sai, adir)) {
662661
regmap_update_bits(sai->regmap, FSL_SAI_xCR4(!tx, ofs),
663662
FSL_SAI_CR4_SYWD_MASK | FSL_SAI_CR4_FRSZ_MASK |
664663
FSL_SAI_CR4_CHMOD_MASK,

0 commit comments

Comments
 (0)