aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_i915.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2014-06-13 15:14:34 +0200
committerTakashi Iwai <tiwai@suse.de>2014-06-16 10:34:06 +0200
commit74b0c2d75fb4cc89173944e6d8f9eb47aca0c343 (patch)
treefa5d2e9b60d699e7d22e9f1b128f0299452e20a4 /sound/pci/hda/hda_i915.c
parentLinux 3.16-rc1 (diff)
downloadlinux-dev-74b0c2d75fb4cc89173944e6d8f9eb47aca0c343.tar.xz
linux-dev-74b0c2d75fb4cc89173944e6d8f9eb47aca0c343.zip
drm/i915, HD-audio: Don't continue probing when nomodeset is given
When a machine is booted with nomodeset option, i915 driver skips the whole initialization. Meanwhile, HD-audio tries to bind wth i915 just by request_symbol() without knowing that the initialization was skipped, and eventually it hits WARN_ON() in i915_request_power_well() and i915_release_power_well() wrongly but still continues probing, even though it doesn't work at all. In this patch, both functions are changed to return an error in case of uninitialized state instead of WARN_ON(), so that HD-audio driver can give up HDMI controller initialization at the right time. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: <stable@vger.kernel.org> [3.15] Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_i915.c')
-rw-r--r--sound/pci/hda/hda_i915.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sound/pci/hda/hda_i915.c b/sound/pci/hda/hda_i915.c
index 9d07e4edacdb..e9e8a4a4a9a1 100644
--- a/sound/pci/hda/hda_i915.c
+++ b/sound/pci/hda/hda_i915.c
@@ -22,20 +22,20 @@
#include <drm/i915_powerwell.h>
#include "hda_i915.h"
-static void (*get_power)(void);
-static void (*put_power)(void);
+static int (*get_power)(void);
+static int (*put_power)(void);
-void hda_display_power(bool enable)
+int hda_display_power(bool enable)
{
if (!get_power || !put_power)
- return;
+ return -ENODEV;
pr_debug("HDA display power %s \n",
enable ? "Enable" : "Disable");
if (enable)
- get_power();
+ return get_power();
else
- put_power();
+ return put_power();
}
int hda_i915_init(void)