mirror of
https://github.com/torvalds/linux.git
synced 2026-09-14 16:10:02 +02:00
sound fixes for 7.2
A handful of small device-specific quirks, regression fixes, and build
fixes. Nothing really stands out.
- Fix for a potential UAF in in USB-audio MIDI2 endpoint handling
- Fix for a mixer regression on SteelSeries Arctis Nova 5 in USB-audio
- ASoC Intel HDMI-In capture, ACPI match table additions and quirks
- ASoC AMD quirk for HyperX OMEN
- Fix for ASoC Xilinx about crash in pcm formatter IRQ handlers
- Fixes for ASoC Realtek rt1320 and rt5645 codecs
- Fixes for ASoC TI tas2781 and tac5xx2-sdw build errors
-----BEGIN PGP SIGNATURE-----
iQJCBAABCAAsFiEEIXTw5fNLNI7mMiVaLtJE4w1nLE8FAmp+2KkOHHRpd2FpQHN1
c2UuZGUACgkQLtJE4w1nLE+2nRAAtyZCuZHuWm8ws01CDmLH5bthPVwgW0iBjnHy
mEAA0dRhwsa2lxICsAzcO8C1a+vSN3hOeQS0d+YzbCnaATj6sXMEPXDyy2NvGTWA
lRcv4HIIloDvm+cKw10jJp6p8v6n6OqP80ME34cq8c8LpLoiFDq31yGYqVekRJ+6
JyHEfyqzUCRY1wiZ9TEBnoU0I6112jWbQWhgsJxI/ZURXSBZM8r/nXfyg2cqUwIw
8P/TVhouXEvGSCdbOP7J2r3AglLBnjCcUiGx27cY9T9CJWt0hLzeYIclkZBAFIJV
l8VsiaenCNS0fHGr7fBF7gZx1WooO2724bdHxZiHmWkxNe5wOuWrqa2j66BjbiQM
EUrqpwZRO2fOg3/f2odw8VMIn+XWdszNIdDs75EoNTUZdb31sw3Ac/U1j0NBb3n2
vgXgDrZf+FSfxJ3V5+jwwrt5S2cliynj6qGMa3dObCoCP8dRKrqQoTdYMW+uMmTj
nn4bR2kjdudCJKqe6myqr9HWz8dK6XnfJbnUkYX0zBiFWrvy1yecwcyd9PEF2311
xdpdDbCXXBHvCjSo33e4wIhwd+F/tdwtonIbBpo893pC4ZTKL27Ba9quXJwu6xxB
R8MYBz7sRRlLG93a9Dixrxjp0tRrL6ZnmkW7D524rqD786D2W6sR8FpCTp4uCBwz
bkmGkgM=
=+V0F
-----END PGP SIGNATURE-----
Merge tag 'sound-7.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai"
"A handful of small device-specific quirks, regression fixes, and build
fixes. Nothing really stands out.
- Fix for a potential UAF in in USB-audio MIDI2 endpoint handling
- Fix for a mixer regression on SteelSeries Arctis Nova 5 in
USB-audio
- ASoC Intel HDMI-In capture, ACPI match table additions and quirks
- ASoC AMD quirk for HyperX OMEN
- Fix for ASoC Xilinx about crash in pcm formatter IRQ handlers
- Fixes for ASoC Realtek rt1320 and rt5645 codecs
- Fixes for ASoC TI tas2781 and tac5xx2-sdw build errors"
* tag 'sound-7.2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ASoC: Intel: NVL: Add entry for HDMI-In capture support to non-I2S codec boards.
ASoC: xilinx: formatter_pcm: pass aud_drv_data to irq handlers
ASoC: tac5xx2-sdw: select REGMAP_SOUNDWIRE_MBQ
ASoC: rt1320: run the initialisation preset on the first hardware init
ASoC: rt5645: Perform the initial jack detect at probe
ASoC: Intel: sof_rt5682: Add HDMI-In capture with rt5682 support for NVL.
ASoC: Intel: soc-acpi: Add entry for HDMI_In capture support in NVL match table
ASoC: amd: yc: Add DMI quirk for HyperX OMEN Gaming Laptop 16-ap1xxx
ASoC: tas2781: fix clang build error for goto bypassing cleanup variable
ALSA: usb-audio: Fix mixer regression on SteelSeries Arctis Nova 5
ALSA: usb: Fix UAF at delayed release of MIDI2 EPs
This commit is contained in:
commit
a5161661ae
|
|
@ -731,6 +731,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
|
|||
DMI_MATCH(DMI_BOARD_NAME, "8E35"),
|
||||
}
|
||||
},
|
||||
{
|
||||
.driver_data = &acp6x_card,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "8F06"),
|
||||
}
|
||||
},
|
||||
{
|
||||
.driver_data = &acp6x_card,
|
||||
.matches = {
|
||||
|
|
|
|||
|
|
@ -2157,6 +2157,7 @@ config SND_SOC_TAC5XX2_SDW
|
|||
tristate "Texas Instruments TAC5XX2 SoundWire Smart Amplifier"
|
||||
depends on SOUNDWIRE
|
||||
depends on SND_SOC_SDCA
|
||||
select REGMAP_SOUNDWIRE_MBQ
|
||||
help
|
||||
This option enables support for Texas Instruments TAC5XX2 family
|
||||
of SoundWire Smart Amplifiers. This includes TAC5572, TAC5672,
|
||||
|
|
|
|||
|
|
@ -1899,7 +1899,7 @@ static int rt1320_io_init(struct device *dev, struct sdw_slave *slave)
|
|||
dev_dbg(dev, "%s amp func_status=0x%x\n", __func__, amp_func_status);
|
||||
|
||||
/* initialization write */
|
||||
if ((amp_func_status & FUNCTION_NEEDS_INITIALIZATION)) {
|
||||
if ((amp_func_status & FUNCTION_NEEDS_INITIALIZATION) || !rt1320->first_hw_init) {
|
||||
switch (rt1320->dev_id) {
|
||||
case RT1320_DEV_ID:
|
||||
if (rt1320->version_id < RT1320_VC)
|
||||
|
|
|
|||
|
|
@ -3496,6 +3496,10 @@ static int rt5645_probe(struct snd_soc_component *component)
|
|||
if (!rt5645->eq_param)
|
||||
return -ENOMEM;
|
||||
|
||||
/* no machine driver to call rt5645_set_jack_detect(), so detect here */
|
||||
if (!rt5645->pdata.jd_mode && rt5645->gpiod_hp_det)
|
||||
rt5645_irq(0, rt5645);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1544,8 +1544,8 @@ static ssize_t acoustic_ctl_write(struct file *file,
|
|||
if (src[0] > max_pkg_len && src[0] != count) {
|
||||
dev_err(priv->dev, "pkg(%u), max(%u), count(%u) mismatch.\n",
|
||||
src[0], max_pkg_len, (unsigned int)count);
|
||||
ret = 0;
|
||||
goto exit;
|
||||
kfree(src);
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (src[1]) {
|
||||
|
|
@ -1559,14 +1559,14 @@ static ssize_t acoustic_ctl_write(struct file *file,
|
|||
break;
|
||||
default:
|
||||
dev_err(priv->dev, "%s Wrong code %02x.\n", __func__, src[1]);
|
||||
ret = 0;
|
||||
goto exit;
|
||||
kfree(src);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (len < 1) {
|
||||
dev_err(priv->dev, "pkg fmt invalid %02x.\n", len);
|
||||
ret = 0;
|
||||
goto exit;
|
||||
kfree(src);
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (j = 0; j < priv->ndev; j++)
|
||||
|
|
@ -1576,8 +1576,8 @@ static ssize_t acoustic_ctl_write(struct file *file,
|
|||
}
|
||||
if (j >= priv->ndev) {
|
||||
dev_err(priv->dev, "no such device 0x%02x.\n", src[2]);
|
||||
ret = 0;
|
||||
goto exit;
|
||||
kfree(src);
|
||||
return 0;
|
||||
}
|
||||
|
||||
reg = TASDEVICE_REG(src[3], src[4], src[5]);
|
||||
|
|
@ -1608,7 +1608,7 @@ static ssize_t acoustic_ctl_write(struct file *file,
|
|||
dev_err(priv->dev, "i2c communication error.\n");
|
||||
else
|
||||
ret = count;
|
||||
exit:
|
||||
|
||||
kfree(src);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -847,6 +847,16 @@ static const struct platform_device_id board_ids[] = {
|
|||
SOF_ES8336_SPEAKERS_EN_GPIO1_QUIRK |
|
||||
SOF_ES8336_JD_INVERTED),
|
||||
},
|
||||
{
|
||||
.name = "nvl_es83x6_c1_h02",
|
||||
.driver_data = (kernel_ulong_t)(SOF_ES8336_SSP_CODEC(1) |
|
||||
SOF_NO_OF_HDMI_CAPTURE_SSP(2) |
|
||||
SOF_HDMI_CAPTURE_1_SSP(0) |
|
||||
SOF_HDMI_CAPTURE_2_SSP(2) |
|
||||
SOF_SSP_HDMI_CAPTURE_PRESENT |
|
||||
SOF_ES8336_SPEAKERS_EN_GPIO1_QUIRK |
|
||||
SOF_ES8336_JD_INVERTED),
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(platform, board_ids);
|
||||
|
|
|
|||
|
|
@ -915,6 +915,13 @@ static const struct platform_device_id board_ids[] = {
|
|||
/* SSP 0 and SSP 2 are used for HDMI IN */
|
||||
SOF_SSP_MASK_HDMI_CAPTURE(0x5)),
|
||||
},
|
||||
{
|
||||
.name = "nvl_rt5682_c1_h02",
|
||||
.driver_data = (kernel_ulong_t)(SOF_RT5682_MCLK_EN |
|
||||
SOF_SSP_PORT_CODEC(1) |
|
||||
/* SSP 0 and SSP 2 are used for HDMI IN */
|
||||
SOF_SSP_MASK_HDMI_CAPTURE(0x5)),
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(platform, board_ids);
|
||||
|
|
|
|||
|
|
@ -222,6 +222,12 @@ static const struct platform_device_id board_ids[] = {
|
|||
/* SSP 0 and SSP 2 are used for HDMI IN */
|
||||
SOF_HDMI_PLAYBACK_PRESENT),
|
||||
},
|
||||
{
|
||||
.name = "nvl_lt6911_hdmi_ssp",
|
||||
.driver_data = (kernel_ulong_t)(SOF_SSP_MASK_HDMI_CAPTURE(0x5) |
|
||||
/* SSP 0 and SSP 2 are used for HDMI IN */
|
||||
SOF_HDMI_PLAYBACK_PRESENT),
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(platform, board_ids);
|
||||
|
|
|
|||
|
|
@ -16,12 +16,24 @@ static const struct snd_soc_acpi_codecs nvl_essx_83x6 = {
|
|||
.codecs = { "ESSX8316", "ESSX8326", "ESSX8336"},
|
||||
};
|
||||
|
||||
static const struct snd_soc_acpi_codecs nvl_lt6911_hdmi = {
|
||||
.num_codecs = 1,
|
||||
.codecs = {"INTC10B0"}
|
||||
};
|
||||
|
||||
static const struct snd_soc_acpi_codecs nvl_rt5682_rt5682s_hp = {
|
||||
.num_codecs = 2,
|
||||
.codecs = {RT5682_ACPI_HID, RT5682S_ACPI_HID},
|
||||
};
|
||||
|
||||
struct snd_soc_acpi_mach snd_soc_acpi_intel_nvl_machines[] = {
|
||||
{
|
||||
.comp_ids = &nvl_essx_83x6,
|
||||
.drv_name = "nvl_es83x6_c1_h02",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &nvl_lt6911_hdmi,
|
||||
.sof_tplg_filename = "sof-nvl-es83x6-ssp1-hdmi-ssp02.tplg",
|
||||
},
|
||||
{
|
||||
.comp_ids = &nvl_essx_83x6,
|
||||
.drv_name = "sof-essx8336",
|
||||
|
|
@ -30,6 +42,13 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_nvl_machines[] = {
|
|||
SND_SOC_ACPI_TPLG_INTEL_SSP_MSB |
|
||||
SND_SOC_ACPI_TPLG_INTEL_DMIC_NUMBER,
|
||||
},
|
||||
{
|
||||
.comp_ids = &nvl_rt5682_rt5682s_hp,
|
||||
.drv_name = "nvl_rt5682_c1_h02",
|
||||
.machine_quirk = snd_soc_acpi_codec_list,
|
||||
.quirk_data = &nvl_lt6911_hdmi,
|
||||
.sof_tplg_filename = "sof-nvl-rt5682-ssp1-hdmi-ssp02.tplg",
|
||||
},
|
||||
{
|
||||
.comp_ids = &nvl_rt5682_rt5682s_hp,
|
||||
.drv_name = "sof_rt5682",
|
||||
|
|
@ -37,6 +56,12 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_nvl_machines[] = {
|
|||
.tplg_quirk_mask = SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER |
|
||||
SND_SOC_ACPI_TPLG_INTEL_SSP_MSB,
|
||||
},
|
||||
/* place amp/hdmi-in only boards in the end of table */
|
||||
{
|
||||
.id = "INTC10B0",
|
||||
.drv_name = "nvl_lt6911_hdmi_ssp",
|
||||
.sof_tplg_filename = "sof-nvl-hdmi-ssp02.tplg",
|
||||
},
|
||||
{},
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_nvl_machines);
|
||||
|
|
|
|||
|
|
@ -281,8 +281,7 @@ static irqreturn_t xlnx_mm2s_irq_handler(int irq, void *arg)
|
|||
{
|
||||
u32 val;
|
||||
void __iomem *reg;
|
||||
struct device *dev = arg;
|
||||
struct xlnx_pcm_drv_data *adata = dev_get_drvdata(dev);
|
||||
struct xlnx_pcm_drv_data *adata = arg;
|
||||
|
||||
reg = adata->mmio + XLNX_MM2S_OFFSET + XLNX_AUD_STS;
|
||||
val = readl(reg);
|
||||
|
|
@ -300,8 +299,7 @@ static irqreturn_t xlnx_s2mm_irq_handler(int irq, void *arg)
|
|||
{
|
||||
u32 val;
|
||||
void __iomem *reg;
|
||||
struct device *dev = arg;
|
||||
struct xlnx_pcm_drv_data *adata = dev_get_drvdata(dev);
|
||||
struct xlnx_pcm_drv_data *adata = arg;
|
||||
|
||||
reg = adata->mmio + XLNX_S2MM_OFFSET + XLNX_AUD_STS;
|
||||
val = readl(reg);
|
||||
|
|
@ -637,7 +635,7 @@ static int xlnx_formatter_pcm_probe(struct platform_device *pdev)
|
|||
}
|
||||
ret = devm_request_irq(dev, aud_drv_data->mm2s_irq,
|
||||
xlnx_mm2s_irq_handler, 0,
|
||||
"xlnx_formatter_pcm_mm2s_irq", dev);
|
||||
"xlnx_formatter_pcm_mm2s_irq", aud_drv_data);
|
||||
if (ret) {
|
||||
dev_err(dev, "xlnx audio mm2s irq request failed\n");
|
||||
goto clk_err;
|
||||
|
|
@ -664,7 +662,7 @@ static int xlnx_formatter_pcm_probe(struct platform_device *pdev)
|
|||
ret = devm_request_irq(dev, aud_drv_data->s2mm_irq,
|
||||
xlnx_s2mm_irq_handler, 0,
|
||||
"xlnx_formatter_pcm_s2mm_irq",
|
||||
dev);
|
||||
aud_drv_data);
|
||||
if (ret) {
|
||||
dev_err(dev, "xlnx audio s2mm irq request failed\n");
|
||||
goto clk_err;
|
||||
|
|
|
|||
|
|
@ -677,6 +677,14 @@ static int parse_midi_2_0_endpoints(struct snd_usb_midi2_interface *umidi)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void free_ump_private_data(struct snd_ump_endpoint *ump)
|
||||
{
|
||||
struct snd_usb_midi2_ump *rmidi = ump->private_data;
|
||||
|
||||
if (rmidi)
|
||||
rmidi->ump = NULL;
|
||||
}
|
||||
|
||||
static void free_all_midi2_umps(struct snd_usb_midi2_interface *umidi)
|
||||
{
|
||||
struct snd_usb_midi2_ump *rmidi;
|
||||
|
|
@ -727,6 +735,7 @@ static int create_midi2_ump(struct snd_usb_midi2_interface *umidi,
|
|||
|
||||
ump->private_data = rmidi;
|
||||
ump->ops = &snd_usb_midi_v2_ump_ops;
|
||||
ump->private_free = free_ump_private_data;
|
||||
|
||||
rmidi->eps[STR_IN] = ep_in;
|
||||
rmidi->eps[STR_OUT] = ep_out;
|
||||
|
|
|
|||
|
|
@ -2367,6 +2367,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
|
|||
QUIRK_FLAG_SHARE_MEDIA_DEVICE | QUIRK_FLAG_ALIGN_TRANSFER),
|
||||
DEVICE_FLG(0x1038, 0x1294, /* SteelSeries Arctis Pro Wireless */
|
||||
QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE),
|
||||
DEVICE_FLG(0x1038, 0x2232, /* SteelSeries Arctis Nova 5 */
|
||||
QUIRK_FLAG_MIXER_GET_CUR_BROKEN),
|
||||
DEVICE_FLG(0x1101, 0x0003, /* Audioengine D1 */
|
||||
QUIRK_FLAG_GET_SAMPLE_RATE),
|
||||
DEVICE_FLG(0x12d1, 0x3a07, /* HUAWEI USB-C HEADSET */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user