Commit 108b661c authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound fixes from Takashi Iwai:
 "A collection of small device-specific fixes:

   - ASoC Intel topology fixes for conflicting Bluetooth bits

   - Cleanups of ASoC drivers for superfluous NULL checks

   - Fix for error handling in the AC97 bus

   - A regression fix for TAS2781 speaker ID handling

   - HD-audio quirks"

* tag 'sound-6.19-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: hda/realtek: add HP Laptop 15s-eq1xxx mute LED quirk
  ALSA: hda/realtek: Add quirk for Acer Nitro AN517-55
  ALSA: hda/tas2781: properly initialize speaker_id for TAS2563
  ALSA: ac97: fix a double free in snd_ac97_controller_register()
  ASoC: sun4i-spdif: Add missing kerneldoc fields for sun4i_spdif_quirks
  ASoC: codecs: pm4125: clean up bind() device reference handling
  ASoC: soc_sdw_utils: drop bogus container_of() error handling
  ASoC: codecs: wcd937x: drop bogus container_of() error handling
  ASoC: codecs: pm4125: drop bogus container_of() error handling
  ASoC: SOF: Intel: add -bt tplg suffix if BT is present
  ASoC: Intel: sof_sdw: shift SSP BT mask bits.
parents f0b9d8eb 9ed7a282
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -298,6 +298,7 @@ static void ac97_adapter_release(struct device *dev)
	idr_remove(&ac97_adapter_idr, ac97_ctrl->nr);
	dev_dbg(&ac97_ctrl->adap, "adapter unregistered by %s\n",
		dev_name(ac97_ctrl->parent));
	kfree(ac97_ctrl);
}

