sound fixes for 4.21-rc1 (or whatever the next)

Among a few HD-audio fixes, the only significant one is the
 regression fix on some machines like Dell XPS due to the default
 binding changes.  We ended up reverting the whole since the fix for
 ASoC HD-audio driver won't be available immediately.
 -----BEGIN PGP SIGNATURE-----
 
 iQJCBAABCAAsFiEEIXTw5fNLNI7mMiVaLtJE4w1nLE8FAlwtD5IOHHRpd2FpQHN1
 c2UuZGUACgkQLtJE4w1nLE+9VBAAnOS5eOOyQw4TUDAUHjiOaVPqVG53+W9p8a8J
 nGIv024PihDtL53TrTw6d8xDJfav2BrfUFyifOD12/wwn9D5Y06E6xMbV1/2aEgS
 0uLl6TDQo1/BKhu/7MyNpmghcwkpSEGzjDOtQb8JI+j6FwCCl7+ub7ErvP1ytYLe
 5ikTvW1f2jFAf3Hg+4SPkjPT7NOAwfsvbMDXE0BcxrNJ9+feqPL9DtNBerVgVIZ0
 nBXyl9GLGwsNV/BBRoWtALGdsvScjVrtXvmFd0xxKH9kdJj9kZHNcJfhlL2LMlap
 D2cUaUpHj1wHDwlhKSvslkXTZjtpjIjDfdeLRCqofj+02puSLEzSqdII30vVmAUy
 wj5IgwuCzAH5yNSC2/AoQjACa84bDhAuRUuidMOkZD2zqhr7/kSfqKf8aXAnHGrr
 gngE70cR2fK+bU4d4DR+5lxgbvYm/9HTsiSYqGSYhSe56NylA6BYit4RZV2wu1N5
 Pbw/mrMMnZ3FL4Pn/koC2mwdjPyGDn3lAIkRH6FISuSvK19/9qqFRyzqZgtHXPbV
 hmZ0zweDs3p7zAMQapmnqQzYjOp/5PJSyhLvx4lhFgP8gqWwaJN9jvHTHP0OyN9/
 3lBxgWKjGX/l6R9th4sau1Bl6DybV1r2KGB+HZd+LtXLb2GYKoTUqDrBJQowP5zT
 Bh6PPyE=
 =93xe
 -----END PGP SIGNATURE-----

Merge tag 'sound-fix-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
 "Among a few HD-audio fixes, the only significant one is the regression
  fix on some machines like Dell XPS due to the default binding changes.
  We ended up reverting the whole since the fix for ASoC HD-audio driver
  won't be available immediately"

* tag 'sound-fix-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: hda - Revert DSP detection on legacy HD-audio driver
  ALSA: hda/tegra: clear pending irq handlers
  ALSA: hda/realtek: Enable the headset mic auto detection for ASUS laptops
This commit is contained in:
Linus Torvalds 2019-01-03 13:08:00 -08:00
commit 810574ca7e
6 changed files with 11 additions and 117 deletions

View File

