diff options
author | Mengdong Lin <mengdong.lin@intel.com> | 2015-04-29 17:43:43 +0800 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2015-04-29 12:27:54 +0200 |
commit | 2bd1f73f4242ee19d8c610bcffe6e7a813451ce0 (patch) | |
tree | 1c4ccdfb62472c78a8a5f7275bc6de92cc69cce4 | |
parent | 795614dde4d3550c3ef72469b1ba4d09d8635202 (diff) | |
download | op-kernel-dev-2bd1f73f4242ee19d8c610bcffe6e7a813451ce0.zip op-kernel-dev-2bd1f73f4242ee19d8c610bcffe6e7a813451ce0.tar.gz |
ALSA: hda - remove controller dependency on i915 power well for Baytrail/Braswell
For Baytrail (Valleyview) and Braswell (Cherryview), only the HDMI codec is
in the display power well while the HD-A controller isn't. So the controller
flag 'need_i915_power' is not set to release the display power after probe,
and the codec flag 'link_power_control" is set to request/release the display
power via bus link_power ops.
Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/pci/hda/hda_intel.c | 6 | ||||
-rw-r--r-- | sound/pci/hda/patch_hdmi.c | 9 |
2 files changed, 13 insertions, 2 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 8cd10b8..9253b71 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1900,8 +1900,10 @@ static int azx_probe_continue(struct azx *chip) * display codec needs the power and it can be released after probe. */ if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) { - /* Assume the controller needs the power by default */ - hda->need_i915_power = 1; + /* Baytral/Braswell controllers don't need this power */ + if (pci->device != 0x0f04 && pci->device != 0x2284) + hda->need_i915_power = 1; + #ifdef CONFIG_SND_HDA_I915 err = hda_i915_init(hda); diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index 5f44f60..a8016e1 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -2335,6 +2335,15 @@ static int patch_generic_hdmi(struct hda_codec *codec) intel_haswell_fixup_enable_dp12(codec); } + /* For Valleyview/Cherryview, only the display codec is in the display + * power well and can use link_power ops to request/release the power. + * For Haswell/Broadwell, the controller is also in the power well and + * can cover the codec power request, and so need not set this flag. + * For previous platforms, there is no such power well feature. + */ + if (is_valleyview_plus(codec)) + codec->core.link_power_control = 1; + if (is_haswell_plus(codec) || is_valleyview_plus(codec)) codec->depop_delay = 0; |