|
@@ -124,6 +124,8 @@ intel_display_power_domain_str(enum intel_display_power_domain domain)
|
|
|
return "AUX_C";
|
|
|
case POWER_DOMAIN_AUX_D:
|
|
|
return "AUX_D";
|
|
|
+ case POWER_DOMAIN_AUX_F:
|
|
|
+ return "AUX_F";
|
|
|
case POWER_DOMAIN_GMBUS:
|
|
|
return "GMBUS";
|
|
|
case POWER_DOMAIN_INIT:
|
|
@@ -1828,6 +1830,7 @@ void intel_display_power_put(struct drm_i915_private *dev_priv,
|
|
|
BIT_ULL(POWER_DOMAIN_AUX_B) | \
|
|
|
BIT_ULL(POWER_DOMAIN_AUX_C) | \
|
|
|
BIT_ULL(POWER_DOMAIN_AUX_D) | \
|
|
|
+ BIT_ULL(POWER_DOMAIN_AUX_F) | \
|
|
|
BIT_ULL(POWER_DOMAIN_AUDIO) | \
|
|
|
BIT_ULL(POWER_DOMAIN_VGA) | \
|
|
|
BIT_ULL(POWER_DOMAIN_INIT))
|
|
@@ -1855,6 +1858,9 @@ void intel_display_power_put(struct drm_i915_private *dev_priv,
|
|
|
#define CNL_DISPLAY_AUX_D_POWER_DOMAINS ( \
|
|
|
BIT_ULL(POWER_DOMAIN_AUX_D) | \
|
|
|
BIT_ULL(POWER_DOMAIN_INIT))
|
|
|
+#define CNL_DISPLAY_AUX_F_POWER_DOMAINS ( \
|
|
|
+ BIT_ULL(POWER_DOMAIN_AUX_F) | \
|
|
|
+ BIT_ULL(POWER_DOMAIN_INIT))
|
|
|
#define CNL_DISPLAY_DC_OFF_POWER_DOMAINS ( \
|
|
|
CNL_DISPLAY_POWERWELL_2_POWER_DOMAINS | \
|
|
|
BIT_ULL(POWER_DOMAIN_GT_IRQ) | \
|
|
@@ -2405,6 +2411,12 @@ static struct i915_power_well cnl_power_wells[] = {
|
|
|
.ops = &hsw_power_well_ops,
|
|
|
.id = SKL_DISP_PW_DDI_D,
|
|
|
},
|
|
|
+ {
|
|
|
+ .name = "AUX F",
|
|
|
+ .domains = CNL_DISPLAY_AUX_F_POWER_DOMAINS,
|
|
|
+ .ops = &hsw_power_well_ops,
|
|
|
+ .id = CNL_DISP_PW_AUX_F,
|
|
|
+ },
|
|
|
};
|
|
|
|
|
|
static int
|
|
@@ -2520,6 +2532,16 @@ int intel_power_domains_init(struct drm_i915_private *dev_priv)
|
|
|
set_power_wells(power_domains, skl_power_wells);
|
|
|
} else if (IS_CANNONLAKE(dev_priv)) {
|
|
|
set_power_wells(power_domains, cnl_power_wells);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Aux IO is getting enabled for all ports
|
|
|
+ * regardless the presence or use. So, in order to avoid
|
|
|
+ * timeouts, lets remove it from the list
|
|
|
+ * for the SKUs without port F.
|
|
|
+ */
|
|
|
+ if (!IS_CNL_WITH_PORT_F(dev_priv))
|
|
|
+ power_domains->power_well_count -= 1;
|
|
|
+
|
|
|
} else if (IS_BROXTON(dev_priv)) {
|
|
|
set_power_wells(power_domains, bxt_power_wells);
|
|
|
} else if (IS_GEMINILAKE(dev_priv)) {
|