Skip to content

Commit e6b9dce

Browse files
committed
Merge tag 'sound-6.17-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "A collection of small changes including a few regression fixes: - Regression fix for Intel SKL/KBL HD-audio bindings - Regression fix for missing Nvidia HDMI codec entries after the recent code reorganization - A few TAS2781 codec regression fixes - Fix for ASoC component lookup breakage - Usual HD-audio, USB-audio and SOF quirk entries" * tag 'sound-6.17-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: hda/hdmi: Add pin fix for another HP EliteDesk 800 G4 model ALSA: usb-audio: Allow Focusrite devices to use low samplerates ALSA: hda: tas2781: reorder tas2563 calibration variables ALSA: hda: tas2781: fix tas2563 EFI data endianness ALSA: firewire-motu: drop EPOLLOUT from poll return values as write is not supported ALSA: docs: Add documents for recently changes in snd-usb-audio ALSA: usb-audio: Add mute TLV for playback volumes on more devices ASoC: SOF: Intel: WCL: Add the sdw_process_wakeen op ALSA: hda: Avoid binding with SOF for SKL/KBL platforms ASoC: rsnd: tidyup direction name on rsnd_dai_connect() ALSA: hda/tas2781: Fix EFI name for calibration beginning with 1 instead of 0 ALSA: usb-audio: move mixer_quirks' min_mute into common quirk ALSA: hda/realtek: Fix headset mic for TongFang X6[AF]R5xxY ALSA: hda/hdmi: Restore missing HDMI codec entries ASoC: codecs: idt821034: fix wrong log in idt821034_chip_direction_output() ASoC: soc-core: tidyup snd_soc_lookup_component_nolocked() ASoC: soc-core: care NULL dirver name on snd_soc_lookup_component_nolocked() ALSA: hda: intel-dsp-config: Select SOF driver on MTL Chromebooks ALSA: usb-audio: Add mute TLV for playback volumes on some devices
2 parents 8026aed + bcd6659 commit e6b9dce

File tree

16 files changed

+130
-34
lines changed

16 files changed

+130
-34
lines changed

Documentation/sound/alsa-configuration.rst

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2253,8 +2253,15 @@ device_setup
22532253
Default: 0x0000
22542254
ignore_ctl_error
22552255
Ignore any USB-controller regarding mixer interface (default: no)
2256+
``ignore_ctl_error=1`` may help when you get an error at accessing
2257+
the mixer element such as URB error -22. This happens on some
2258+
buggy USB device or the controller. This workaround corresponds to
2259+
the ``quirk_flags`` bit 14, too.
22562260
autoclock
22572261
Enable auto-clock selection for UAC2 devices (default: yes)
2262+
lowlatency
2263+
Enable low latency playback mode (default: yes).
2264+
Could disable it to switch back to the old mode if face a regression.
22582265
quirk_alias
22592266
Quirk alias list, pass strings like ``0123abcd:5678beef``, which
22602267
applies the existing quirk for the device 5678:beef to a new
@@ -2284,6 +2291,11 @@ delayed_register
22842291
The driver prints a message like "Found post-registration device
22852292
assignment: 1234abcd:04" for such a device, so that user can
22862293
notice the need.
2294+
skip_validation
2295+
Skip unit descriptor validation (default: no).
2296+
The option is used to ignores the validation errors with the hexdump
2297+
of the unit descriptor instead of a driver probe error, so that we
2298+
can check its details.
22872299
quirk_flags
22882300
Contains the bit flags for various device specific workarounds.
22892301
Applied to the corresponding card index.
@@ -2307,17 +2319,26 @@ quirk_flags
23072319
* bit 16: Set up the interface at first like UAC1
23082320
* bit 17: Apply the generic implicit feedback sync mode
23092321
* bit 18: Don't apply implicit feedback sync mode
2322+
* bit 19: Don't closed interface during setting sample rate
2323+
* bit 20: Force an interface reset whenever stopping & restarting
2324+
a stream
2325+
* bit 21: Do not set PCM rate (frequency) when only one rate is
2326+
available for the given endpoint.
2327+
* bit 22: Set the fixed resolution 16 for Mic Capture Volume
2328+
* bit 23: Set the fixed resolution 384 for Mic Capture Volume
2329+
* bit 24: Set minimum volume control value as mute for devices
2330+
where the lowest playback value represents muted state instead
2331+
of minimum audible volume
23102332

23112333
This module supports multiple devices, autoprobe and hotplugging.
23122334

23132335
NB: ``nrpacks`` parameter can be modified dynamically via sysfs.
23142336
Don't put the value over 20. Changing via sysfs has no sanity
23152337
check.
23162338

