aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_runtime_pm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_runtime_pm.c')
-rw-r--r--drivers/gpu/drm/i915/intel_runtime_pm.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
index 5b1aa4b9c72c..a274e930f045 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -124,6 +124,8 @@ intel_display_power_domain_str(enum intel_display_power_domain domain)
124 return "AUX_C"; 124 return "AUX_C";
125 case POWER_DOMAIN_AUX_D: 125 case POWER_DOMAIN_AUX_D:
126 return "AUX_D"; 126 return "AUX_D";
127 case POWER_DOMAIN_AUX_F:
128 return "AUX_F";
127 case POWER_DOMAIN_GMBUS: 129 case POWER_DOMAIN_GMBUS:
128 return "GMBUS"; 130 return "GMBUS";
129 case POWER_DOMAIN_INIT: 131 case POWER_DOMAIN_INIT:
@@ -1828,6 +1830,7 @@ void intel_display_power_put(struct drm_i915_private *dev_priv,
1828 BIT_ULL(POWER_DOMAIN_AUX_B) | \ 1830 BIT_ULL(POWER_DOMAIN_AUX_B) | \
1829 BIT_ULL(POWER_DOMAIN_AUX_C) | \ 1831 BIT_ULL(POWER_DOMAIN_AUX_C) | \
1830 BIT_ULL(POWER_DOMAIN_AUX_D) | \ 1832 BIT_ULL(POWER_DOMAIN_AUX_D) | \
1833 BIT_ULL(POWER_DOMAIN_AUX_F) | \
1831 BIT_ULL(POWER_DOMAIN_AUDIO) | \ 1834 BIT_ULL(POWER_DOMAIN_AUDIO) | \
1832 BIT_ULL(POWER_DOMAIN_VGA) | \ 1835 BIT_ULL(POWER_DOMAIN_VGA) | \
1833 BIT_ULL(POWER_DOMAIN_INIT)) 1836 BIT_ULL(POWER_DOMAIN_INIT))
@@ -1855,6 +1858,9 @@ void intel_display_power_put(struct drm_i915_private *dev_priv,
1855#define CNL_DISPLAY_AUX_D_POWER_DOMAINS ( \ 1858#define CNL_DISPLAY_AUX_D_POWER_DOMAINS ( \
1856 BIT_ULL(POWER_DOMAIN_AUX_D) | \ 1859 BIT_ULL(POWER_DOMAIN_AUX_D) | \
1857 BIT_ULL(POWER_DOMAIN_INIT)) 1860 BIT_ULL(POWER_DOMAIN_INIT))
1861#define CNL_DISPLAY_AUX_F_POWER_DOMAINS ( \
1862 BIT_ULL(POWER_DOMAIN_AUX_F) | \
1863 BIT_ULL(POWER_DOMAIN_INIT))
1858#define CNL_DISPLAY_DC_OFF_POWER_DOMAINS ( \ 1864#define CNL_DISPLAY_DC_OFF_POWER_DOMAINS ( \
1859 CNL_DISPLAY_POWERWELL_2_POWER_DOMAINS | \ 1865 CNL_DISPLAY_POWERWELL_2_POWER_DOMAINS | \
1860 BIT_ULL(POWER_DOMAIN_GT_IRQ) | \ 1866 BIT_ULL(POWER_DOMAIN_GT_IRQ) | \
@@ -2405,6 +2411,12 @@ static struct i915_power_well cnl_power_wells[] = {
2405 .ops = &hsw_power_well_ops, 2411 .ops = &hsw_power_well_ops,
2406 .id = SKL_DISP_PW_DDI_D, 2412 .id = SKL_DISP_PW_DDI_D,
2407 }, 2413 },
2414 {
2415 .name = "AUX F",
2416 .domains = CNL_DISPLAY_AUX_F_POWER_DOMAINS,
2417 .ops = &hsw_power_well_ops,
2418 .id = CNL_DISP_PW_AUX_F,
2419 },
2408}; 2420};
2409 2421
2410static int 2422static int
@@ -2520,6 +2532,16 @@ int intel_power_domains_init(struct drm_i915_private *dev_priv)
2520 set_power_wells(power_domains, skl_power_wells); 2532 set_power_wells(power_domains, skl_power_wells);
2521 } else if (IS_CANNONLAKE(dev_priv)) { 2533 } else if (IS_CANNONLAKE(dev_priv)) {
2522 set_power_wells(power_domains, cnl_power_wells); 2534 set_power_wells(power_domains, cnl_power_wells);
2535
2536 /*
2537 * Aux IO is getting enabled for all ports
2538 * regardless the presence or use. So, in order to avoid
2539 * timeouts, lets remove it from the list
2540 * for the SKUs without port F.
2541 */
2542 if (!IS_CNL_WITH_PORT_F(dev_priv))
2543 power_domains->power_well_count -= 1;
2544
2523 } else if (IS_BROXTON(dev_priv)) { 2545 } else if (IS_BROXTON(dev_priv)) {
2524 set_power_wells(power_domains, bxt_power_wells); 2546 set_power_wells(power_domains, bxt_power_wells);
2525 } else if (IS_GEMINILAKE(dev_priv)) { 2547 } else if (IS_GEMINILAKE(dev_priv)) {