Skip to content

Commit af477f4

Browse files
committed
Merge tag 'sound-fix-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "A collection of fix patches for the 6.16-rc1 merge window. Most of changes are about ASoC, especially lots of AVS driver fixes. Larger LOCs are seen in TAS571x codec drivers, but the changes are trivial and safe. The rest are all device-specific small fixes" * tag 'sound-fix-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (27 commits) ASoC: Intel: avs: boards: Fix rt5663 front end name ASoC: Intel: avs: Simplify verification of parse_int_array() result ALSA: usb-audio: Add implicit feedback quirk for RODE AI-1 ALSA: hda: Ignore unsol events for cards being shut down ALSA: hda: Add new pci id for AMD GPU display HD audio controller ALSA: hda: cs35l41: Constify regmap_irq_chip ALSA: usb-audio: Add a quirk for Lenovo Thinkpad Thunderbolt 3 dock ASoC: ti: omap-hdmi: Re-add dai_link->platform to fix card init ASoC: pcm: Do not open FEs with no BEs connected ASoC: rt1320: fix speaker noise when volume bar is 100% ASoC: Intel: avs: Include missing string.h ASoC: Intel: avs: Verify content returned by parse_int_array() ASoC: Intel: avs: Verify kcalloc() status when setting constraints ASoC: Intel: avs: Fix paths in MODULE_FIRMWARE hints ASoC: Intel: avs: Fix possible null-ptr-deref when initing hw ASoC: Intel: avs: Fix PPLCxFMT calculation ASoC: Intel: avs: Fix deadlock when the failing IPC is SET_D0IX ASoC: codecs: hda: Fix RPM usage count underflow ASoC: amd: yc: Add support for Lenovo Yoga 7 16ARP8 ASoC: tas571x: fix tas5733 num_controls ...
2 parents 5b032ca + 10db952 commit af477f4

25 files changed

+192
-70
lines changed

drivers/firmware/cirrus/test/cs_dsp_mock_wmfw.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,11 @@ void cs_dsp_mock_wmfw_add_info(struct cs_dsp_mock_wmfw_builder *builder,
133133

134134
if (info_len % 4) {
135135
/* Create a padded string with length a multiple of 4 */
136+
size_t copy_len = info_len;
136137
info_len = round_up(info_len, 4);
137138
tmp = kunit_kzalloc(builder->test_priv->test, info_len, GFP_KERNEL);
138139
KUNIT_ASSERT_NOT_ERR_OR_NULL(builder->test_priv->test, tmp);
139-
memcpy(tmp, info, info_len);
140+
memcpy(tmp, info, copy_len);
140141
info = tmp;
141142
}
142143

drivers/firmware/cirrus/test/cs_dsp_test_control_cache.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -776,7 +776,6 @@ static void cs_dsp_ctl_cache_init_multiple_offsets(struct kunit *test)
776776
"dummyalg", NULL);
777777

778778
/* Create controls identical except for offset */
779-
def.length_bytes = 8;
780779
def.offset_dsp_words = 0;
781780
def.shortname = "CtlA";
782781
cs_dsp_mock_wmfw_add_coeff_desc(local->wmfw_builder, &def);

sound/pci/hda/cs35l41_hda.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1603,7 +1603,7 @@ static const struct regmap_irq cs35l41_reg_irqs[] = {
16031603
CS35L41_REG_IRQ(IRQ1_STATUS1, AMP_SHORT_ERR),
16041604
};
16051605