2317-
NB: ``ignore_ctl_error=1`` may help when you get an error at accessing
2318-
the mixer element such as URB error -22. This happens on some
2319-
buggy USB device or the controller. This workaround corresponds to
2320-
the ``quirk_flags`` bit 14, too.
2339+
NB: ``ignore_ctl_error=1`` just provides a quick way to work around the
2340+
issues. If you have a buggy device that requires these quirks, please
2341+
report it to the upstream.
23212342

23222343
NB: ``quirk_alias`` option is provided only for testing / development.
23232344
If you want to have a proper support, contact to upstream for

sound/firewire/motu/motu-hwdep.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ static __poll_t hwdep_poll(struct snd_hwdep *hwdep, struct file *file,
111111
events = 0;
112112
spin_unlock_irq(&motu->lock);
113113

114-
return events | EPOLLOUT;
114+
return events;
115115
}
116116

117117
static int hwdep_get_info(struct snd_motu *motu, void __user *arg)

sound/hda/codecs/hdmi/hdmi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1582,6 +1582,7 @@ static int hdmi_add_cvt(struct hda_codec *codec, hda_nid_t cvt_nid)
15821582
static const struct snd_pci_quirk force_connect_list[] = {
15831583
SND_PCI_QUIRK(0x103c, 0x83e2, "HP EliteDesk 800 G4", 1),
15841584
SND_PCI_QUIRK(0x103c, 0x83ef, "HP MP9 G4 Retail System AMS", 1),
1585+
SND_PCI_QUIRK(0x103c, 0x845a, "HP EliteDesk 800 G4 DM 65W", 1),
15851586
SND_PCI_QUIRK(0x103c, 0x870f, "HP", 1),
15861587
SND_PCI_QUIRK(0x103c, 0x871a, "HP", 1),
15871588
SND_PCI_QUIRK(0x103c, 0x8711, "HP", 1),

sound/hda/codecs/hdmi/nvhdmi.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,15 +198,32 @@ static const struct hda_device_id snd_hda_id_nvhdmi[] = {
198198
HDA_CODEC_ID_MODEL(0x10de0098, "GPU 98 HDMI/DP", MODEL_GENERIC),
199199
HDA_CODEC_ID_MODEL(0x10de0099, "GPU 99 HDMI/DP", MODEL_GENERIC),
200200
HDA_CODEC_ID_MODEL(0x10de009a, "GPU 9a HDMI/DP", MODEL_GENERIC),
201+
HDA_CODEC_ID_MODEL(0x10de009b, "GPU 9b HDMI/DP", MODEL_GENERIC),
202+
HDA_CODEC_ID_MODEL(0x10de009c, "GPU 9c HDMI/DP", MODEL_GENERIC),
201203
HDA_CODEC_ID_MODEL(0x10de009d, "GPU 9d HDMI/DP", MODEL_GENERIC),
202204
HDA_CODEC_ID_MODEL(0x10de009e, "GPU 9e HDMI/DP", MODEL_GENERIC),
203205
HDA_CODEC_ID_MODEL(0x10de009f, "GPU 9f HDMI/DP", MODEL_GENERIC),
204206
HDA_CODEC_ID_MODEL(0x10de00a0, "GPU a0 HDMI/DP", MODEL_GENERIC),
207+
HDA_CODEC_ID_MODEL(0x10de00a1, "GPU a1 HDMI/DP", MODEL_GENERIC),
205208
HDA_CODEC_ID_MODEL(0x10de00a3, "GPU a3 HDMI/DP", MODEL_GENERIC),
206209
HDA_CODEC_ID_MODEL(0x10de00a4, "GPU a4 HDMI/DP", MODEL_GENERIC),
207210
HDA_CODEC_ID_MODEL(0x10de00a5, "GPU a5 HDMI/DP", MODEL_GENERIC),
208211
HDA_CODEC_ID_MODEL(0x10de00a6, "GPU a6 HDMI/DP", MODEL_GENERIC),
209212
HDA_CODEC_ID_MODEL(0x10de00a7, "GPU a7 HDMI/DP", MODEL_GENERIC),
213+
HDA_CODEC_ID_MODEL(0x10de00a8, "GPU a8 HDMI/DP", MODEL_GENERIC),
214+
HDA_CODEC_ID_MODEL(0x10de00a9, "GPU a9 HDMI/DP", MODEL_GENERIC),
215+
HDA_CODEC_ID_MODEL(0x10de00aa, "GPU aa HDMI/DP", MODEL_GENERIC),
216+
HDA_CODEC_ID_MODEL(0x10de00ab, "GPU ab HDMI/DP", MODEL_GENERIC),
217+
HDA_CODEC_ID_MODEL(0x10de00ad, "GPU ad HDMI/DP", MODEL_GENERIC),
218+
HDA_CODEC_ID_MODEL(0x10de00ae, "GPU ae HDMI/DP", MODEL_GENERIC),
219+
HDA_CODEC_ID_MODEL(0x10de00af, "GPU af HDMI/DP", MODEL_GENERIC),
220+
HDA_CODEC_ID_MODEL(0x10de00b0, "GPU b0 HDMI/DP", MODEL_GENERIC),
221+
HDA_CODEC_ID_MODEL(0x10de00b1, "GPU b1 HDMI/DP", MODEL_GENERIC),
222+
HDA_CODEC_ID_MODEL(0x10de00c0, "GPU c0 HDMI/DP", MODEL_GENERIC),
223+
HDA_CODEC_ID_MODEL(0x10de00c1, "GPU c1 HDMI/DP", MODEL_GENERIC),
224+
HDA_CODEC_ID_MODEL(0x10de00c3, "GPU c3 HDMI/DP", MODEL_GENERIC),
225+
HDA_CODEC_ID_MODEL(0x10de00c4, "GPU c4 HDMI/DP", MODEL_GENERIC),
226+
HDA_CODEC_ID_MODEL(0x10de00c5, "GPU c5 HDMI/DP", MODEL_GENERIC),
210227
{} /* terminator */
211228
};
212229
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_nvhdmi);

