Skip to content

Commit 6b571e2

Browse files
committed
Merge tag 'sound-fix2-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull more sound fixes from Takashi Iwai: "The remaining fixes for 6.9-rc1 that have been gathered in this week. More about ASoC at this time (one long-standing fix for compress offload, SOF, AMD ACP, Rockchip, Cirrus and tlv320 stuff) while another regression fix in ALSA core and a couple of HD-audio quirks as usual are included" * tag 'sound-fix2-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: control: Fix unannotated kfree() cleanup ALSA: hda/realtek: Add quirks for some Clevo laptops ALSA: hda/realtek: Add quirk for HP Spectre x360 14 eu0000 ALSA: hda/realtek: fix the hp playback volume issue for LG machines ASoC: soc-compress: Fix and add DPCM locking ASoC: SOF: amd: Skip IRAM/DRAM size modification for Steam Deck OLED ASoC: SOF: amd: Move signed_fw_image to struct acp_quirk_entry ASoC: amd: yc: Revert "add new YC platform variant (0x63) support" ASoC: amd: yc: Revert "Fix non-functional mic on Lenovo 21J2" ASoC: soc-core.c: Skip dummy codec when adding platforms ASoC: rockchip: i2s-tdm: Fix inaccurate sampling rates ASoC: dt-bindings: cirrus,cs42l43: Fix 'gpio-ranges' schema ASoC: amd: yc: Fix non-functional mic on ASUS M7600RE ASoC: tlv320adc3xxx: Don't strip remove function when driver is builtin
2 parents 5ee2433 + 9f23478 commit 6b571e2

File tree

13 files changed

+138
-391
lines changed

13 files changed

+138
-391
lines changed

Documentation/devicetree/bindings/sound/cirrus,cs42l43.yaml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -185,11 +185,12 @@ properties:
185185

186186
gpio-ranges:
187187
items:
188-
- description: A phandle to the CODEC pinctrl node
189-
minimum: 0
190-
- const: 0
191-
- const: 0
192-
- const: 3
188+
- items:
189+
- description: A phandle to the CODEC pinctrl node
190+
minimum: 0
191+
- const: 0
192+
- const: 0
193+
- const: 3
193194

194195
patternProperties:
195196
"-state$":