static const struct device_type ac97_adapter_type = {
@@ -319,7 +320,9 @@ static int ac97_add_adapter(struct ac97_controller *ac97_ctrl)
		ret = device_register(&ac97_ctrl->adap);
		if (ret)
			put_device(&ac97_ctrl->adap);
	}
	} else
		kfree(ac97_ctrl);

	if (!ret) {
		list_add(&ac97_ctrl->controllers, &ac97_controllers);
		dev_dbg(&ac97_ctrl->adap, "adapter registered by %s\n",
@@ -361,14 +364,11 @@ struct ac97_controller *snd_ac97_controller_register(
	ret = ac97_add_adapter(ac97_ctrl);

	if (ret)
		goto err;
		return ERR_PTR(ret);
	ac97_bus_reset(ac97_ctrl);
	ac97_bus_scan(ac97_ctrl);

	return ac97_ctrl;
err:
	kfree(ac97_ctrl);
	return ERR_PTR(ret);
}
EXPORT_SYMBOL_GPL(snd_ac97_controller_register);

+2 −0
Original line number Diff line number Diff line
@@ -6321,6 +6321,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
	SND_PCI_QUIRK(0x1025, 0x1466, "Acer Aspire A515-56", ALC255_FIXUP_ACER_HEADPHONE_AND_MIC),
	SND_PCI_QUIRK(0x1025, 0x1534, "Acer Predator PH315-54", ALC255_FIXUP_ACER_MIC_NO_PRESENCE),
	SND_PCI_QUIRK(0x1025, 0x159c, "Acer Nitro 5 AN515-58", ALC2XX_FIXUP_HEADSET_MIC),
	SND_PCI_QUIRK(0x1025, 0x1597, "Acer Nitro 5 AN517-55", ALC2XX_FIXUP_HEADSET_MIC),
	SND_PCI_QUIRK(0x1025, 0x169a, "Acer Swift SFG16", ALC256_FIXUP_ACER_SFG16_MICMUTE_LED),
	SND_PCI_QUIRK(0x1025, 0x1826, "Acer Helios ZPC", ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2),
	SND_PCI_QUIRK(0x1025, 0x182c, "Acer Helios ZPD", ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2),
@@ -6508,6 +6509,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
	SND_PCI_QUIRK(0x103c, 0x863e, "HP Spectre x360 15-df1xxx", ALC285_FIXUP_HP_SPECTRE_X360_DF1),
	SND_PCI_QUIRK(0x103c, 0x86e8, "HP Spectre x360 15-eb0xxx", ALC285_FIXUP_HP_SPECTRE_X360_EB1),
	SND_PCI_QUIRK(0x103c, 0x86f9, "HP Spectre x360 13-aw0xxx", ALC285_FIXUP_HP_SPECTRE_X360_MUTE_LED),
	SND_PCI_QUIRK(0x103c, 0x8706, "HP Laptop 15s-eq1xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2),
	SND_PCI_QUIRK(0x103c, 0x8716, "HP Elite Dragonfly G2 Notebook PC", ALC285_FIXUP_HP_GPIO_AMP_INIT),
	SND_PCI_QUIRK(0x103c, 0x8720, "HP EliteBook x360 1040 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_AMP_INIT),
	SND_PCI_QUIRK(0x103c, 0x8724, "HP EliteBook 850 G7", ALC285_FIXUP_HP_GPIO_LED),
+3 −1
Original line number Diff line number Diff line
@@ -111,8 +111,10 @@ static int tas2781_read_acpi(struct tasdevice_priv *p, const char *hid)
	sub = acpi_get_subsystem_id(ACPI_HANDLE(physdev));
	if (IS_ERR(sub)) {
		/* No subsys id in older tas2563 projects. */
		if (!strncmp(hid, "INT8866", sizeof("INT8866")))
		if (!strncmp(hid, "INT8866", sizeof("INT8866"))) {
			p->speaker_id = -1;
			goto end_2563;
		}
		dev_err(p->dev, "Failed to get SUBSYS ID.\n");
		ret = PTR_ERR(sub);
		goto err;
+2 −15
Original line number Diff line number Diff line
@@ -1505,10 +1505,6 @@ static int pm4125_bind(struct device *dev)
	struct device_link *devlink;
	int ret;

	/* Initialize device pointers to NULL for safe cleanup */
	pm4125->rxdev = NULL;
	pm4125->txdev = NULL;

	/* Give the soundwire subdevices some more time to settle */
	usleep_range(15000, 15010);

@@ -1537,13 +1533,7 @@ static int pm4125_bind(struct device *dev)

	pm4125->sdw_priv[AIF1_CAP] = dev_get_drvdata(pm4125->txdev);
	pm4125->sdw_priv[AIF1_CAP]->pm4125 = pm4125;

	pm4125->tx_sdw_dev = dev_to_sdw_dev(pm4125->txdev);
	if (!pm4125->tx_sdw_dev) {
		dev_err(dev, "could not get txslave with matching of dev\n");
		ret = -EINVAL;
		goto error_put_tx;
	}

	/*
	 * As TX is the main CSR reg interface, which should not be suspended first.
@@ -1624,10 +1614,7 @@ static void pm4125_unbind(struct device *dev)
	device_link_remove(dev, pm4125->rxdev);
	device_link_remove(pm4125->rxdev, pm4125->txdev);

	/* Release device references acquired in bind */
	if (pm4125->txdev)
	put_device(pm4125->txdev);
	if (pm4125->rxdev)
	put_device(pm4125->rxdev);

	component_unbind_all(dev, pm4125);
+0 −5
Original line number Diff line number Diff line
@@ -2763,11 +2763,6 @@ static int wcd937x_bind(struct device *dev)
	wcd937x->sdw_priv[AIF1_CAP] = dev_get_drvdata(wcd937x->txdev);
	wcd937x->sdw_priv[AIF1_CAP]->wcd937x = wcd937x;
	wcd937x->tx_sdw_dev = dev_to_sdw_dev(wcd937x->txdev);
	if (!wcd937x->tx_sdw_dev) {
		dev_err(dev, "could not get txslave with matching of dev\n");
		ret = -EINVAL;
		goto err_put_txdev;
	}

	/*
	 * As TX is the main CSR reg interface, which should not be suspended first.
Loading