@ -226,68 +226,6 @@ config SND_HDA_POWER_SAVE_DEFAULT
The default time-out value in seconds for HD-audio automatic
power-save mode. 0 means to disable the power-save mode.
if SND_HDA_INTEL
# The options below should not be enabled by distributions or
# users. They are selected by Intel/Skylake or SOF drivers when they
# register for a PCI ID which is also handled by the HDAudio legacy
# driver. When this option is selected and the DSP is detected based on
# the PCI class/subclass/prog-if, the probe of the HDAudio legacy
# aborts. This mechanism removes the need for distributions to use
# blacklists. It can be bypassed with module parameters should the
# Intel/Skylake or SOF drivers fail to handle a specific platform.
config SND_HDA_INTEL_DSP_DETECTION_SKL
bool
help
This option is selected by SOF or SST drivers, not users or distros.
It enables DSP detection based on PCI class information for
Skylake machines.
config SND_HDA_INTEL_DSP_DETECTION_APL
bool
help
This option is selected by SOF or SST drivers, not users or distros.
It enables DSP detection based on PCI class information for
Broxton/ApolloLake machines
config SND_HDA_INTEL_DSP_DETECTION_KBL
bool
help
This option is selected by SOF or SST drivers, not users or distros.
It enables DSP detection based on PCI class information for
KabyLake machines
config SND_HDA_INTEL_DSP_DETECTION_GLK
bool
help
This option is selected by SOF or SST drivers, not users or distros.
It enables DSP detection based on PCI class information for
GeminiLake machines
config SND_HDA_INTEL_DSP_DETECTION_CNL
bool
help
This option is selected by SOF or SST drivers, not users or distros.
It enables DSP detection based on PCI class information for
CannonLake machines
config SND_HDA_INTEL_DSP_DETECTION_CFL
bool
help
This option is selected by SOF or SST drivers, not users or distros.
It enables DSP detection based on PCI class information for
CoffeeLake machines
config SND_HDA_INTEL_DSP_DETECTION_ICL
bool
help
This option is selected by SOF or SST drivers, not users or distros.
It enables DSP detection based on PCI class information for
IceLake machines
endif ## SND_HDA_INTEL
endif
endmenu

View File

@ -37,7 +37,7 @@
#else
#define AZX_DCAPS_I915_COMPONENT 0 /* NOP */
#endif
#define AZX_DCAPS_INTEL_SHARED (1 << 14) /* shared with ASoC */
/* 14 unused */
#define AZX_DCAPS_CTX_WORKAROUND (1 << 15) /* X-Fi workaround */
#define AZX_DCAPS_POSFIX_LPIB (1 << 16) /* Use LPIB as default */
/* 17 unused */

View File

@ -172,9 +172,6 @@ module_param_array(beep_mode, bool, NULL, 0444);
MODULE_PARM_DESC(beep_mode, "Select HDA Beep registration mode "
"(0=off, 1=on) (default=1).");
#endif
static int skl_pci_binding;
module_param_named(pci_binding, skl_pci_binding, int, 0444);
MODULE_PARM_DESC(pci_binding, "PCI binding (0=auto, 1=only legacy, 2=only asoc");
#ifdef CONFIG_PM
static int param_set_xint(const char *val, const struct kernel_param *kp);
@ -360,7 +357,6 @@ enum {
AZX_DCAPS_NO_64BIT |\
AZX_DCAPS_4K_BDLE_BOUNDARY | AZX_DCAPS_SNOOP_OFF)
#define AZX_DCAPS_INTEL_DSP_DETECTION(conf) (IS_ENABLED(CONFIG_SND_HDA_INTEL_DSP_DETECTION_##conf) ? AZX_DCAPS_INTEL_SHARED : 0)
/*
* vga_switcheroo support
*/
@ -2052,28 +2048,6 @@ static int azx_probe(struct pci_dev *pci,
bool schedule_probe;
int err;
/* check if this driver can be used on SKL+ Intel platforms */
if (pci_id->driver_data & AZX_DCAPS_INTEL_SHARED) {
switch (skl_pci_binding) {
case SND_SKL_PCI_BIND_AUTO:
if (pci->class != 0x040300) {
dev_info(&pci->dev, "The DSP is enabled on this platform, aborting probe\n");
return -ENODEV;
}
dev_info(&pci->dev, "No DSP detected, continuing HDaudio legacy probe\n");
break;
case SND_SKL_PCI_BIND_LEGACY:
dev_info(&pci->dev, "Module parameter forced binding with HDaudio legacy, bypassed detection logic\n");
break;
case SND_SKL_PCI_BIND_ASOC:
dev_info(&pci->dev, "Module parameter forced binding with SKL+ ASoC driver, aborting probe\n");
return -ENODEV;
default:
dev_err(&pci->dev, "invalid value for skl_pci_binding module parameter, ignored\n");
break;
}
}
if (dev >= SNDRV_CARDS)
return -ENODEV;
if (!enable[dev]) {
@ -2380,48 +2354,34 @@ static const struct pci_device_id azx_ids[] = {
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE },
/* Sunrise Point-LP */
{ PCI_DEVICE(0x8086, 0x9d70),
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE |
AZX_DCAPS_INTEL_DSP_DETECTION(SKL)
},
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE },
/* Kabylake */
{ PCI_DEVICE(0x8086, 0xa171),
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE },
/* Kabylake-LP */
{ PCI_DEVICE(0x8086, 0x9d71),
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE |
AZX_DCAPS_INTEL_DSP_DETECTION(KBL)
},
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE },
/* Kabylake-H */
{ PCI_DEVICE(0x8086, 0xa2f0),
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE },
/* Coffelake */
{ PCI_DEVICE(0x8086, 0xa348),
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE |
AZX_DCAPS_INTEL_DSP_DETECTION(CFL)
},
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
/* Cannonlake */
{ PCI_DEVICE(0x8086, 0x9dc8),
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE |
AZX_DCAPS_INTEL_DSP_DETECTION(CNL)
},
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
/* Icelake */
{ PCI_DEVICE(0x8086, 0x34c8),
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE |
AZX_DCAPS_INTEL_DSP_DETECTION(ICL)
},
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
/* Broxton-P(Apollolake) */
{ PCI_DEVICE(0x8086, 0x5a98),
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON |
AZX_DCAPS_INTEL_DSP_DETECTION(APL)
},
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON },
/* Broxton-T */
{ PCI_DEVICE(0x8086, 0x1a98),
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON },
/* Gemini-Lake */
{ PCI_DEVICE(0x8086, 0x3198),
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON |
AZX_DCAPS_INTEL_DSP_DETECTION(GLK)
},
.driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_BROXTON },
/* Haswell */
{ PCI_DEVICE(0x8086, 0x0a0c),
.driver_data = AZX_DRIVER_HDMI | AZX_DCAPS_INTEL_HASWELL },

