Skip to contentSkip to conversation

HDA: Intel: enable automatic runtime pm for HDMI codecs by default

PATCH Applied [email protected] 2 participants 2 messages Jun 9, 2015 Sound

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 HDA: Intel: enable automatic runtime pm for HDMI codecs by default

From: "Lu, Han" <[email protected]>

Enable runtime PM of the HDMI audio codec on the latest Intel platforms. So the HD-A controller or HDMI codec can suspend when idle timeout by default and release the GFX power well.
The patch influences HSW/BDW/BYT/BSW/SKL. Eariler platforms and third party analog codecs will not be influenced.

sound/pci/hda/hda_codec.c +3 -0
index 54380ed..e9f274b6 100644
@@ -3495,6 +3495,9 @@ static void codec_set_power_save(struct hda_codec *codec, int delay)
 {
 	struct device *dev = hda_codec_dev(codec);
 
+	if (delay == 0 && codec->auto_runtime_pm)
+		delay = 3000;
+
 	if (delay > 0) {
 		pm_runtime_set_autosuspend_delay(dev, delay);
 		pm_runtime_use_autosuspend(dev);
sound/pci/hda/hda_codec.h +1 -0
index 6c57258..12837ab 100644
@@ -251,6 +251,7 @@ struct hda_codec {
 	unsigned int dp_mst:1; /* support DP1.2 Multi-stream transport */
 	unsigned int dump_coef:1; /* dump processing coefs in codec proc file */
 	unsigned int power_save_node:1; /* advanced PM for each widget */
+	unsigned int auto_runtime_pm:1; /* enable automatic codec runtime pm */
 #ifdef CONFIG_PM
 	unsigned long power_on_acct;
 	unsigned long power_off_acct;
sound/pci/hda/patch_hdmi.c +4 -0
index 407978b..f852734 100644
@@ -2356,6 +2356,10 @@ static int patch_generic_hdmi(struct hda_codec *codec)
 		codec->dp_mst = true;
 	}
 
+	/* Enable runtime pm for HDMI audio codec of HSW/BDW/SKL/BYT/BSW */
+	if (is_haswell_plus(codec) || is_valleyview_plus(codec))
+		codec->auto_runtime_pm = 1;
+
 	generic_hdmi_init_per_pins(codec);
 
 	init_channel_allocations();
Signature · 1 line
1.9.1
Applied
#1 lore raw

At Tue, 9 Jun 2015 16:50:38 +0800,

Quoted 10 lines · [email protected] wrote:

From: "Lu, Han" <[email protected]>

Enable runtime PM of the HDMI audio codec on the latest Intel platforms. So the HD-A controller or HDMI codec can suspend when idle timeout by default and release the GFX power well.
The patch influences HSW/BDW/BYT/BSW/SKL. Eariler platforms and third party analog codecs will not be influenced.

Applied, thanks.

Takashi

Quoted 45 lines
sound/pci/hda/hda_codec.c +3 -0
index 54380ed..e9f274b6 100644
@@ -3495,6 +3495,9 @@ static void codec_set_power_save(struct hda_codec *codec, int delay)
 {
 	struct device *dev = hda_codec_dev(codec);
 
+	if (delay == 0 && codec->auto_runtime_pm)
+		delay = 3000;
+
 	if (delay > 0) {
 		pm_runtime_set_autosuspend_delay(dev, delay);
 		pm_runtime_use_autosuspend(dev);
sound/pci/hda/hda_codec.h +1 -0
index 6c57258..12837ab 100644
@@ -251,6 +251,7 @@ struct hda_codec {
 	unsigned int dp_mst:1; /* support DP1.2 Multi-stream transport */
 	unsigned int dump_coef:1; /* dump processing coefs in codec proc file */
 	unsigned int power_save_node:1; /* advanced PM for each widget */
+	unsigned int auto_runtime_pm:1; /* enable automatic codec runtime pm */
 #ifdef CONFIG_PM
 	unsigned long power_on_acct;
 	unsigned long power_off_acct;
sound/pci/hda/patch_hdmi.c +4 -0
index 407978b..f852734 100644
@@ -2356,6 +2356,10 @@ static int patch_generic_hdmi(struct hda_codec *codec)
 		codec->dp_mst = true;
 	}
 
+	/* Enable runtime pm for HDMI audio codec of HSW/BDW/SKL/BYT/BSW */
+	if (is_haswell_plus(codec) || is_valleyview_plus(codec))
+		codec->auto_runtime_pm = 1;
+
 	generic_hdmi_init_per_pins(codec);
 
 	init_channel_allocations();
Signature · 1 line
1.9.1