+++ /dev/null
-From 6603249dcdbb6aab0b726bdf372d6f20c0d2d611 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <tiwai@suse.de>
-Date: Tue, 1 Dec 2015 16:49:35 +0100
-Subject: ALSA: hda - Enable audio component for old Intel PCH devices
-
-From: Takashi Iwai <tiwai@suse.de>
-
-commit 6603249dcdbb6aab0b726bdf372d6f20c0d2d611 upstream.
-
-As i915 graphics driver provides the notification via audio component,
-not only the currently implemented HSW+ and VLV+ platforms but also
-all other PCH-based platforms (e.g. Cougar Point, Panther Point, etc)
-can use this infrastructure. It'll improve the reliability and the
-power consumption significantly, especially once when we implement the
-ELD notification via component. As a preliminary, this patch enables
-the usage of audio component for all PCH platforms.
-
-The HDA controller just needs to set AZX_DCAPS_I915_POWERWELL flag
-appropriately. The name of the flag is a bit confusing, but this
-actually works even on the chips without the powerwell but accesses
-only the other component ops.
-
-In the HDMI/DP codec driver side, we just need to register/unregister
-the notifier for such chips. This can be identified by checking the
-audio_component field in the assigned hdac_bus.
-
-One caveat is that PCH for Haswell and Broadwell must not be bound
-with i915 audio component, as there are dedicated HD-audio HDMI
-controllers on these platforms. Ditto for Poulsbo and Oaktrail as
-they use gma500 graphics, not i915.
-
-Signed-off-by: Takashi Iwai <tiwai@suse.de>
-Cc: Kouta Okamoto <kouta.okamoto@toshiba.co.jp>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- sound/pci/hda/hda_intel.c | 14 ++++++++++----
- sound/pci/hda/patch_hdmi.c | 6 ++++--
- 2 files changed, 14 insertions(+), 6 deletions(-)
-
---- a/sound/pci/hda/hda_intel.c
-+++ b/sound/pci/hda/hda_intel.c
-@@ -286,13 +286,19 @@ enum {
- (AZX_DCAPS_OLD_SSYNC | AZX_DCAPS_NO_ALIGN_BUFSIZE)
-
- /* quirks for Intel PCH */
--#define AZX_DCAPS_INTEL_PCH_NOPM \
-+#define AZX_DCAPS_INTEL_PCH_BASE \
- (AZX_DCAPS_NO_ALIGN_BUFSIZE | AZX_DCAPS_COUNT_LPIB_DELAY |\
- AZX_DCAPS_REVERSE_ASSIGN | AZX_DCAPS_SNOOP_TYPE(SCH))
-
-+/* PCH up to IVB; bound with i915 audio component for HDMI, no runtime PM */
-+#define AZX_DCAPS_INTEL_PCH_NOPM \
-+ (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_I915_POWERWELL)
-+
-+/* PCH for HSW/BDW; with runtime PM, but no i915 binding */
- #define AZX_DCAPS_INTEL_PCH \
-- (AZX_DCAPS_INTEL_PCH_NOPM | AZX_DCAPS_PM_RUNTIME)
-+ (AZX_DCAPS_INTEL_PCH_BASE | AZX_DCAPS_PM_RUNTIME)
-
-+/* HSW HDMI */
- #define AZX_DCAPS_INTEL_HASWELL \
- (/*AZX_DCAPS_ALIGN_BUFSIZE |*/ AZX_DCAPS_COUNT_LPIB_DELAY |\
- AZX_DCAPS_PM_RUNTIME | AZX_DCAPS_I915_POWERWELL |\
-@@ -2271,10 +2277,10 @@ static const struct pci_device_id azx_id
- .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_NOPM },
- /* Poulsbo */
- { PCI_DEVICE(0x8086, 0x811b),
-- .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_NOPM },
-+ .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE },
- /* Oaktrail */
- { PCI_DEVICE(0x8086, 0x080a),
-- .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_NOPM },
-+ .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE },
- /* BayTrail */
- { PCI_DEVICE(0x8086, 0x0f04),
- .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BAYTRAIL },
---- a/sound/pci/hda/patch_hdmi.c
-+++ b/sound/pci/hda/patch_hdmi.c
-@@ -154,6 +154,8 @@ struct hdmi_spec {
- struct i915_audio_component_audio_ops i915_audio_ops;
- };
-
-+#define codec_has_acomp(codec) \
-+ ((codec)->bus->core.audio_component != NULL)
-
- struct hdmi_audio_infoframe {
- u8 type; /* 0x84 */
-@@ -2222,7 +2224,7 @@ static void generic_hdmi_free(struct hda
- struct hdmi_spec *spec = codec->spec;
- int pin_idx;
-
-- if (is_haswell_plus(codec) || is_valleyview_plus(codec))
-+ if (codec_has_acomp(codec))
- snd_hdac_i915_register_notifier(NULL);
-
- for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) {
-@@ -2395,7 +2397,7 @@ static int patch_generic_hdmi(struct hda
- is_broxton(codec))
- codec->core.link_power_control = 1;
-
-- if (is_haswell_plus(codec) || is_valleyview_plus(codec)) {
-+ if (codec_has_acomp(codec)) {
- codec->depop_delay = 0;
- spec->i915_audio_ops.audio_ptr = codec;
- spec->i915_audio_ops.pin_eld_notify = intel_pin_eld_notify;