diff options
author | Takashi Iwai <tiwai@suse.de> | 2016-03-21 07:42:06 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2016-03-28 03:38:40 -0400 |
commit | 2c1c9b86c6b22dc0cbac3f4ca2c8272c472dc463 (patch) | |
tree | ffd9b872a834ef91aeac48bad7d9d9b73e46afd0 /sound/pci/hda/patch_hdmi.c | |
parent | 44bb6d0c3f690e60670517859925417bd7c42a22 (diff) |
ALSA: hda - Override HDMI setup_stream ops for Intel HSW+
Instead of checking at each time with is_haswell_plus() macro,
override the setup_stream ops itself for HSW+ chips.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/patch_hdmi.c')
-rw-r--r-- | sound/pci/hda/patch_hdmi.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index fcd207d3ce7d..985518891b99 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c | |||
@@ -864,9 +864,6 @@ static int hdmi_setup_stream(struct hda_codec *codec, hda_nid_t cvt_nid, | |||
864 | struct hdmi_spec *spec = codec->spec; | 864 | struct hdmi_spec *spec = codec->spec; |
865 | int err; | 865 | int err; |
866 | 866 | ||
867 | if (is_haswell_plus(codec)) | ||
868 | haswell_verify_D0(codec, cvt_nid, pin_nid); | ||
869 | |||
870 | err = spec->ops.pin_hbr_setup(codec, pin_nid, is_hbr_format(format)); | 867 | err = spec->ops.pin_hbr_setup(codec, pin_nid, is_hbr_format(format)); |
871 | 868 | ||
872 | if (err) { | 869 | if (err) { |
@@ -2307,6 +2304,14 @@ static void register_i915_notifier(struct hda_codec *codec) | |||
2307 | snd_hdac_i915_register_notifier(&spec->i915_audio_ops); | 2304 | snd_hdac_i915_register_notifier(&spec->i915_audio_ops); |
2308 | } | 2305 | } |
2309 | 2306 | ||
2307 | /* setup_stream ops override for HSW+ */ | ||
2308 | static int i915_hsw_setup_stream(struct hda_codec *codec, hda_nid_t cvt_nid, | ||
2309 | hda_nid_t pin_nid, u32 stream_tag, int format) | ||
2310 | { | ||
2311 | haswell_verify_D0(codec, cvt_nid, pin_nid); | ||
2312 | return hdmi_setup_stream(codec, cvt_nid, pin_nid, stream_tag, format); | ||
2313 | } | ||
2314 | |||
2310 | /* Intel Haswell and onwards; audio component with eld notifier */ | 2315 | /* Intel Haswell and onwards; audio component with eld notifier */ |
2311 | static int patch_i915_hsw_hdmi(struct hda_codec *codec) | 2316 | static int patch_i915_hsw_hdmi(struct hda_codec *codec) |
2312 | { | 2317 | { |
@@ -2338,6 +2343,8 @@ static int patch_i915_hsw_hdmi(struct hda_codec *codec) | |||
2338 | codec->depop_delay = 0; | 2343 | codec->depop_delay = 0; |
2339 | codec->auto_runtime_pm = 1; | 2344 | codec->auto_runtime_pm = 1; |
2340 | 2345 | ||
2346 | spec->ops.setup_stream = i915_hsw_setup_stream; | ||
2347 | |||
2341 | err = hdmi_parse_codec(codec); | 2348 | err = hdmi_parse_codec(codec); |
2342 | if (err < 0) { | 2349 | if (err < 0) { |
2343 | generic_spec_free(codec); | 2350 | generic_spec_free(codec); |