diff options
author | Satheeshakrishna M <satheeshakrishna.m@intel.com> | 2014-07-11 05:21:13 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-04-14 09:05:47 -0400 |
commit | 0b4a2a36d078b3a8de871025a958da547a6143f7 (patch) | |
tree | 0abfc589e4bc0e8b520539af3af8ddca2472036d /drivers/gpu/drm/i915/intel_runtime_pm.c | |
parent | 9e63743ebbcb138be83453f7dcf65f817893f851 (diff) |
drm/i915/bxt: Define BXT power domains
Add BXT power domains
v2: Use DOMAIN_PLLS instead of a new CDCLK one, whitespace fixes
(Damien)
v3: add VGA, TRANSCODER_A power domains (imre)
Signed-off-by: Satheeshakrishna M <satheeshakrishna.m@intel.com> (v1)
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_runtime_pm.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_runtime_pm.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c index ce00e6994eeb..ff5cce32c7d6 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c | |||
@@ -319,6 +319,38 @@ static void hsw_set_power_well(struct drm_i915_private *dev_priv, | |||
319 | SKL_DISPLAY_MISC_IO_POWER_DOMAINS)) | \ | 319 | SKL_DISPLAY_MISC_IO_POWER_DOMAINS)) | \ |
320 | BIT(POWER_DOMAIN_INIT)) | 320 | BIT(POWER_DOMAIN_INIT)) |
321 | 321 | ||
322 | #define BXT_DISPLAY_POWERWELL_2_POWER_DOMAINS ( \ | ||
323 | BIT(POWER_DOMAIN_TRANSCODER_A) | \ | ||
324 | BIT(POWER_DOMAIN_PIPE_B) | \ | ||
325 | BIT(POWER_DOMAIN_TRANSCODER_B) | \ | ||
326 | BIT(POWER_DOMAIN_PIPE_C) | \ | ||
327 | BIT(POWER_DOMAIN_TRANSCODER_C) | \ | ||
328 | BIT(POWER_DOMAIN_PIPE_B_PANEL_FITTER) | \ | ||
329 | BIT(POWER_DOMAIN_PIPE_C_PANEL_FITTER) | \ | ||
330 | BIT(POWER_DOMAIN_PORT_DDI_B_2_LANES) | \ | ||
331 | BIT(POWER_DOMAIN_PORT_DDI_B_4_LANES) | \ | ||
332 | BIT(POWER_DOMAIN_PORT_DDI_C_2_LANES) | \ | ||
333 | BIT(POWER_DOMAIN_PORT_DDI_C_4_LANES) | \ | ||
334 | BIT(POWER_DOMAIN_AUX_B) | \ | ||
335 | BIT(POWER_DOMAIN_AUX_C) | \ | ||
336 | BIT(POWER_DOMAIN_AUDIO) | \ | ||
337 | BIT(POWER_DOMAIN_VGA) | \ | ||
338 | BIT(POWER_DOMAIN_INIT)) | ||
339 | #define BXT_DISPLAY_POWERWELL_1_POWER_DOMAINS ( \ | ||
340 | BXT_DISPLAY_POWERWELL_2_POWER_DOMAINS | \ | ||
341 | BIT(POWER_DOMAIN_PIPE_A) | \ | ||
342 | BIT(POWER_DOMAIN_TRANSCODER_EDP) | \ | ||
343 | BIT(POWER_DOMAIN_PIPE_A_PANEL_FITTER) | \ | ||
344 | BIT(POWER_DOMAIN_PORT_DDI_A_2_LANES) | \ | ||
345 | BIT(POWER_DOMAIN_PORT_DDI_A_4_LANES) | \ | ||
346 | BIT(POWER_DOMAIN_AUX_A) | \ | ||
347 | BIT(POWER_DOMAIN_PLLS) | \ | ||
348 | BIT(POWER_DOMAIN_INIT)) | ||
349 | #define BXT_DISPLAY_ALWAYS_ON_POWER_DOMAINS ( \ | ||
350 | (POWER_DOMAIN_MASK & ~(BXT_DISPLAY_POWERWELL_1_POWER_DOMAINS | \ | ||
351 | BXT_DISPLAY_POWERWELL_2_POWER_DOMAINS)) | \ | ||
352 | BIT(POWER_DOMAIN_INIT)) | ||
353 | |||
322 | static void skl_set_power_well(struct drm_i915_private *dev_priv, | 354 | static void skl_set_power_well(struct drm_i915_private *dev_priv, |
323 | struct i915_power_well *power_well, bool enable) | 355 | struct i915_power_well *power_well, bool enable) |
324 | { | 356 | { |
@@ -1313,6 +1345,27 @@ static struct i915_power_well skl_power_wells[] = { | |||
1313 | }, | 1345 | }, |
1314 | }; | 1346 | }; |
1315 | 1347 | ||
1348 | static struct i915_power_well bxt_power_wells[] = { | ||
1349 | { | ||
1350 | .name = "always-on", | ||
1351 | .always_on = 1, | ||
1352 | .domains = BXT_DISPLAY_ALWAYS_ON_POWER_DOMAINS, | ||
1353 | .ops = &i9xx_always_on_power_well_ops, | ||
1354 | }, | ||
1355 | { | ||
1356 | .name = "power well 1", | ||
1357 | .domains = BXT_DISPLAY_POWERWELL_1_POWER_DOMAINS, | ||
1358 | .ops = &skl_power_well_ops, | ||
1359 | .data = SKL_DISP_PW_1, | ||
1360 | }, | ||
1361 | { | ||
1362 | .name = "power well 2", | ||
1363 | .domains = BXT_DISPLAY_POWERWELL_2_POWER_DOMAINS, | ||
1364 | .ops = &skl_power_well_ops, | ||
1365 | .data = SKL_DISP_PW_2, | ||
1366 | } | ||
1367 | }; | ||
1368 | |||
1316 | #define set_power_wells(power_domains, __power_wells) ({ \ | 1369 | #define set_power_wells(power_domains, __power_wells) ({ \ |
1317 | (power_domains)->power_wells = (__power_wells); \ | 1370 | (power_domains)->power_wells = (__power_wells); \ |
1318 | (power_domains)->power_well_count = ARRAY_SIZE(__power_wells); \ | 1371 | (power_domains)->power_well_count = ARRAY_SIZE(__power_wells); \ |
@@ -1341,6 +1394,8 @@ int intel_power_domains_init(struct drm_i915_private *dev_priv) | |||
1341 | set_power_wells(power_domains, bdw_power_wells); | 1394 | set_power_wells(power_domains, bdw_power_wells); |
1342 | } else if (IS_SKYLAKE(dev_priv->dev)) { | 1395 | } else if (IS_SKYLAKE(dev_priv->dev)) { |
1343 | set_power_wells(power_domains, skl_power_wells); | 1396 | set_power_wells(power_domains, skl_power_wells); |
1397 | } else if (IS_BROXTON(dev_priv->dev)) { | ||
1398 | set_power_wells(power_domains, bxt_power_wells); | ||
1344 | } else if (IS_CHERRYVIEW(dev_priv->dev)) { | 1399 | } else if (IS_CHERRYVIEW(dev_priv->dev)) { |
1345 | set_power_wells(power_domains, chv_power_wells); | 1400 | set_power_wells(power_domains, chv_power_wells); |
1346 | } else if (IS_VALLEYVIEW(dev_priv->dev)) { | 1401 | } else if (IS_VALLEYVIEW(dev_priv->dev)) { |