[1/3] drm/i915: Set .domains=POWER_DOMAIN_MASK for the always-on well

Submitted by Ville Syrjala on April 18, 2016, 11:02 a.m.

Details

Message ID 1460977348-32260-2-git-send-email-ville.syrjala@linux.intel.com
State Accepted
Commit 998bd66a9dd9e260ad850bb0a9f303e2dd5aa87a
Headers show
Series "drm/i915: Power domain fixes" ( rev: 1 ) in Intel GFX

Not browsing as part of any series.

Commit Message

Ville Syrjala April 18, 2016, 11:02 a.m.
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

The always-on well is the same as runtime PM, so we should just
"enable" it for any power domain. Throw out the usless
FOO_ALWAYS_ON_DOMAINS defines and just use POWER_DOMAIN_MASK.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_runtime_pm.c | 22 ++++++----------------
 1 file changed, 6 insertions(+), 16 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
index 259f66f94854..fe63d77b7dfb 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -397,11 +397,6 @@  static void hsw_set_power_well(struct drm_i915_private *dev_priv,
 	BIT(POWER_DOMAIN_MODESET) |			\
 	BIT(POWER_DOMAIN_AUX_A) |			\
 	BIT(POWER_DOMAIN_INIT))
-#define SKL_DISPLAY_ALWAYS_ON_POWER_DOMAINS (		\
-	(POWER_DOMAIN_MASK & ~(				\
-	SKL_DISPLAY_POWERWELL_2_POWER_DOMAINS |		\
-	SKL_DISPLAY_DC_OFF_POWER_DOMAINS)) |		\
-	BIT(POWER_DOMAIN_INIT))
 
 #define BXT_DISPLAY_POWERWELL_2_POWER_DOMAINS (		\
 	BIT(POWER_DOMAIN_TRANSCODER_A) |		\
@@ -424,10 +419,6 @@  static void hsw_set_power_well(struct drm_i915_private *dev_priv,
 	BIT(POWER_DOMAIN_MODESET) |			\
 	BIT(POWER_DOMAIN_AUX_A) |			\
 	BIT(POWER_DOMAIN_INIT))
