Merge tag 'sound-fix-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 3 Jan 2019 21:08:00 +0000 (13:08 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 3 Jan 2019 21:08:00 +0000 (13:08 -0800)
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

sound/pci/hda/Kconfig
sound/pci/hda/hda_controller.h
sound/pci/hda/hda_intel.c
sound/pci/hda/hda_tegra.c
sound/pci/hda/patch_realtek.c
sound/soc/intel/Kconfig

index 0d38c006e1824795eba8f8427f27e0fec9db5a00..4235907b785891326a479023f3433d2afd9b231e 100644 (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
index e0c3fcbaa02843586feed1db7dd10bc32d48b55f..7185ed574b412fc8786a2ca15316347925e3c1d7 100644 (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 */
index e42cc22309771c5ccca02437cc2f6d911abbacd9..e784130ea4e0eb2d7fec5357fb86872fb44292fc 100644 (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 },
index 83befd8d43e83fb399836b9ef094a2306740ac32..97a176d817a0cbd7feb49283f24415f1e9196b27 100644 (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);
 
index a4f4a9dd488df28a6f1aee4548d1ae68aa61c7cd..aee4cbd29d53cd4aaff517a11126c9177e4a41fc 100644 (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,
index 2fd1b61e8331dd68d0c1ffa1d81420b6a9e71d37..99a62ba409df83424bc84031f067e4e70a0db03d 100644 (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/