Commit 26e7a301 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound fixes from Takashi Iwai:
 "A collection of HD-audio quirks for TAS2781 codec and device-specific
  workarounds"

* tag 'sound-6.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: hda/tas2781: reset the amp before component_add
  ALSA: hda/tas2781: call cleanup functions only once
  ALSA: hda/tas2781: handle missing EFI calibration data
  ALSA: hda/tas2781: leave hda_component in usable state
  ALSA: hda/realtek: Apply mute LED quirk for HP15-db
  ALSA: hda/hdmi: add force-connect quirks for ASUSTeK Z170 variants
  ALSA: hda/hdmi: add force-connect quirk for NUC5CPYB
parents 595609b2 315deab2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1993,7 +1993,10 @@ static const struct snd_pci_quirk force_connect_list[] = {
	SND_PCI_QUIRK(0x103c, 0x871a, "HP", 1),
	SND_PCI_QUIRK(0x103c, 0x8711, "HP", 1),
	SND_PCI_QUIRK(0x103c, 0x8715, "HP", 1),
	SND_PCI_QUIRK(0x1043, 0x86ae, "ASUS", 1),  /* Z170 PRO */
	SND_PCI_QUIRK(0x1043, 0x86c7, "ASUS", 1),  /* Z170M PLUS */
	SND_PCI_QUIRK(0x1462, 0xec94, "MS-7C94", 1),
	SND_PCI_QUIRK(0x8086, 0x2060, "Intel NUC5CPYB", 1),
	SND_PCI_QUIRK(0x8086, 0x2081, "Intel NUC 10", 1),
	{}
};
+1 −0
Original line number Diff line number Diff line
@@ -9795,6 +9795,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
	SND_PCI_QUIRK(0x103c, 0x83b9, "HP Spectre x360", ALC269_FIXUP_HP_MUTE_LED_MIC3),
	SND_PCI_QUIRK(0x103c, 0x841c, "HP Pavilion 15-CK0xx", ALC269_FIXUP_HP_MUTE_LED_MIC3),
	SND_PCI_QUIRK(0x103c, 0x8497, "HP Envy x360", ALC269_FIXUP_HP_MUTE_LED_MIC3),
	SND_PCI_QUIRK(0x103c, 0x84ae, "HP 15-db0403ng", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2),
	SND_PCI_QUIRK(0x103c, 0x84da, "HP OMEN dc0019-ur", ALC295_FIXUP_HP_OMEN),
	SND_PCI_QUIRK(0x103c, 0x84e7, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3),
	SND_PCI_QUIRK(0x103c, 0x8519, "HP Spectre x360 15-df0xxx", ALC285_FIXUP_HP_SPECTRE_X360),
+10 −11
Original line number Diff line number Diff line
@@ -455,9 +455,9 @@ static int tas2781_save_calibration(struct tasdevice_priv *tas_priv)
		status = efi.get_variable(efi_name, &efi_guid, &attr,
			&tas_priv->cali_data.total_sz,
			tas_priv->cali_data.data);
	}
	if (status != EFI_SUCCESS)
		return -EINVAL;
	}

	tmp_val = (unsigned int *)tas_priv->cali_data.data;

@@ -550,11 +550,6 @@ static void tasdev_fw_ready(const struct firmware *fmw, void *context)
	tas2781_save_calibration(tas_priv);

out:
	if (tas_priv->fw_state == TASDEVICE_DSP_FW_FAIL) {
		/*If DSP FW fail, kcontrol won't be created */
		tasdevice_config_info_remove(tas_priv);
		tasdevice_dsp_remove(tas_priv);
	}
	mutex_unlock(&tas_priv->codec_lock);
	if (fmw)
		release_firmware(fmw);
@@ -612,9 +607,13 @@ static void tas2781_hda_unbind(struct device *dev,
{
	struct tasdevice_priv *tas_priv = dev_get_drvdata(dev);
	struct hda_component *comps = master_data;
	comps = &comps[tas_priv->index];

	if (comps[tas_priv->index].dev == dev)
		memset(&comps[tas_priv->index], 0, sizeof(*comps));
	if (comps->dev == dev) {
		comps->dev = NULL;
		memset(comps->name, 0, sizeof(comps->name));
		comps->playback_hook = NULL;
	}

	tasdevice_config_info_remove(tas_priv);
	tasdevice_dsp_remove(tas_priv);
@@ -675,14 +674,14 @@ static int tas2781_hda_i2c_probe(struct i2c_client *clt)

	pm_runtime_put_autosuspend(tas_priv->dev);

	tas2781_reset(tas_priv);

	ret = component_add(tas_priv->dev, &tas2781_hda_comp_ops);
	if (ret) {
		dev_err(tas_priv->dev, "Register component failed: %d\n", ret);
		pm_runtime_disable(tas_priv->dev);
		goto err;
	}

	tas2781_reset(tas_priv);
err:
	if (ret)
		tas2781_hda_remove(&clt->dev);