Merge branch 'for-linus' into for-next
authorTakashi Iwai <tiwai@suse.de>
Fri, 12 Jun 2015 06:10:20 +0000 (08:10 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 12 Jun 2015 06:10:20 +0000 (08:10 +0200)
Yet another non-trivial conflicts resolution for the recent HD-audio fix.

Conflicts:
sound/pci/hda/hda_intel.c

Signed-off-by: Takashi Iwai <tiwai@suse.de>
1  2 
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_intel.c
sound/pci/hda/hda_local.h

Simple merge
@@@ -1973,23 -1855,22 +1973,32 @@@ static int azx_probe_continue(struct az
        int dev = chip->dev_index;
        int err;
  
 -      /* Request power well for Haswell HDA controller and codec */
 +      hda->probe_continued = 1;
 +
 +      /* Request display power well for the HDA controller or codec. For
 +       * Haswell/Broadwell, both the display HDA controller and codec need
 +       * this power. For other platforms, like Baytrail/Braswell, only the
 +       * display codec needs the power and it can be released after probe.
 +       */
        if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) {
 -#ifdef CONFIG_SND_HDA_I915
 -              err = hda_i915_init(hda);
 +              /* HSW/BDW controllers need this power */
 +              if (CONTROLLER_IN_GPU(pci))
 +                      hda->need_i915_power = 1;
 +
 +              err = snd_hdac_i915_init(bus);
-               if (err < 0)
-                       goto skip_i915;
+               if (err < 0) {
+                       /* if the controller is bound only with HDMI/DP
+                        * (for HSW and BDW), we need to abort the probe;
+                        * for other chips, still continue probing as other
+                        * codecs can be on the same link.
+                        */
+                       if (CONTROLLER_IN_GPU(pci))
+                               goto out_free;
+                       else
+                               goto skip_i915;
+               }
 -              err = hda_display_power(hda, true);
 +
 +              err = snd_hdac_display_power(bus, true);
                if (err < 0) {
                        dev_err(chip->card->dev,
                                "Cannot turn on display power on i915\n");
Simple merge