aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXiong Zhang <xiong.y.zhang@intel.com>2015-08-13 06:00:12 -0400
committerJani Nikula <jani.nikula@intel.com>2015-08-31 11:40:48 -0400
commitd8e19f99d3483adb01c6269dd5775ba8ecf1870a (patch)
tree077288ee9eee611953a5e0ff1a5f149bbe04cb67
parent477ec3283c324d16e8da07a8d8a4a367e31b6eab (diff)
drm/i915/skl: Adding DDI_E power well domain
From B spec, DDI_E port belong to PowerWell 2, but DDI_E share the powerwell_req/staus register bit with DDI_A which belong to DDI_A_E_POWER_WELL. In order to communicate with the connector on DDI-E, both DDI_A_E_POWER_WELL and POWER_WELL_2 must be enabled. Currently intel_dp_power_get(DDI_E) only enable DDI_A_E_POWER_WELL, this patch will not only enable DDI_a_E_POWER_WELL but also enable POWER_WELL_2. This patch also fix the DDI-E hotplug function. Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c2
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--drivers/gpu/drm/i915/intel_display.c3
-rw-r--r--drivers/gpu/drm/i915/intel_runtime_pm.c2
4 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 33aabc79813b..e3ec9049081f 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -2562,6 +2562,8 @@ static const char *power_domain_str(enum intel_display_power_domain domain)
2562 return "PORT_DDI_D_2_LANES"; 2562 return "PORT_DDI_D_2_LANES";
2563 case POWER_DOMAIN_PORT_DDI_D_4_LANES: 2563 case POWER_DOMAIN_PORT_DDI_D_4_LANES:
2564 return "PORT_DDI_D_4_LANES"; 2564 return "PORT_DDI_D_4_LANES";
2565 case POWER_DOMAIN_PORT_DDI_E_2_LANES:
2566 return "PORT_DDI_E_2_LANES";
2565 case POWER_DOMAIN_PORT_DSI: 2567 case POWER_DOMAIN_PORT_DSI:
2566 return "PORT_DSI"; 2568 return "PORT_DSI";
2567 case POWER_DOMAIN_PORT_CRT: 2569 case POWER_DOMAIN_PORT_CRT:
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 9b9bd2e34c13..e304d4e5ae0c 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -182,6 +182,7 @@ enum intel_display_power_domain {
182 POWER_DOMAIN_PORT_DDI_C_4_LANES, 182 POWER_DOMAIN_PORT_DDI_C_4_LANES,
183 POWER_DOMAIN_PORT_DDI_D_2_LANES, 183 POWER_DOMAIN_PORT_DDI_D_2_LANES,
184 POWER_DOMAIN_PORT_DDI_D_4_LANES, 184 POWER_DOMAIN_PORT_DDI_D_4_LANES,
185 POWER_DOMAIN_PORT_DDI_E_2_LANES,
185 POWER_DOMAIN_PORT_DSI, 186 POWER_DOMAIN_PORT_DSI,
186 POWER_DOMAIN_PORT_CRT, 187 POWER_DOMAIN_PORT_CRT,
187 POWER_DOMAIN_PORT_OTHER, 188 POWER_DOMAIN_PORT_OTHER,
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 9bae13394e5b..a5cddcd6d3e0 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5150,7 +5150,6 @@ static enum intel_display_power_domain port_to_power_domain(enum port port)
5150{ 5150{
5151 switch (port) { 5151 switch (port) {
5152 case PORT_A: 5152 case PORT_A:
5153 case PORT_E:
5154 return POWER_DOMAIN_PORT_DDI_A_4_LANES; 5153 return POWER_DOMAIN_PORT_DDI_A_4_LANES;
5155 case PORT_B: 5154 case PORT_B:
5156 return POWER_DOMAIN_PORT_DDI_B_4_LANES; 5155 return POWER_DOMAIN_PORT_DDI_B_4_LANES;
@@ -5158,6 +5157,8 @@ static enum intel_display_power_domain port_to_power_domain(enum port port)
5158 return POWER_DOMAIN_PORT_DDI_C_4_LANES; 5157 return POWER_DOMAIN_PORT_DDI_C_4_LANES;
5159 case PORT_D: 5158 case PORT_D:
5160 return POWER_DOMAIN_PORT_DDI_D_4_LANES; 5159 return POWER_DOMAIN_PORT_DDI_D_4_LANES;
5160 case PORT_E:
5161 return POWER_DOMAIN_PORT_DDI_E_2_LANES;
5161 default: 5162 default:
5162 WARN_ON_ONCE(1); 5163 WARN_ON_ONCE(1);
5163 return POWER_DOMAIN_PORT_OTHER; 5164 return POWER_DOMAIN_PORT_OTHER;
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
index 821644d1b544..af7fdb3bd663 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -297,6 +297,7 @@ static void hsw_set_power_well(struct drm_i915_private *dev_priv,
297 BIT(POWER_DOMAIN_PORT_DDI_C_4_LANES) | \ 297 BIT(POWER_DOMAIN_PORT_DDI_C_4_LANES) | \
298 BIT(POWER_DOMAIN_PORT_DDI_D_2_LANES) | \ 298 BIT(POWER_DOMAIN_PORT_DDI_D_2_LANES) | \
299 BIT(POWER_DOMAIN_PORT_DDI_D_4_LANES) | \ 299 BIT(POWER_DOMAIN_PORT_DDI_D_4_LANES) | \
300 BIT(POWER_DOMAIN_PORT_DDI_E_2_LANES) | \
300 BIT(POWER_DOMAIN_AUX_B) | \ 301 BIT(POWER_DOMAIN_AUX_B) | \
301 BIT(POWER_DOMAIN_AUX_C) | \ 302 BIT(POWER_DOMAIN_AUX_C) | \
302 BIT(POWER_DOMAIN_AUX_D) | \ 303 BIT(POWER_DOMAIN_AUX_D) | \
@@ -316,6 +317,7 @@ static void hsw_set_power_well(struct drm_i915_private *dev_priv,
316#define SKL_DISPLAY_DDI_A_E_POWER_DOMAINS ( \ 317#define SKL_DISPLAY_DDI_A_E_POWER_DOMAINS ( \
317 BIT(POWER_DOMAIN_PORT_DDI_A_2_LANES) | \ 318 BIT(POWER_DOMAIN_PORT_DDI_A_2_LANES) | \
318 BIT(POWER_DOMAIN_PORT_DDI_A_4_LANES) | \ 319 BIT(POWER_DOMAIN_PORT_DDI_A_4_LANES) | \
320 BIT(POWER_DOMAIN_PORT_DDI_E_2_LANES) | \
319 BIT(POWER_DOMAIN_INIT)) 321 BIT(POWER_DOMAIN_INIT))
320#define SKL_DISPLAY_DDI_B_POWER_DOMAINS ( \ 322#define SKL_DISPLAY_DDI_B_POWER_DOMAINS ( \
321 BIT(POWER_DOMAIN_PORT_DDI_B_2_LANES) | \ 323 BIT(POWER_DOMAIN_PORT_DDI_B_2_LANES) | \