1606-
static struct regmap_irq_chip cs35l41_regmap_irq_chip = {
1606+
static const struct regmap_irq_chip cs35l41_regmap_irq_chip = {
16071607
.name = "cs35l41 IRQ1 Controller",
16081608
.status_base = CS35L41_IRQ1_STATUS1,
16091609
.mask_base = CS35L41_IRQ1_MASK1,

sound/pci/hda/hda_bind.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ static void hda_codec_unsol_event(struct hdac_device *dev, unsigned int ev)
4444
struct hda_codec *codec = container_of(dev, struct hda_codec, core);
4545

4646
/* ignore unsol events during shutdown */
47-
if (codec->bus->shutdown)
47+
if (codec->card->shutdown || codec->bus->shutdown)
4848
return;
4949

5050
/* ignore unsol events during system suspend/resume */

sound/pci/hda/hda_intel.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2724,6 +2724,9 @@ static const struct pci_device_id azx_ids[] = {
27242724
{ PCI_VDEVICE(ATI, 0xab38),
27252725
.driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS |
27262726
AZX_DCAPS_PM_RUNTIME },
2727+
{ PCI_VDEVICE(ATI, 0xab40),
2728+
.driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS |
2729+
AZX_DCAPS_PM_RUNTIME },
27272730
/* GLENFLY */
27282731
{ PCI_DEVICE(PCI_VENDOR_ID_GLENFLY, PCI_ANY_ID),
27292732
.class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8,

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
311311
DMI_MATCH(DMI_PRODUCT_NAME, "83AS"),
312312
}
313313
},
314+
{
315+
.driver_data = &acp6x_card,
316+
.matches = {
317+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
318+
DMI_MATCH(DMI_PRODUCT_NAME, "83BS"),
319+
}
320+
},
314321
{
315322
.driver_data = &acp6x_card,
316323
.matches = {

sound/soc/codecs/es8375.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,7 @@ static int es8375_hw_params(struct snd_pcm_substream *substream,
319319
coeff = get_coeff(es8375->vddd, dmic_enable, es8375->mclk_freq, params_rate(params));
320320
if (coeff < 0) {
321321
dev_warn(component->dev, "Clock coefficients do not match");
322+
return coeff;
322323
}
323324
regmap_write(es8375->regmap, ES8375_CLK_MGR4,
324325
coeff_div[coeff].Reg0x04);

sound/soc/codecs/hda.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,15 +152,15 @@ int hda_codec_probe_complete(struct hda_codec *codec)
152152
ret = snd_hda_codec_build_controls(codec);
153153
if (ret < 0) {
154154
dev_err(&hdev->dev, "unable to create controls %d\n", ret);
155-
goto out;
155+
return ret;
156156
}
157157

158158
/* Bus suspended codecs as it does not manage their pm */
159159
pm_runtime_set_active(&hdev->dev);
160160
/* rpm was forbidden in snd_hda_codec_device_new() */
161161
snd_hda_codec_set_power_save(codec, 2000);
162162
snd_hda_codec_register(codec);
163-
out:
163+
164164
/* Complement pm_runtime_get_sync(bus) in probe */
165165
pm_runtime_mark_last_busy(bus->dev);
166166
pm_runtime_put_autosuspend(bus->dev);

sound/soc/codecs/rt1320-sdw.c

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ static const struct reg_sequence rt1320_vc_blind_write[] = {
204204
{ 0x3fc2bfc0, 0x03 },
205205
{ 0x0000d486, 0x43 },
206206
{ SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, RT1320_SDCA_CTL_REQ_POWER_STATE, 0), 0x00 },
207-
{ 0x1000db00, 0x04 },
207+
{ 0x1000db00, 0x07 },
208208
{ 0x1000db01, 0x00 },
209209
{ 0x1000db02, 0x11 },
210210
{ 0x1000db03, 0x00 },
@@ -225,6 +225,21 @@ static const struct reg_sequence rt1320_vc_blind_write[] = {
225225
{ 0x1000db12, 0x00 },
226226
{ 0x1000db13, 0x00 },
227227
{ 0x1000db14, 0x45 },
228+
{ 0x1000db15, 0x0d },
229+
{ 0x1000db16, 0x01 },
230+
{ 0x1000db17, 0x00 },
231+
{ 0x1000db18, 0x00 },
232+
{ 0x1000db19, 0xbf },
233+
{ 0x1000db1a, 0x13 },
234+
{ 0x1000db1b, 0x09 },
235+
{ 0x1000db1c, 0x00 },
236+
{ 0x1000db1d, 0x00 },
237+
{ 0x1000db1e, 0x00 },
238+
{ 0x1000db1f, 0x12 },
239+
{ 0x1000db20, 0x09 },
240+
{ 0x1000db21, 0x00 },
241+
{ 0x1000db22, 0x00 },
242+
{ 0x1000db23, 0x00 },
228243
{ 0x0000d540, 0x01 },
229244
{ 0x0000c081, 0xfc },
230245
{ 0x0000f01e, 0x80 },

sound/soc/codecs/tas571x.c

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,69 @@ static const struct regmap_config tas5721_regmap_config = {
718718
.volatile_table = &tas571x_volatile_regs,
719719
};
720720

721+
static const struct snd_kcontrol_new tas5733_controls[] = {
722+
/* MVOL LSB is ignored - see comments in tas571x_i2c_probe() */
723+
SOC_SINGLE_TLV("Master Volume",
724+
TAS571X_MVOL_REG, 1, 0x1ff, 1,
725+
tas5717_volume_tlv),
726+
SOC_DOUBLE_R_TLV("Speaker Volume",
727+
TAS571X_CH1_VOL_REG, TAS571X_CH2_VOL_REG,
728+
1, 0x1ff, 1, tas5717_volume_tlv),
729+
SOC_DOUBLE("Speaker Switch",
730+
TAS571X_SOFT_MUTE_REG,
731+
TAS571X_SOFT_MUTE_CH1_SHIFT, TAS571X_SOFT_MUTE_CH2_SHIFT,
732+
1, 1),
733+
734+
SOC_DOUBLE_R_RANGE("CH1 Mixer Volume",
735+
TAS5717_CH1_LEFT_CH_MIX_REG,
736+
TAS5717_CH1_RIGHT_CH_MIX_REG,
737+
16, 0, 0x80, 0),
738+
739+
SOC_DOUBLE_R_RANGE("CH2 Mixer Volume",
740+
TAS5717_CH2_LEFT_CH_MIX_REG,
741+
TAS5717_CH2_RIGHT_CH_MIX_REG,
742+
16, 0, 0x80, 0),
743+
744+
/*
745+
* The biquads are named according to the register names.
746+
* Please note that TI's TAS57xx Graphical Development Environment
747+
* tool names them different.
748+
*/
749+
BIQUAD_COEFS("CH1 - Biquad 0", TAS5733_CH1_BQ0_REG),
750+
BIQUAD_COEFS("CH1 - Biquad 1", TAS5733_CH1_BQ1_REG),
751+
BIQUAD_COEFS("CH1 - Biquad 2", TAS5733_CH1_BQ2_REG),
752+
BIQUAD_COEFS("CH1 - Biquad 3", TAS5733_CH1_BQ3_REG),
753+
BIQUAD_COEFS("CH1 - Biquad 4", TAS5733_CH1_BQ4_REG),
754+
BIQUAD_COEFS("CH1 - Biquad 5", TAS5733_CH1_BQ5_REG),
755+
BIQUAD_COEFS("CH1 - Biquad 6", TAS5733_CH1_BQ6_REG),
756+
BIQUAD_COEFS("CH1 - Biquad 7", TAS5733_CH1_BQ7_REG),
757+
BIQUAD_COEFS("CH1 - Biquad 8", TAS5733_CH1_BQ8_REG),
758+
BIQUAD_COEFS("CH1 - Biquad 9", TAS5733_CH1_BQ9_REG),
759+
BIQUAD_COEFS("CH1 - Biquad 10", TAS5733_CH1_BQ10_REG),
760+
761+
BIQUAD_COEFS("CH2 - Biquad 0", TAS5733_CH2_BQ0_REG),
762+
BIQUAD_COEFS("CH2 - Biquad 1", TAS5733_CH2_BQ1_REG),
763+
BIQUAD_COEFS("CH2 - Biquad 2", TAS5733_CH2_BQ2_REG),
764+
BIQUAD_COEFS("CH2 - Biquad 3", TAS5733_CH2_BQ3_REG),
765+
BIQUAD_COEFS("CH2 - Biquad 4", TAS5733_CH2_BQ4_REG),
766+
BIQUAD_COEFS("CH2 - Biquad 5", TAS5733_CH2_BQ5_REG),
767+
BIQUAD_COEFS("CH2 - Biquad 6", TAS5733_CH2_BQ6_REG),
768+
BIQUAD_COEFS("CH2 - Biquad 7", TAS5733_CH2_BQ7_REG),
769+
BIQUAD_COEFS("CH2 - Biquad 8", TAS5733_CH2_BQ8_REG),
770+
BIQUAD_COEFS("CH2 - Biquad 9", TAS5733_CH2_BQ9_REG),
771+
BIQUAD_COEFS("CH2 - Biquad 10", TAS5733_CH2_BQ10_REG),
772+
773+
BIQUAD_COEFS("CH1 - Cross Biquad 0", TAS5733_CH1_CBQ0_REG),
774+
BIQUAD_COEFS("CH1 - Cross Biquad 1", TAS5733_CH1_CBQ1_REG),
775+
BIQUAD_COEFS("CH1 - Cross Biquad 2", TAS5733_CH1_CBQ2_REG),
776+
BIQUAD_COEFS("CH1 - Cross Biquad 3", TAS5733_CH1_CBQ3_REG),
777+
778+
BIQUAD_COEFS("CH2 - Cross Biquad 0", TAS5733_CH2_CBQ0_REG),
779+
BIQUAD_COEFS("CH2 - Cross Biquad 1", TAS5733_CH2_CBQ1_REG),
780+
BIQUAD_COEFS("CH2 - Cross Biquad 2", TAS5733_CH2_CBQ2_REG),
781+
BIQUAD_COEFS("CH2 - Cross Biquad 3", TAS5733_CH2_CBQ3_REG),
782+
};
783+
721784
static const char *const tas5733_supply_names[] = {
722785
"AVDD",
723786
"DVDD",
@@ -770,8 +833,8 @@ static const struct regmap_config tas5733_regmap_config = {
770833
static const struct tas571x_chip tas5733_chip = {
771834
.supply_names = tas5733_supply_names,
772835
.num_supply_names = ARRAY_SIZE(tas5733_supply_names),
773-
.controls = tas5717_controls,
774-
.num_controls = ARRAY_SIZE(tas5717_controls),
836+
.controls = tas5733_controls,
837+
.num_controls = ARRAY_SIZE(tas5733_controls),
775838
.regmap_config = &tas5733_regmap_config,
776839
.vol_reg_size = 2,
777840
};

0 commit comments

Comments
 (0)