ALSA: hda - remove controller dependency on i915 power well for SKL
PATCH 1/1 ALSA: hda - remove controller dependency on i915 power well for SKL
From: Libin Yang <[email protected]>
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.
--- sound/pci/hda/hda_intel.c | 9 +++++++-- sound/pci/hda/patch_hdmi.c | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-)
sound/pci/hda/hda_intel.c +7 -2
@@ -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" ,
@@ -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);
sound/pci/hda/patch_hdmi.c +1 -1
@@ -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))
Signature · 1 line
1.9.1
Takashi Iwai
AppliedAt Wed, 3 Jun 2015 09:30:15 +0800,
Quoted 10 lines · [email protected] wrote:
From: Libin Yang <[email protected]>
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 buslink_powerops.Signed-off-by Libin Yang <[email protected]>
Applied, thanks.
Takashi
Quoted 48 lines
--- sound/pci/hda/hda_intel.c | 9 +++++++-- sound/pci/hda/patch_hdmi.c | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-)sound/pci/hda/hda_intel.c +7
-2@@ -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" ,@@ -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);sound/pci/hda/patch_hdmi.c +1
-1@@ -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))Signature · 1 line
1.9.1