-#define BXT_DISPLAY_ALWAYS_ON_POWER_DOMAINS (		\
-	(POWER_DOMAIN_MASK & ~(				\
-	BXT_DISPLAY_POWERWELL_2_POWER_DOMAINS)) |	\
-	BIT(POWER_DOMAIN_INIT))
 
 static void assert_can_enable_dc9(struct drm_i915_private *dev_priv)
 {
@@ -1624,7 +1615,6 @@  void intel_display_power_put(struct drm_i915_private *dev_priv,
 	(POWER_DOMAIN_MASK & ~BDW_ALWAYS_ON_POWER_DOMAINS) |	\
 	BIT(POWER_DOMAIN_INIT))
 
-#define VLV_ALWAYS_ON_POWER_DOMAINS	BIT(POWER_DOMAIN_INIT)
 #define VLV_DISPLAY_POWER_DOMAINS	POWER_DOMAIN_MASK
 
 #define VLV_DPIO_CMN_BC_POWER_DOMAINS (		\
@@ -1722,7 +1712,7 @@  static struct i915_power_well hsw_power_wells[] = {
 	{
 		.name = "always-on",
 		.always_on = 1,
-		.domains = HSW_ALWAYS_ON_POWER_DOMAINS,
+		.domains = POWER_DOMAIN_MASK,
 		.ops = &i9xx_always_on_power_well_ops,
 	},
 	{
@@ -1736,7 +1726,7 @@  static struct i915_power_well bdw_power_wells[] = {
 	{
 		.name = "always-on",
 		.always_on = 1,
-		.domains = BDW_ALWAYS_ON_POWER_DOMAINS,
+		.domains = POWER_DOMAIN_MASK,
 		.ops = &i9xx_always_on_power_well_ops,
 	},
 	{
@@ -1771,7 +1761,7 @@  static struct i915_power_well vlv_power_wells[] = {
 	{
 		.name = "always-on",
 		.always_on = 1,
-		.domains = VLV_ALWAYS_ON_POWER_DOMAINS,
+		.domains = POWER_DOMAIN_MASK,
 		.ops = &i9xx_always_on_power_well_ops,
 		.data = PUNIT_POWER_WELL_ALWAYS_ON,
 	},
@@ -1829,7 +1819,7 @@  static struct i915_power_well chv_power_wells[] = {
 	{
 		.name = "always-on",
 		.always_on = 1,
-		.domains = VLV_ALWAYS_ON_POWER_DOMAINS,
+		.domains = POWER_DOMAIN_MASK,
 		.ops = &i9xx_always_on_power_well_ops,
 	},
 	{
@@ -1873,7 +1863,7 @@  static struct i915_power_well skl_power_wells[] = {
 	{
 		.name = "always-on",
 		.always_on = 1,
-		.domains = SKL_DISPLAY_ALWAYS_ON_POWER_DOMAINS,
+		.domains = POWER_DOMAIN_MASK,
 		.ops = &i9xx_always_on_power_well_ops,
 		.data = SKL_DISP_PW_ALWAYS_ON,
 	},
@@ -1933,7 +1923,7 @@  static struct i915_power_well bxt_power_wells[] = {
 	{
 		.name = "always-on",
 		.always_on = 1,
-		.domains = BXT_DISPLAY_ALWAYS_ON_POWER_DOMAINS,
+		.domains = POWER_DOMAIN_MASK,
 		.ops = &i9xx_always_on_power_well_ops,
 	},
 	{

Comments

On Mon, 2016-04-18 at 14:02 +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> The always-on well is the same as runtime PM, so we should just
> "enable" it for any power domain. Throw out the usless
> FOO_ALWAYS_ON_DOMAINS defines and just use POWER_DOMAIN_MASK.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Yep, nice clarification of the concept and code. It gets rid of the
on/off ping pong of the always on well too. Btw, this would make it
possible to get an RPM reference only from the always-on well, though
that would only simplify things somewhat on the concept level. Looks
ok:
Reviewed-by: Imre Deak <imre.deak@intel.com>

> ---
>  drivers/gpu/drm/i915/intel_runtime_pm.c | 22 ++++++----------------
>  1 file changed, 6 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c
> b/drivers/gpu/drm/i915/intel_runtime_pm.c
> index 259f66f94854..fe63d77b7dfb 100644
> --- a/drivers/gpu/drm/i915/intel_runtime_pm.c
> +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
> @@ -397,11 +397,6 @@ static void hsw_set_power_well(struct
> drm_i915_private *dev_priv,
>  	BIT(POWER_DOMAIN_MODESET) |			\
>  	BIT(POWER_DOMAIN_AUX_A) |			\
>  	BIT(POWER_DOMAIN_INIT))
> -#define SKL_DISPLAY_ALWAYS_ON_POWER_DOMAINS (		\
> -	(POWER_DOMAIN_MASK & ~(				\
> -	SKL_DISPLAY_POWERWELL_2_POWER_DOMAINS |		\
> -	SKL_DISPLAY_DC_OFF_POWER_DOMAINS)) |		\
> -	BIT(POWER_DOMAIN_INIT))
>  
>  #define BXT_DISPLAY_POWERWELL_2_POWER_DOMAINS (		\
>  	BIT(POWER_DOMAIN_TRANSCODER_A) |		\
> @@ -424,10 +419,6 @@ static void hsw_set_power_well(struct
> drm_i915_private *dev_priv,
>  	BIT(POWER_DOMAIN_MODESET) |			\
>  	BIT(POWER_DOMAIN_AUX_A) |			\
>  	BIT(POWER_DOMAIN_INIT))
> -#define BXT_DISPLAY_ALWAYS_ON_POWER_DOMAINS (		\
> -	(POWER_DOMAIN_MASK & ~(				\
> -	BXT_DISPLAY_POWERWELL_2_POWER_DOMAINS)) |	\
> -	BIT(POWER_DOMAIN_INIT))
>  
>  static void assert_can_enable_dc9(struct drm_i915_private *dev_priv)
>  {
> @@ -1624,7 +1615,6 @@ void intel_display_power_put(struct
> drm_i915_private *dev_priv,
>  	(POWER_DOMAIN_MASK & ~BDW_ALWAYS_ON_POWER_DOMAINS) |	
> \
>  	BIT(POWER_DOMAIN_INIT))
>  
> -#define VLV_ALWAYS_ON_POWER_DOMAINS	BIT(POWER_DOMAIN_INIT)
>  #define VLV_DISPLAY_POWER_DOMAINS	POWER_DOMAIN_MASK
>  
>  #define VLV_DPIO_CMN_BC_POWER_DOMAINS (		\
> @@ -1722,7 +1712,7 @@ static struct i915_power_well hsw_power_wells[]
> = {
>  	{
>  		.name = "always-on",
>  		.always_on = 1,
> -		.domains = HSW_ALWAYS_ON_POWER_DOMAINS,
> +		.domains = POWER_DOMAIN_MASK,
>  		.ops = &i9xx_always_on_power_well_ops,
>  	},
>  	{
> @@ -1736,7 +1726,7 @@ static struct i915_power_well bdw_power_wells[]
> = {
>  	{
>  		.name = "always-on",
>  		.always_on = 1,
> -		.domains = BDW_ALWAYS_ON_POWER_DOMAINS,
> +		.domains = POWER_DOMAIN_MASK,
>  		.ops = &i9xx_always_on_power_well_ops,
>  	},
>  	{
> @@ -1771,7 +1761,7 @@ static struct i915_power_well vlv_power_wells[]
> = {
>  	{
>  		.name = "always-on",
>  		.always_on = 1,
> -		.domains = VLV_ALWAYS_ON_POWER_DOMAINS,
> +		.domains = POWER_DOMAIN_MASK,
>  		.ops = &i9xx_always_on_power_well_ops,
>  		.data = PUNIT_POWER_WELL_ALWAYS_ON,
>  	},
> @@ -1829,7 +1819,7 @@ static struct i915_power_well chv_power_wells[]
> = {
>  	{
>  		.name = "always-on",
>  		.always_on = 1,
> -		.domains = VLV_ALWAYS_ON_POWER_DOMAINS,
> +		.domains = POWER_DOMAIN_MASK,
>  		.ops = &i9xx_always_on_power_well_ops,
>  	},
>  	{
> @@ -1873,7 +1863,7 @@ static struct i915_power_well skl_power_wells[]
> = {
>  	{
>  		.name = "always-on",
>  		.always_on = 1,
> -		.domains = SKL_DISPLAY_ALWAYS_ON_POWER_DOMAINS,
> +		.domains = POWER_DOMAIN_MASK,
>  		.ops = &i9xx_always_on_power_well_ops,
>  		.data = SKL_DISP_PW_ALWAYS_ON,
>  	},
> @@ -1933,7 +1923,7 @@ static struct i915_power_well bxt_power_wells[]
> = {
>  	{
>  		.name = "always-on",
>  		.always_on = 1,
> -		.domains = BXT_DISPLAY_ALWAYS_ON_POWER_DOMAINS,
> +		.domains = POWER_DOMAIN_MASK,
>  		.ops = &i9xx_always_on_power_well_ops,
>  	},
>  	{