sound/hda/codecs/hdmi/tegrahdmi.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,9 @@ static const struct hda_device_id snd_hda_id_tegrahdmi[] = {
299299
HDA_CODEC_ID_MODEL(0x10de002f, "Tegra194 HDMI/DP2", MODEL_TEGRA),
300300
HDA_CODEC_ID_MODEL(0x10de0030, "Tegra194 HDMI/DP3", MODEL_TEGRA),
301301
HDA_CODEC_ID_MODEL(0x10de0031, "Tegra234 HDMI/DP", MODEL_TEGRA234),
302+
HDA_CODEC_ID_MODEL(0x10de0033, "SoC 33 HDMI/DP", MODEL_TEGRA234),
302303
HDA_CODEC_ID_MODEL(0x10de0034, "Tegra264 HDMI/DP", MODEL_TEGRA234),
304+
HDA_CODEC_ID_MODEL(0x10de0035, "SoC 35 HDMI/DP", MODEL_TEGRA234),
303305
{} /* terminator */
304306
};
305307
MODULE_DEVICE_TABLE(hdaudio, snd_hda_id_tegrahdmi);

sound/hda/codecs/realtek/alc269.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7147,6 +7147,8 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
71477147
SND_PCI_QUIRK(0x1d05, 0x121b, "TongFang GMxAGxx", ALC269_FIXUP_NO_SHUTUP),
71487148
SND_PCI_QUIRK(0x1d05, 0x1387, "TongFang GMxIXxx", ALC2XX_FIXUP_HEADSET_MIC),
71497149
SND_PCI_QUIRK(0x1d05, 0x1409, "TongFang GMxIXxx", ALC2XX_FIXUP_HEADSET_MIC),
7150+
SND_PCI_QUIRK(0x1d05, 0x300f, "TongFang X6AR5xxY", ALC2XX_FIXUP_HEADSET_MIC),
7151+
SND_PCI_QUIRK(0x1d05, 0x3019, "TongFang X6FR5xxY", ALC2XX_FIXUP_HEADSET_MIC),
71507152
SND_PCI_QUIRK(0x1d17, 0x3288, "Haier Boyue G42", ALC269VC_FIXUP_ACER_VCOPPERBOX_PINS),
71517153
SND_PCI_QUIRK(0x1d72, 0x1602, "RedmiBook", ALC255_FIXUP_XIAOMI_HEADSET_MIC),
71527154
SND_PCI_QUIRK(0x1d72, 0x1701, "XiaomiNotebook Pro", ALC298_FIXUP_DELL1_MIC_NO_PRESENCE),

