Skip to content

Commit c42881d

Browse files
committed
Merge tag 'sound-6.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "This became a bit bigger collection of patches, but almost all are about device-specific fixes, and should be safe for 6.9: - Lots of ASoC Intel SOF-related fixes/updates - Locking fixes in SoundWire drivers - ASoC AMD ACP/SOF updates - ASoC ES8326 codec fixes - HD-audio codec fixes and quirks - A regression fix in emu10k1 synth code" * tag 'sound-6.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (49 commits) ASoC: SOF: Core: Add remove_late() to sof_init_environment failure path ASoC: SOF: amd: fix for false dsp interrupts ASoC: SOF: Intel: lnl: Disable DMIC/SSP offload on remove ASoC: Intel: avs: boards: Add modules description ASoC: codecs: ES8326: Removing the control of ADC_SCALE ASoC: codecs: ES8326: Solve a headphone detection issue after suspend and resume ASoC: codecs: ES8326: modify clock table ASoC: codecs: ES8326: Solve error interruption issue ALSA: line6: Zero-initialize message buffers ALSA: hda/realtek: cs35l41: Support ASUS ROG G634JYR ALSA: hda/realtek: Update Panasonic CF-SZ6 quirk to support headset with microphone ALSA: hda/realtek: Add sound quirks for Lenovo Legion slim 7 16ARHA7 models Revert "ALSA: emu10k1: fix synthesizer sample playback position and caching" OSS: dmasound/paula: Mark driver struct with __refdata to prevent section mismatch ALSA: hda/realtek: Add quirks for ASUS Laptops using CS35L56 ASoC: amd: acp: fix for acp_init function error handling ASoC: tas2781: mark dvc_tlv with __maybe_unused ASoC: ops: Fix wraparound for mask in snd_soc_get_volsw ASoC: rt-sdw*: add __func__ to all error logs ASoC: rt722-sdca-sdw: fix locking sequence ...
2 parents 89103a1 + 100c854 commit c42881d

Some content is hidden

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

68 files changed

+694
-284
lines changed

include/sound/hdaudio_ext.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ struct hdac_ext_stream {
5656
u32 pphcldpl;
5757
u32 pphcldpu;
5858

59+
u32 pplcllpl;
60+
u32 pplcllpu;
61+
5962
bool decoupled:1;
6063
bool link_locked:1;
6164
bool link_prepared;

include/sound/tas2781-tlv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#ifndef __TAS2781_TLV_H__
1616
#define __TAS2781_TLV_H__
1717

18-
static const DECLARE_TLV_DB_SCALE(dvc_tlv, -10000, 100, 0);
18+
static const __maybe_unused DECLARE_TLV_DB_SCALE(dvc_tlv, -10000, 100, 0);
1919
static const DECLARE_TLV_DB_SCALE(amp_vol_tlv, 1100, 50, 0);
2020

2121
#endif

sound/oss/dmasound/dmasound_paula.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,13 @@ static void __exit amiga_audio_remove(struct platform_device *pdev)
725725
dmasound_deinit();
726726
}
727727