View File

@ -234,10 +234,12 @@ static int hda_tegra_suspend(struct device *dev)
struct snd_card *card = dev_get_drvdata(dev);
struct azx *chip = card->private_data;
struct hda_tegra *hda = container_of(chip, struct hda_tegra, chip);
struct hdac_bus *bus = azx_bus(chip);
snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
azx_stop_chip(chip);
synchronize_irq(bus->irq);
azx_enter_link_reset(chip);
hda_tegra_disable_clocks(hda);

View File

@ -6501,7 +6501,7 @@ static const struct hda_fixup alc269_fixups[] = {
[ALC294_FIXUP_ASUS_HEADSET_MIC] = {
.type = HDA_FIXUP_PINS,
.v.pins = (const struct hda_pintbl[]) {
{ 0x19, 0x01a1113c }, /* use as headset mic, without its own jack detect */
{ 0x19, 0x01a1103c }, /* use as headset mic */
{ }
},
.chained = true,

View File

@ -188,12 +188,6 @@ config SND_SOC_INTEL_SKYLAKE_COMMON
select SND_SOC_TOPOLOGY
select SND_SOC_INTEL_SST
select SND_SOC_HDAC_HDA if SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC
select SND_HDA_INTEL_DSP_DETECTION_SKL if SND_SOC_INTEL_SKL
select SND_HDA_INTEL_DSP_DETECTION_APL if SND_SOC_INTEL_APL
select SND_HDA_INTEL_DSP_DETECTION_KBL if SND_SOC_INTEL_KBL
select SND_HDA_INTEL_DSP_DETECTION_GLK if SND_SOC_INTEL_GLK
select SND_HDA_INTEL_DSP_DETECTION_CNL if SND_SOC_INTEL_CNL
select SND_HDA_INTEL_DSP_DETECTION_CFL if SND_SOC_INTEL_CFL
select SND_SOC_ACPI_INTEL_MATCH
help
If you have a Intel Skylake/Broxton/ApolloLake/KabyLake/