sound/hda/codecs/side-codecs/tas2781_hda_i2c.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ static int tas2563_save_calibration(struct tas2781_hda *h)
300300
{
301301
efi_guid_t efi_guid = tasdev_fct_efi_guid[LENOVO];
302302
char *vars[TASDEV_CALIB_N] = {
303-
"R0_%d", "InvR0_%d", "R0_Low_%d", "Power_%d", "TLim_%d"
303+
"R0_%d", "R0_Low_%d", "InvR0_%d", "Power_%d", "TLim_%d"
304304
};
305305
efi_char16_t efi_name[TAS2563_CAL_VAR_NAME_MAX];
306306
unsigned long max_size = TAS2563_CAL_DATA_SIZE;
@@ -310,6 +310,7 @@ static int tas2563_save_calibration(struct tas2781_hda *h)
310310
struct cali_reg *r = &cd->cali_reg_array;
311311
unsigned int offset = 0;
312312
unsigned char *data;
313+
__be32 bedata;
313314
efi_status_t status;
314315
unsigned int attr;
315316
int ret, i, j, k;
@@ -327,8 +328,8 @@ static int tas2563_save_calibration(struct tas2781_hda *h)
327328
data[offset] = i;
328329
offset++;
329330
for (j = 0; j < TASDEV_CALIB_N; ++j) {
330-
ret = snprintf(var8, sizeof(var8), vars[j], i);
331-
331+
/* EFI name for calibration started with 1, not 0 */
332+
ret = snprintf(var8, sizeof(var8), vars[j], i + 1);
332333
if (ret < 0 || ret >= sizeof(var8) - 1) {
333334
dev_err(p->dev, "%s: Read %s failed\n",
334335
__func__, var8);
@@ -351,6 +352,8 @@ static int tas2563_save_calibration(struct tas2781_hda *h)
351352
i, j, status);
352353
return -EINVAL;
353354
}
355+
bedata = cpu_to_be32(*(uint32_t *)&data[offset]);
356+
memcpy(&data[offset], &bedata, sizeof(bedata));
354357
offset += TAS2563_CAL_DATA_SIZE;
355358
}
356359
}

sound/hda/core/intel-dsp-config.c

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,13 @@ static const struct config_entry config_table[] = {
116116
.flags = FLAG_SST,
117117
.device = PCI_DEVICE_ID_INTEL_HDA_FCL,
118118
},
119+
#else /* AVS disabled; force to legacy as SOF doesn't work for SKL or KBL */
120+
{
121+
.device = PCI_DEVICE_ID_INTEL_HDA_SKL_LP,
122+
},
123+
{
124+
.device = PCI_DEVICE_ID_INTEL_HDA_KBL_LP,
125+
},
119126
#endif
120127
#if IS_ENABLED(CONFIG_SND_SOC_SOF_APOLLOLAKE)
121128
{
@@ -167,9 +174,9 @@ static const struct config_entry config_table[] = {
167174

168175
/*
169176
* CoffeeLake, CannonLake, CometLake, IceLake, TigerLake, AlderLake,
170-
* RaptorLake use legacy HDAudio driver except for Google Chromebooks
171-
* and when DMICs are present. Two cases are required since Coreboot
172-
* does not expose NHLT tables.
177+
* RaptorLake, MeteorLake use legacy HDAudio driver except for Google
178+
* Chromebooks and when DMICs are present. Two cases are required since
179+
* Coreboot does not expose NHLT tables.
173180
*
174181
* When the Chromebook quirk is not present, it's based on information
175182
* that no such device exists. When the quirk is present, it could be
@@ -516,6 +523,19 @@ static const struct config_entry config_table[] = {
516523
/* Meteor Lake */
517524
#if IS_ENABLED(CONFIG_SND_SOC_SOF_METEORLAKE)
518525
/* Meteorlake-P */
526+
{
527+
.flags = FLAG_SOF,
528+
.device = PCI_DEVICE_ID_INTEL_HDA_MTL,
529+
.dmi_table = (const struct dmi_system_id []) {
530+
{
531+
.ident = "Google Chromebooks",
532+
.matches = {
533+
DMI_MATCH(DMI_SYS_VENDOR, "Google"),
534+
}
535+
},
536+
{}
537+
}
538+
},
519539
{
520540
.flags = FLAG_SOF | FLAG_SOF_ONLY_IF_DMIC_OR_SOUNDWIRE,
521541
.device = PCI_DEVICE_ID_INTEL_HDA_MTL,

sound/soc/codecs/idt821034.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1067,7 +1067,7 @@ static int idt821034_chip_direction_output(struct gpio_chip *c, unsigned int off
10671067

10681068
ret = idt821034_set_slic_conf(idt821034, ch, slic_conf);
10691069
if (ret) {
1070-
dev_err(&idt821034->spi->dev, "dir in gpio %d (%u, 0x%x) failed (%d)\n",
1070+
dev_err(&idt821034->spi->dev, "dir out gpio %d (%u, 0x%x) failed (%d)\n",
10711071
offset, ch, mask, ret);
10721072
}
10731073

sound/soc/renesas/rcar/core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,7 @@ int rsnd_dai_connect(struct rsnd_mod *mod,
597597

598598
dev_dbg(dev, "%s is connected to io (%s)\n",
599599
rsnd_mod_name(mod),
600-
snd_pcm_direction_name(io->substream->stream));
600+
rsnd_io_is_play(io) ? "Playback" : "Capture");
601601

602602
return 0;
603603
}

0 commit comments

Comments
 (0)