Commit 26e7a301 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'sound-6.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

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
...@@ -1993,7 +1993,10 @@ static const struct snd_pci_quirk force_connect_list[] = { ...@@ -1993,7 +1993,10 @@ static const struct snd_pci_quirk force_connect_list[] = {
SND_PCI_QUIRK(0x103c, 0x871a, "HP", 1), SND_PCI_QUIRK(0x103c, 0x871a, "HP", 1),
SND_PCI_QUIRK(0x103c, 0x8711, "HP", 1), SND_PCI_QUIRK(0x103c, 0x8711, "HP", 1),
SND_PCI_QUIRK(0x103c, 0x8715, "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(0x1462, 0xec94, "MS-7C94", 1),
SND_PCI_QUIRK(0x8086, 0x2060, "Intel NUC5CPYB", 1),
SND_PCI_QUIRK(0x8086, 0x2081, "Intel NUC 10", 1), SND_PCI_QUIRK(0x8086, 0x2081, "Intel NUC 10", 1),
{} {}
}; };
......
...@@ -9795,6 +9795,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { ...@@ -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, 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, 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, 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, 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, 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), SND_PCI_QUIRK(0x103c, 0x8519, "HP Spectre x360 15-df0xxx", ALC285_FIXUP_HP_SPECTRE_X360),
......
...@@ -455,9 +455,9 @@ static int tas2781_save_calibration(struct tasdevice_priv *tas_priv) ...@@ -455,9 +455,9 @@ static int tas2781_save_calibration(struct tasdevice_priv *tas_priv)
status = efi.get_variable(efi_name, &efi_guid, &attr, status = efi.get_variable(efi_name, &efi_guid, &attr,
&tas_priv->cali_data.total_sz, &tas_priv->cali_data.total_sz,
tas_priv->cali_data.data); tas_priv->cali_data.data);
if (status != EFI_SUCCESS)
return -EINVAL;
} }
if (status != EFI_SUCCESS)
return -EINVAL;
tmp_val = (unsigned int *)tas_priv->cali_data.data; tmp_val = (unsigned int *)tas_priv->cali_data.data;
...@@ -550,11 +550,6 @@ static void tasdev_fw_ready(const struct firmware *fmw, void *context) ...@@ -550,11 +550,6 @@ static void tasdev_fw_ready(const struct firmware *fmw, void *context)
tas2781_save_calibration(tas_priv); tas2781_save_calibration(tas_priv);
out: 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); mutex_unlock(&tas_priv->codec_lock);
if (fmw) if (fmw)
release_firmware(fmw); release_firmware(fmw);
...@@ -612,9 +607,13 @@ static void tas2781_hda_unbind(struct device *dev, ...@@ -612,9 +607,13 @@ static void tas2781_hda_unbind(struct device *dev,
{ {
struct tasdevice_priv *tas_priv = dev_get_drvdata(dev); struct tasdevice_priv *tas_priv = dev_get_drvdata(dev);
struct hda_component *comps = master_data; struct hda_component *comps = master_data;
comps = &comps[tas_priv->index];
if (comps[tas_priv->index].dev == dev) if (comps->dev == dev) {
memset(&comps[tas_priv->index], 0, sizeof(*comps)); comps->dev = NULL;
memset(comps->name, 0, sizeof(comps->name));
comps->playback_hook = NULL;
}
tasdevice_config_info_remove(tas_priv); tasdevice_config_info_remove(tas_priv);
tasdevice_dsp_remove(tas_priv); tasdevice_dsp_remove(tas_priv);
...@@ -675,14 +674,14 @@ static int tas2781_hda_i2c_probe(struct i2c_client *clt) ...@@ -675,14 +674,14 @@ static int tas2781_hda_i2c_probe(struct i2c_client *clt)
pm_runtime_put_autosuspend(tas_priv->dev); pm_runtime_put_autosuspend(tas_priv->dev);
tas2781_reset(tas_priv);
ret = component_add(tas_priv->dev, &tas2781_hda_comp_ops); ret = component_add(tas_priv->dev, &tas2781_hda_comp_ops);
if (ret) { if (ret) {
dev_err(tas_priv->dev, "Register component failed: %d\n", ret); dev_err(tas_priv->dev, "Register component failed: %d\n", ret);
pm_runtime_disable(tas_priv->dev); pm_runtime_disable(tas_priv->dev);
goto err;
} }
tas2781_reset(tas_priv);
err: err:
if (ret) if (ret)
tas2781_hda_remove(&clt->dev); tas2781_hda_remove(&clt->dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment