aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2015-06-10 06:03:49 -0400
committerTakashi Iwai <tiwai@suse.de>2015-06-11 00:51:19 -0400
commitbf06848bdbe549175d25d2327ab9f37d4bd556b7 (patch)
tree0f415ed593f5168966068ab787b2d9fb9c3701ef /sound/pci
parent98a226ed21949601b270f7ea20abc9f72f7b0be9 (diff)
ALSA: hda - Continue probing even if i915 binding fails
Currently snd-hda-intel driver aborts the probing of Intel HD-audio controller with i915 power well management when binding with i915 driver via hda_i915_init() fails. This is no big problem for Haswell and Broadwell where the HD-audio controllers are dedicated to HDMI/DP, thus i915 link is mandatory. However, Skylake, Baytrail and Braswell have only one controller and both HDMI/DP and analog codecs share the same bus. Thus, even if HDMI/DP isn't usable, we should keep the controller working for other codecs. For fixing this, this patch simply allows continuing the probing even if hda_i915_init() call fails. This may leave stale sound components for HDMI/DP devices that are unbound with graphics. We could abort the probing selectively, but from the code simplicity POV, it's better to continue in all cases. Reported-by: Libin Yang <libin.yang@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r--sound/pci/hda/hda_intel.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index fea198c58196..8a0af6770e1d 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -1855,7 +1855,7 @@ static int azx_probe_continue(struct azx *chip)
1855#ifdef CONFIG_SND_HDA_I915 1855#ifdef CONFIG_SND_HDA_I915
1856 err = hda_i915_init(hda); 1856 err = hda_i915_init(hda);
1857 if (err < 0) 1857 if (err < 0)
1858 goto out_free; 1858 goto skip_i915;
1859 err = hda_display_power(hda, true); 1859 err = hda_display_power(hda, true);
1860 if (err < 0) { 1860 if (err < 0) {
1861 dev_err(chip->card->dev, 1861 dev_err(chip->card->dev,
@@ -1865,6 +1865,7 @@ static int azx_probe_continue(struct azx *chip)
1865#endif 1865#endif
1866 } 1866 }
1867 1867
1868 skip_i915:
1868 err = azx_first_init(chip); 1869 err = azx_first_init(chip);
1869 if (err < 0) 1870 if (err < 0)
1870 goto out_free; 1871 goto out_free;