diff options
author | Josh Boyer <jwboyer@fedoraproject.org> | 2016-03-19 16:14:02 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@fedoraproject.org> | 2016-03-19 16:14:02 -0400 |
commit | 8e2d7107d3d6fd51c3077a959bd3a10f62f2a1b0 (patch) | |
tree | d5be6708648b7a4206167a30b9788971503c0758 /ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch | |
parent | 3f7b06675b02c8deeb4eec2a54bb359a541147a4 (diff) | |
download | kernel-8e2d7107d3d6fd51c3077a959bd3a10f62f2a1b0.tar.gz kernel-8e2d7107d3d6fd51c3077a959bd3a10f62f2a1b0.tar.xz kernel-8e2d7107d3d6fd51c3077a959bd3a10f62f2a1b0.zip |
Linux v4.5-6486-g6b5f04b6cf8e
- cgroup, libata, workqueue, block, akpm, usb merges
Diffstat (limited to 'ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch')
-rw-r--r-- | ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch b/ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch new file mode 100644 index 000000000..2224e7fd0 --- /dev/null +++ b/ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch @@ -0,0 +1,80 @@ +From 3fb329b2c3b6c2f009aa1255d2436ec49e49877f Mon Sep 17 00:00:00 2001 +From: Takashi Iwai <tiwai@suse.de> +Date: Fri, 18 Mar 2016 15:10:08 +0100 +Subject: [PATCH 1/3] ALSA: hda - Really restrict i915 notifier to HSW+ +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The commit [b62232d429fa: ALSA: hda - Limit i915 HDMI binding only for +HSW and later] tried to limit the usage of i915 audio notifier to the +recent Intel models and switch to the old method on pre-Haswell +models. However, it assumed that the i915 component binding hasn't +been done on such models, and the assumption was wrong: namely, +Baytrail had already the i915 component binding due to powerwell +control. Thus, the workaround wasn't applied to Baytrail. + +For fixing this properly, this patch introduces a new flag indicating +the usage of audio notifier and codec_has_acomp() refers to this flag +instead of checking the existence of audio component. + +Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com> +Cc: <stable@vger.kernel.org> # v4.5 +Signed-off-by: Takashi Iwai <tiwai@suse.de> +--- + sound/pci/hda/patch_hdmi.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c +index 49ee4e55dd16..8cdb804aa9cf 100644 +--- a/sound/pci/hda/patch_hdmi.c ++++ b/sound/pci/hda/patch_hdmi.c +@@ -152,6 +152,7 @@ struct hdmi_spec { + struct hda_pcm_stream pcm_playback; + + /* i915/powerwell (Haswell+/Valleyview+) specific */ ++ bool use_acomp_notifier; /* use i915 eld_notify callback for hotplug */ + struct i915_audio_component_audio_ops i915_audio_ops; + bool i915_bound; /* was i915 bound in this driver? */ + +@@ -159,8 +160,11 @@ struct hdmi_spec { + }; + + #ifdef CONFIG_SND_HDA_I915 +-#define codec_has_acomp(codec) \ +- ((codec)->bus->core.audio_component != NULL) ++static inline bool codec_has_acomp(struct hda_codec *codec) ++{ ++ struct hdmi_spec *spec = codec->spec; ++ return spec->use_acomp_notifier; ++} + #else + #define codec_has_acomp(codec) false + #endif +@@ -2248,12 +2252,18 @@ static int patch_generic_hdmi(struct hda_codec *codec) + codec->spec = spec; + hdmi_array_init(spec, 4); + ++#ifdef CONFIG_SND_HDA_I915 + /* Try to bind with i915 for Intel HSW+ codecs (if not done yet) */ +- if (!codec_has_acomp(codec) && +- (codec->core.vendor_id >> 16) == 0x8086 && +- is_haswell_plus(codec)) +- if (!snd_hdac_i915_init(&codec->bus->core)) +- spec->i915_bound = true; ++ if ((codec->core.vendor_id >> 16) == 0x8086 && ++ is_haswell_plus(codec)) { ++ if (!codec->bus->core.audio_component) ++ if (!snd_hdac_i915_init(&codec->bus->core)) ++ spec->i915_bound = true; ++ /* use i915 audio component notifier for hotplug */ ++ if (codec->bus->core.audio_component) ++ spec->use_acomp_notifier = true; ++ } ++#endif + + if (is_haswell_plus(codec)) { + intel_haswell_enable_all_pins(codec, true); +-- +2.5.0 + |