diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_runtime_pm.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_runtime_pm.c | 22 |
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 | ||
2410 | static int | 2422 | static 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)) { |