Skip to content

Commit

Permalink
ALSA: hda - remove controller dependency on i915 power well for SKL
Browse files Browse the repository at this point in the history
For SKL, 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: Libin Yang <libin.yang@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Libin Yang authored and Takashi Iwai committed Jun 3, 2015
1 parent 0cbf324 commit 03b135c
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
9 changes: 7 additions & 2 deletions sound/pci/hda/hda_intel.c
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,11 @@ enum {
#define use_vga_switcheroo(chip) 0
#endif

#define CONTROLLER_IN_GPU(pci) (((pci)->device == 0x0a0c) || \
((pci)->device == 0x0c0c) || \
((pci)->device == 0x0d0c) || \
((pci)->device == 0x160c))

static char *driver_short_names[] = {
[AZX_DRIVER_ICH] = "HDA Intel",
[AZX_DRIVER_PCH] = "HDA Intel PCH",
Expand Down Expand Up @@ -1976,8 +1981,8 @@ 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) {
/* Baytral/Braswell controllers don't need this power */
if (pci->device != 0x0f04 && pci->device != 0x2284)
/* HSW/BDW controllers need this power */
if (CONTROLLER_IN_GPU(pci))
hda->need_i915_power = 1;

err = snd_hdac_i915_init(bus);
Expand Down
2 changes: 1 addition & 1 deletion sound/pci/hda/patch_hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -2339,7 +2339,7 @@ static int patch_generic_hdmi(struct hda_codec *codec)
* 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))
if (is_valleyview_plus(codec) || is_skylake(codec))
codec->core.link_power_control = 1;

if (is_haswell_plus(codec) || is_valleyview_plus(codec))
Expand Down

0 comments on commit 03b135c

Please sign in to comment.