728-
static struct platform_driver amiga_audio_driver = {
728+
/*
729+
* amiga_audio_remove() lives in .exit.text. For drivers registered via
730+
* module_platform_driver_probe() this is ok because they cannot get unbound at
731+
* runtime. So mark the driver struct with __refdata to prevent modpost
732+
* triggering a section mismatch warning.
733+
*/
734+
static struct platform_driver amiga_audio_driver __refdata = {
729735
.remove_new = __exit_p(amiga_audio_remove),
730736
.driver = {
731737
.name = "amiga-audio",

sound/pci/emu10k1/emu10k1_callback.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ lookup_voices(struct snd_emux *emu, struct snd_emu10k1 *hw,
255255
/* check if sample is finished playing (non-looping only) */
256256
if (bp != best + V_OFF && bp != best + V_FREE &&
257257
(vp->reg.sample_mode & SNDRV_SFNT_SAMPLE_SINGLESHOT)) {
258-
val = snd_emu10k1_ptr_read(hw, CCCA_CURRADDR, vp->ch) - 64;
258+
val = snd_emu10k1_ptr_read(hw, CCCA_CURRADDR, vp->ch);
259259
if (val >= vp->reg.loopstart)
260260
bp = best + V_OFF;
261261
}
@@ -362,7 +362,7 @@ start_voice(struct snd_emux_voice *vp)
362362

363363
map = (hw->silent_page.addr << hw->address_mode) | (hw->address_mode ? MAP_PTI_MASK1 : MAP_PTI_MASK0);
364364

365-
addr = vp->reg.start + 64;
365+
addr = vp->reg.start;
366366
temp = vp->reg.parm.filterQ;
367367
ccca = (temp << 28) | addr;
368368
if (vp->apitch < 0xe400)
@@ -430,9 +430,6 @@ start_voice(struct snd_emux_voice *vp)
430430
/* Q & current address (Q 4bit value, MSB) */
431431
CCCA, ccca,
432432

433-
/* cache */
434-
CCR, REG_VAL_PUT(CCR_CACHEINVALIDSIZE, 64),
435-
436433
/* reset volume */
437434
VTFT, vtarget | vp->ftarget,
438435
CVCF, vtarget | CVCF_CURRENTFILTER_MASK,

sound/pci/hda/cs35l41_hda_property.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,10 @@ static const struct cs35l41_config cs35l41_config_table[] = {
108108
{ "10431F12", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },
109109
{ "10431F1F", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 0, 0, 0 },
110110
{ "10431F62", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 },
111+
{ "10433A60", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 },
111112
{ "17AA386F", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, -1, -1, 0, 0, 0 },
113+
{ "17AA3877", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 0, 0, 0 },
114+
{ "17AA3878", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 0, 0, 0 },
112115
{ "17AA38A9", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 2, -1, 0, 0, 0 },
113116
{ "17AA38AB", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 2, -1, 0, 0, 0 },
114117
{ "17AA38B4", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 0, 0, 0 },
@@ -496,7 +499,10 @@ static const struct cs35l41_prop_model cs35l41_prop_model_table[] = {
496499
{ "CSC3551", "10431F12", generic_dsd_config },
497500
{ "CSC3551", "10431F1F", generic_dsd_config },
498501
{ "CSC3551", "10431F62", generic_dsd_config },
502+
{ "CSC3551", "10433A60", generic_dsd_config },
499503
{ "CSC3551", "17AA386F", generic_dsd_config },
504+
{ "CSC3551", "17AA3877", generic_dsd_config },
505+
{ "CSC3551", "17AA3878", generic_dsd_config },
500506
{ "CSC3551", "17AA38A9", generic_dsd_config },
501507
{ "CSC3551", "17AA38AB", generic_dsd_config },
502508
{ "CSC3551", "17AA38B4", generic_dsd_config },

sound/pci/hda/cs35l56_hda_i2c.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,19 @@ static const struct i2c_device_id cs35l56_hda_i2c_id[] = {
5656
{}
5757
};
5858

59+
static const struct acpi_device_id cs35l56_acpi_hda_match[] = {
60+
{ "CSC3554", 0 },
61+
{ "CSC3556", 0 },
62+
{ "CSC3557", 0 },
63+
{}
64+
};
65+
MODULE_DEVICE_TABLE(acpi, cs35l56_acpi_hda_match);
66+
5967
static struct i2c_driver cs35l56_hda_i2c_driver = {
6068
.driver = {
61-
.name = "cs35l56-hda",
62-
.pm = &cs35l56_hda_pm_ops,
69+
.name = "cs35l56-hda",
70+
.acpi_match_table = cs35l56_acpi_hda_match,
71+
.pm = &cs35l56_hda_pm_ops,
6372
},
6473
.id_table = cs35l56_hda_i2c_id,
6574
.probe = cs35l56_hda_i2c_probe,

sound/pci/hda/cs35l56_hda_spi.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,19 @@ static const struct spi_device_id cs35l56_hda_spi_id[] = {
5656
{}
5757
};
5858

59+
static const struct acpi_device_id cs35l56_acpi_hda_match[] = {
60+
{ "CSC3554", 0 },
61+
{ "CSC3556", 0 },
62+
{ "CSC3557", 0 },
63+
{}
64+
};
65+
MODULE_DEVICE_TABLE(acpi, cs35l56_acpi_hda_match);
66+
5967
static struct spi_driver cs35l56_hda_spi_driver = {
6068
.driver = {
61-
.name = "cs35l56-hda",
62-
.pm = &cs35l56_hda_pm_ops,
69+
.name = "cs35l56-hda",
70+
.acpi_match_table = cs35l56_acpi_hda_match,
71+
.pm = &cs35l56_hda_pm_ops,
6372
},
6473
.id_table = cs35l56_hda_spi_id,
6574
.probe = cs35l56_hda_spi_probe,

sound/pci/hda/patch_realtek.c

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6875,11 +6875,38 @@ static void alc287_fixup_legion_16ithg6_speakers(struct hda_codec *cdc, const st
68756875
comp_generic_fixup(cdc, action, "i2c", "CLSA0101", "-%s:00-cs35l41-hda.%d", 2);
68766876
}
68776877

6878+
static void cs35l56_fixup_i2c_two(struct hda_codec *cdc, const struct hda_fixup *fix, int action)
6879+
{
6880+
comp_generic_fixup(cdc, action, "i2c", "CSC3556", "-%s:00-cs35l56-hda.%d", 2);
6881+
}
6882+
6883+
static void cs35l56_fixup_i2c_four(struct hda_codec *cdc, const struct hda_fixup *fix, int action)
6884+
{
6885+
comp_generic_fixup(cdc, action, "i2c", "CSC3556", "-%s:00-cs35l56-hda.%d", 4);
6886+
}
6887+
6888+
static void cs35l56_fixup_spi_two(struct hda_codec *cdc, const struct hda_fixup *fix, int action)
6889+
{
6890+
comp_generic_fixup(cdc, action, "spi", "CSC3556", "-%s:00-cs35l56-hda.%d", 2);
6891+
}
6892+
68786893
static void cs35l56_fixup_spi_four(struct hda_codec *cdc, const struct hda_fixup *fix, int action)
68796894
{
68806895
comp_generic_fixup(cdc, action, "spi", "CSC3556", "-%s:00-cs35l56-hda.%d", 4);
68816896
}
68826897

6898+
static void alc285_fixup_asus_ga403u(struct hda_codec *cdc, const struct hda_fixup *fix, int action)
6899+
{
6900+
/*
6901+
* The same SSID has been re-used in different hardware, they have
6902+
* different codecs and the newer GA403U has a ALC285.
6903+
*/
6904+
if (cdc->core.vendor_id == 0x10ec0285)
6905+
cs35l56_fixup_i2c_two(cdc, fix, action);
6906+
else
6907+
alc_fixup_inv_dmic(cdc, fix, action);
6908+
}
6909+
68836910
static void tas2781_fixup_i2c(struct hda_codec *cdc,
68846911
const struct hda_fixup *fix, int action)
68856912
{
@@ -7436,6 +7463,10 @@ enum {
74367463
ALC256_FIXUP_ACER_SFG16_MICMUTE_LED,
74377464
ALC256_FIXUP_HEADPHONE_AMP_VOL,
74387465
ALC245_FIXUP_HP_SPECTRE_X360_EU0XXX,
7466+
ALC285_FIXUP_CS35L56_SPI_2,
7467+
ALC285_FIXUP_CS35L56_I2C_2,
7468+
ALC285_FIXUP_CS35L56_I2C_4,
7469+
ALC285_FIXUP_ASUS_GA403U,
74397470
};
74407471

74417472
/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -9643,6 +9674,22 @@ static const struct hda_fixup alc269_fixups[] = {
96439674
.type = HDA_FIXUP_FUNC,
96449675
.v.func = alc245_fixup_hp_spectre_x360_eu0xxx,
96459676
},
9677+
[ALC285_FIXUP_CS35L56_SPI_2] = {
9678+
.type = HDA_FIXUP_FUNC,
9679+
.v.func = cs35l56_fixup_spi_two,
9680+
},
9681+
[ALC285_FIXUP_CS35L56_I2C_2] = {
9682+
.type = HDA_FIXUP_FUNC,
9683+
.v.func = cs35l56_fixup_i2c_two,
9684+
},
9685+
[ALC285_FIXUP_CS35L56_I2C_4] = {
9686+
.type = HDA_FIXUP_FUNC,
9687+
.v.func = cs35l56_fixup_i2c_four,
9688+
},
9689+
[ALC285_FIXUP_ASUS_GA403U] = {
9690+
.type = HDA_FIXUP_FUNC,
9691+
.v.func = alc285_fixup_asus_ga403u,
9692+
},
96469693
};
96479694

96489695
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -10096,14 +10143,15 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1009610143
SND_PCI_QUIRK(0x1043, 0x1a83, "ASUS UM5302LA", ALC294_FIXUP_CS35L41_I2C_2),
1009710144
SND_PCI_QUIRK(0x1043, 0x1a8f, "ASUS UX582ZS", ALC245_FIXUP_CS35L41_SPI_2),
1009810145
SND_PCI_QUIRK(0x1043, 0x1b11, "ASUS UX431DA", ALC294_FIXUP_ASUS_COEF_1B),
10099-
SND_PCI_QUIRK(0x1043, 0x1b13, "Asus U41SV", ALC269_FIXUP_INV_DMIC),
10146+
SND_PCI_QUIRK(0x1043, 0x1b13, "ASUS U41SV/GA403U", ALC285_FIXUP_ASUS_GA403U),
1010010147
SND_PCI_QUIRK(0x1043, 0x1b93, "ASUS G614JVR/JIR", ALC245_FIXUP_CS35L41_SPI_2),
1010110148
SND_PCI_QUIRK(0x1043, 0x1bbd, "ASUS Z550MA", ALC255_FIXUP_ASUS_MIC_NO_PRESENCE),
1010210149
SND_PCI_QUIRK(0x1043, 0x1c03, "ASUS UM3406HA", ALC287_FIXUP_CS35L41_I2C_2),
1010310150
SND_PCI_QUIRK(0x1043, 0x1c23, "Asus X55U", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
1010410151
SND_PCI_QUIRK(0x1043, 0x1c33, "ASUS UX5304MA", ALC245_FIXUP_CS35L41_SPI_2),
1010510152
SND_PCI_QUIRK(0x1043, 0x1c43, "ASUS UX8406MA", ALC245_FIXUP_CS35L41_SPI_2),
1010610153
SND_PCI_QUIRK(0x1043, 0x1c62, "ASUS GU603", ALC289_FIXUP_ASUS_GA401),
10154+
SND_PCI_QUIRK(0x1043, 0x1c63, "ASUS GU605M", ALC285_FIXUP_CS35L56_SPI_2),
1010710155
SND_PCI_QUIRK(0x1043, 0x1c92, "ASUS ROG Strix G15", ALC285_FIXUP_ASUS_G533Z_PINS),
1010810156
SND_PCI_QUIRK(0x1043, 0x1c9f, "ASUS G614JU/JV/JI", ALC285_FIXUP_ASUS_HEADSET_MIC),
1010910157
SND_PCI_QUIRK(0x1043, 0x1caf, "ASUS G634JY/JZ/JI/JG", ALC285_FIXUP_ASUS_SPI_REAR_SPEAKERS),
@@ -10115,11 +10163,14 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1011510163
SND_PCI_QUIRK(0x1043, 0x1d42, "ASUS Zephyrus G14 2022", ALC289_FIXUP_ASUS_GA401),
1011610164
SND_PCI_QUIRK(0x1043, 0x1d4e, "ASUS TM420", ALC256_FIXUP_ASUS_HPE),
1011710165
SND_PCI_QUIRK(0x1043, 0x1da2, "ASUS UP6502ZA/ZD", ALC245_FIXUP_CS35L41_SPI_2),
10166+
SND_PCI_QUIRK(0x1043, 0x1df3, "ASUS UM5606", ALC285_FIXUP_CS35L56_I2C_4),
1011810167
SND_PCI_QUIRK(0x1043, 0x1e02, "ASUS UX3402ZA", ALC245_FIXUP_CS35L41_SPI_2),
1011910168
SND_PCI_QUIRK(0x1043, 0x1e11, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA502),
1012010169
SND_PCI_QUIRK(0x1043, 0x1e12, "ASUS UM3402", ALC287_FIXUP_CS35L41_I2C_2),
1012110170
SND_PCI_QUIRK(0x1043, 0x1e51, "ASUS Zephyrus M15", ALC294_FIXUP_ASUS_GU502_PINS),
1012210171
SND_PCI_QUIRK(0x1043, 0x1e5e, "ASUS ROG Strix G513", ALC294_FIXUP_ASUS_G513_PINS),
10172+
SND_PCI_QUIRK(0x1043, 0x1e63, "ASUS H7606W", ALC285_FIXUP_CS35L56_I2C_2),
10173+
SND_PCI_QUIRK(0x1043, 0x1e83, "ASUS GA605W", ALC285_FIXUP_CS35L56_I2C_2),
1012310174
SND_PCI_QUIRK(0x1043, 0x1e8e, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA401),
1012410175
SND_PCI_QUIRK(0x1043, 0x1ee2, "ASUS UM6702RA/RC", ALC287_FIXUP_CS35L41_I2C_2),
1012510176
SND_PCI_QUIRK(0x1043, 0x1c52, "ASUS Zephyrus G15 2022", ALC289_FIXUP_ASUS_GA401),
@@ -10133,7 +10184,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1013310184
SND_PCI_QUIRK(0x1043, 0x3a30, "ASUS G814JVR/JIR", ALC245_FIXUP_CS35L41_SPI_2),
1013410185
SND_PCI_QUIRK(0x1043, 0x3a40, "ASUS G814JZR", ALC245_FIXUP_CS35L41_SPI_2),
1013510186
SND_PCI_QUIRK(0x1043, 0x3a50, "ASUS G834JYR/JZR", ALC245_FIXUP_CS35L41_SPI_2),
10136-
SND_PCI_QUIRK(0x1043, 0x3a60, "ASUS G634JYR/JZR", ALC245_FIXUP_CS35L41_SPI_2),
10187+
SND_PCI_QUIRK(0x1043, 0x3a60, "ASUS G634JYR/JZR", ALC285_FIXUP_ASUS_SPI_REAR_SPEAKERS),
1013710188
SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC),
1013810189
SND_PCI_QUIRK(0x1043, 0x834a, "ASUS S101", ALC269_FIXUP_STEREO_DMIC),
1013910190
SND_PCI_QUIRK(0x1043, 0x8398, "ASUS P1005", ALC269_FIXUP_STEREO_DMIC),
@@ -10159,7 +10210,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1015910210
SND_PCI_QUIRK(0x10ec, 0x1254, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK),
1016010211
SND_PCI_QUIRK(0x10ec, 0x12cc, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK),
1016110212
SND_PCI_QUIRK(0x10ec, 0x12f6, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK),
10162-
SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-SZ6", ALC269_FIXUP_HEADSET_MODE),
10213+
SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-SZ6", ALC269_FIXUP_ASPIRE_HEADSET_MIC),
1016310214
SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC),
1016410215
SND_PCI_QUIRK(0x144d, 0xc169, "Samsung Notebook 9 Pen (NP930SBE-K01US)", ALC298_FIXUP_SAMSUNG_AMP),
1016510216
SND_PCI_QUIRK(0x144d, 0xc176, "Samsung Notebook 9 Pro (NP930MBE-K04US)", ALC298_FIXUP_SAMSUNG_AMP),
@@ -10333,6 +10384,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1033310384
SND_PCI_QUIRK(0x17aa, 0x3869, "Lenovo Yoga7 14IAL7", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN),
1033410385
SND_PCI_QUIRK(0x17aa, 0x386f, "Legion 7i 16IAX7", ALC287_FIXUP_CS35L41_I2C_2),
1033510386
SND_PCI_QUIRK(0x17aa, 0x3870, "Lenovo Yoga 7 14ARB7", ALC287_FIXUP_YOGA7_14ARB7_I2C),
10387+
SND_PCI_QUIRK(0x17aa, 0x3877, "Lenovo Legion 7 Slim 16ARHA7", ALC287_FIXUP_CS35L41_I2C_2),
10388+
SND_PCI_QUIRK(0x17aa, 0x3878, "Lenovo Legion 7 Slim 16ARHA7", ALC287_FIXUP_CS35L41_I2C_2),
1033610389
SND_PCI_QUIRK(0x17aa, 0x387d, "Yoga S780-16 pro Quad AAC", ALC287_FIXUP_TAS2781_I2C),
1033710390
SND_PCI_QUIRK(0x17aa, 0x387e, "Yoga S780-16 pro Quad YC", ALC287_FIXUP_TAS2781_I2C),
1033810391
SND_PCI_QUIRK(0x17aa, 0x3881, "YB9 dual power mode2 YC", ALC287_FIXUP_TAS2781_I2C),
@@ -10403,6 +10456,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1040310456
SND_PCI_QUIRK(0x1d05, 0x1147, "TongFang GMxTGxx", ALC269_FIXUP_NO_SHUTUP),
1040410457
SND_PCI_QUIRK(0x1d05, 0x115c, "TongFang GMxTGxx", ALC269_FIXUP_NO_SHUTUP),
1040510458
SND_PCI_QUIRK(0x1d05, 0x121b, "TongFang GMxAGxx", ALC269_FIXUP_NO_SHUTUP),
10459+
SND_PCI_QUIRK(0x1d05, 0x1387, "TongFang GMxIXxx", ALC2XX_FIXUP_HEADSET_MIC),
1040610460
SND_PCI_QUIRK(0x1d72, 0x1602, "RedmiBook", ALC255_FIXUP_XIAOMI_HEADSET_MIC),
1040710461
SND_PCI_QUIRK(0x1d72, 0x1701, "XiaomiNotebook Pro", ALC298_FIXUP_DELL1_MIC_NO_PRESENCE),
1040810462
SND_PCI_QUIRK(0x1d72, 0x1901, "RedmiBook 14", ALC256_FIXUP_ASUS_HEADSET_MIC),

sound/soc/amd/acp/acp-pci.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,10 @@ static int acp_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id
115115
goto unregister_dmic_dev;
116116
}
117117

118-
acp_init(chip);
118+
ret = acp_init(chip);
119+
if (ret)
120+
goto unregister_dmic_dev;
121+
119122
res = devm_kcalloc(&pci->dev, num_res, sizeof(struct resource), GFP_KERNEL);
120123
if (!res) {
121124
ret = -ENOMEM;
@@ -133,11 +136,9 @@ static int acp_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id
133136
}
134137
}
135138

136-
if (flag == FLAG_AMD_LEGACY_ONLY_DMIC) {
137-
ret = check_acp_pdm(pci, chip);
138-
if (ret < 0)
139-
goto skip_pdev_creation;
140-
}
139+
ret = check_acp_pdm(pci, chip);
140+
if (ret < 0)
141+
goto skip_pdev_creation;
141142

142143
chip->flag = flag;
143144
memset(&pdevinfo, 0, sizeof(pdevinfo));

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ static int _cs_amp_write_cal_coeffs(struct cs_dsp *dsp,
5656
dev_dbg(dsp->dev, "Calibration: Ambient=%#x, Status=%#x, CalR=%d\n",
5757
data->calAmbient, data->calStatus, data->calR);
5858

59+
if (list_empty(&dsp->ctl_list)) {
60+
dev_info(dsp->dev, "Calibration disabled due to missing firmware controls\n");
61+
return -ENOENT;
62+
}
63+
5964
ret = cs_amp_write_cal_coeff(dsp, controls, controls->ambient, data->calAmbient);
6065
if (ret)
6166
return ret;

0 commit comments

Comments
 (0)