sound/core/control.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1275,12 +1275,12 @@ static int snd_ctl_elem_read(struct snd_card *card,
12751275
static int snd_ctl_elem_read_user(struct snd_card *card,
12761276
struct snd_ctl_elem_value __user *_control)
12771277
{
1278-
struct snd_ctl_elem_value *control;
1278+
struct snd_ctl_elem_value *control __free(kfree) = NULL;
12791279
int result;
12801280

12811281
control = memdup_user(_control, sizeof(*control));
12821282
if (IS_ERR(control))
1283-
return PTR_ERR(control);
1283+
return PTR_ERR(no_free_ptr(control));
12841284

12851285
result = snd_ctl_elem_read(card, control);
12861286
if (result < 0)

sound/pci/hda/patch_realtek.c

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2645,6 +2645,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
26452645
SND_PCI_QUIRK(0x1558, 0x65f1, "Clevo PC50HS", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
26462646
SND_PCI_QUIRK(0x1558, 0x65f5, "Clevo PD50PN[NRT]", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
26472647
SND_PCI_QUIRK(0x1558, 0x66a2, "Clevo PE60RNE", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
2648+
SND_PCI_QUIRK(0x1558, 0x66a6, "Clevo PE60SN[CDE]-[GS]", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
26482649
SND_PCI_QUIRK(0x1558, 0x67d1, "Clevo PB71[ER][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
26492650
SND_PCI_QUIRK(0x1558, 0x67e1, "Clevo PB71[DE][CDF]", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
26502651
SND_PCI_QUIRK(0x1558, 0x67e5, "Clevo PC70D[PRS](?:-D|-G)?", ALC1220_FIXUP_CLEVO_PB51ED_PINS),
@@ -6964,6 +6965,25 @@ static void alc256_fixup_mic_no_presence_and_resume(struct hda_codec *codec,
69646965
}
69656966
}
69666967

6968+
static void alc256_decrease_headphone_amp_val(struct hda_codec *codec,
6969+
const struct hda_fixup *fix, int action)
6970+
{
6971+
u32 caps;
6972+
u8 nsteps, offs;
6973+
6974+
if (action != HDA_FIXUP_ACT_PRE_PROBE)
6975+
return;
6976+
6977+
caps = query_amp_caps(codec, 0x3, HDA_OUTPUT);
6978+
nsteps = ((caps & AC_AMPCAP_NUM_STEPS) >> AC_AMPCAP_NUM_STEPS_SHIFT) - 10;
6979+
offs = ((caps & AC_AMPCAP_OFFSET) >> AC_AMPCAP_OFFSET_SHIFT) - 10;
6980+
caps &= ~AC_AMPCAP_NUM_STEPS & ~AC_AMPCAP_OFFSET;
6981+
caps |= (nsteps << AC_AMPCAP_NUM_STEPS_SHIFT) | (offs << AC_AMPCAP_OFFSET_SHIFT);
6982+
6983+
if (snd_hda_override_amp_caps(codec, 0x3, HDA_OUTPUT, caps))
6984+
codec_warn(codec, "failed to override amp caps for NID 0x3\n");
6985+
}
6986+
69676987
static void alc_fixup_dell4_mic_no_presence_quiet(struct hda_codec *codec,
69686988
const struct hda_fixup *fix,
69696989
int action)
@@ -7104,6 +7124,38 @@ static void alc_fixup_headset_mic(struct hda_codec *codec,
71047124
}
71057125
}
71067126

7127+
static void alc245_fixup_hp_spectre_x360_eu0xxx(struct hda_codec *codec,
7128+
const struct hda_fixup *fix, int action)
7129+
{
7130+
/*
7131+
* The Pin Complex 0x14 for the treble speakers is wrongly reported as
7132+
* unconnected.
7133+
* The Pin Complex 0x17 for the bass speakers has the lowest association
7134+
* and sequence values so shift it up a bit to squeeze 0x14 in.
7135+
*/
7136+
static const struct hda_pintbl pincfgs[] = {
7137+
{ 0x14, 0x90170110 }, // top/treble
7138+
{ 0x17, 0x90170111 }, // bottom/bass
7139+
{ }
7140+
};
7141+
7142+
/*
7143+
* Force DAC 0x02 for the bass speakers 0x17.
7144+
*/
7145+
static const hda_nid_t conn[] = { 0x02 };
7146+
7147+
switch (action) {
7148+
case HDA_FIXUP_ACT_PRE_PROBE:
7149+
snd_hda_apply_pincfgs(codec, pincfgs);
7150+
snd_hda_override_conn_list(codec, 0x17, ARRAY_SIZE(conn), conn);
7151+
break;
7152+
}
7153+
7154+
cs35l41_fixup_i2c_two(codec, fix, action);
7155+
alc245_fixup_hp_mute_led_coefbit(codec, fix, action);
7156+
alc245_fixup_hp_gpio_led(codec, fix, action);
7157+
}
7158+
71077159

71087160
enum {
71097161
ALC269_FIXUP_GPIO2,
@@ -7382,6 +7434,8 @@ enum {
73827434
ALC294_FIXUP_CS35L41_I2C_2,
73837435
ALC245_FIXUP_CS35L56_SPI_4_HP_GPIO_LED,
73847436
ALC256_FIXUP_ACER_SFG16_MICMUTE_LED,
7437+
ALC256_FIXUP_HEADPHONE_AMP_VOL,
7438+
ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX,
73857439
};
73867440

73877441
/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -9581,6 +9635,14 @@ static const struct hda_fixup alc269_fixups[] = {
95819635
.type = HDA_FIXUP_FUNC,
95829636
.v.func = alc256_fixup_acer_sfg16_micmute_led,
95839637
},
9638+
[ALC256_FIXUP_HEADPHONE_AMP_VOL] = {
9639+
.type = HDA_FIXUP_FUNC,
9640+
.v.func = alc256_decrease_headphone_amp_val,
9641+
},
9642+
[ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX] = {
9643+
.type = HDA_FIXUP_FUNC,
9644+
.v.func = alc245_fixup_hp_spectre_x360_eu0xxx,
9645+
},
95849646
};
95859647

95869648
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -9944,7 +10006,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
994410006
SND_PCI_QUIRK(0x103c, 0x8be8, "HP Envy 17", ALC287_FIXUP_CS35L41_I2C_2),
994510007
SND_PCI_QUIRK(0x103c, 0x8be9, "HP Envy 15", ALC287_FIXUP_CS35L41_I2C_2),
994610008
SND_PCI_QUIRK(0x103c, 0x8bf0, "HP", ALC236_FIXUP_HP_GPIO_LED),
9947-
SND_PCI_QUIRK(0x103c, 0x8c15, "HP Spectre 14", ALC287_FIXUP_CS35L41_I2C_2),
10009+
SND_PCI_QUIRK(0x103c, 0x8c15, "HP Spectre x360 2-in-1 Laptop 14-eu0xxx", ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX),
994810010
SND_PCI_QUIRK(0x103c, 0x8c16, "HP Spectre 16", ALC287_FIXUP_CS35L41_I2C_2),
994910011
SND_PCI_QUIRK(0x103c, 0x8c17, "HP Spectre 16", ALC287_FIXUP_CS35L41_I2C_2),
995010012
SND_PCI_QUIRK(0x103c, 0x8c46, "HP EliteBook 830 G11", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
@@ -10115,12 +10177,14 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1011510177
SND_PCI_QUIRK(0x1462, 0xb120, "MSI Cubi MS-B120", ALC283_FIXUP_HEADSET_MIC),
1011610178
SND_PCI_QUIRK(0x1462, 0xb171, "Cubi N 8GL (MS-B171)", ALC283_FIXUP_HEADSET_MIC),
1011710179
SND_PCI_QUIRK(0x152d, 0x1082, "Quanta NL3", ALC269_FIXUP_LIFEBOOK),
10180+
SND_PCI_QUIRK(0x1558, 0x0353, "Clevo V35[05]SN[CDE]Q", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
1011810181
SND_PCI_QUIRK(0x1558, 0x1323, "Clevo N130ZU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
1011910182
SND_PCI_QUIRK(0x1558, 0x1325, "Clevo N15[01][CW]U", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
1012010183
SND_PCI_QUIRK(0x1558, 0x1401, "Clevo L140[CZ]U", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
1012110184
SND_PCI_QUIRK(0x1558, 0x1403, "Clevo N140CU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
1012210185
SND_PCI_QUIRK(0x1558, 0x1404, "Clevo N150CU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
1012310186
SND_PCI_QUIRK(0x1558, 0x14a1, "Clevo L141MU", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
10187+
SND_PCI_QUIRK(0x1558, 0x2624, "Clevo L240TU", ALC256_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
1012410188
SND_PCI_QUIRK(0x1558, 0x4018, "Clevo NV40M[BE]", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
1012510189
SND_PCI_QUIRK(0x1558, 0x4019, "Clevo NV40MZ", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
1012610190
SND_PCI_QUIRK(0x1558, 0x4020, "Clevo NV40MB", ALC293_FIXUP_SYSTEM76_MIC_NO_PRESENCE),
@@ -10319,6 +10383,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1031910383
SND_PCI_QUIRK(0x17aa, 0x9e56, "Lenovo ZhaoYang CF4620Z", ALC286_FIXUP_SONY_MIC_NO_PRESENCE),
1032010384
SND_PCI_QUIRK(0x1849, 0x1233, "ASRock NUC Box 1100", ALC233_FIXUP_NO_AUDIO_JACK),
1032110385
SND_PCI_QUIRK(0x1849, 0xa233, "Positivo Master C6300", ALC269_FIXUP_HEADSET_MIC),
10386+
SND_PCI_QUIRK(0x1854, 0x0440, "LG CQ6", ALC256_FIXUP_HEADPHONE_AMP_VOL),
10387+
SND_PCI_QUIRK(0x1854, 0x0441, "LG CQ6 AIO", ALC256_FIXUP_HEADPHONE_AMP_VOL),
1032210388
SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS),
1032310389
SND_PCI_QUIRK(0x19e5, 0x320f, "Huawei WRT-WX9 ", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE),
1032410390
SND_PCI_QUIRK(0x1b35, 0x1235, "CZC B20", ALC269_FIXUP_CZC_B20),

sound/soc/amd/yc/acp6x-mach.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -199,13 +199,6 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
199199
DMI_MATCH(DMI_PRODUCT_NAME, "21HY"),
200200
}
201201
},
202-
{
203-
.driver_data = &acp6x_card,
204-
.matches = {
205-
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
206-
DMI_MATCH(DMI_PRODUCT_NAME, "21J2"),
207-
}
208-
},
209202
{
210203
.driver_data = &acp6x_card,
211204
.matches = {
@@ -318,6 +311,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
318311
DMI_MATCH(DMI_PRODUCT_NAME, "E1504FA"),
319312
}
320313
},
314+
{
315+
.driver_data = &acp6x_card,
316+
.matches = {
317+
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."),
318+
DMI_MATCH(DMI_PRODUCT_NAME, "M7600RE"),
319+
}
320+
},
321321
{
322322
.driver_data = &acp6x_card,
323323
.matches = {

sound/soc/amd/yc/pci-acp6x.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,6 @@ static int snd_acp6x_probe(struct pci_dev *pci,
162162
/* Yellow Carp device check */
163163
switch (pci->revision) {
164164
case 0x60:
165-
case 0x63:
166165
case 0x6f:
167166
break;
168167
default:

sound/soc/codecs/tlv320adc3xxx.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1429,7 +1429,7 @@ static int adc3xxx_i2c_probe(struct i2c_client *i2c)
14291429
return ret;
14301430
}
14311431

1432-
static void __exit adc3xxx_i2c_remove(struct i2c_client *client)
1432+
static void adc3xxx_i2c_remove(struct i2c_client *client)
14331433
{
14341434
struct adc3xxx *adc3xxx = i2c_get_clientdata(client);
14351435

@@ -1452,7 +1452,7 @@ static struct i2c_driver adc3xxx_i2c_driver = {
14521452
.of_match_table = tlv320adc3xxx_of_match,
14531453
},
14541454
.probe = adc3xxx_i2c_probe,
1455-
.remove = __exit_p(adc3xxx_i2c_remove),
1455+
.remove = adc3xxx_i2c_remove,
14561456
.id_table = adc3xxx_i2c_id,
14571457
};
14581458

0 commit comments

Comments
 (0)