aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_runtime_pm.c
diff options
context:
space:
mode:
authorAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>2016-12-02 03:23:51 -0500
committerAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>2016-12-02 09:40:49 -0500
commit0a116ce895e7ee2831c6304df246c40a33bcf454 (patch)
tree402106482979f896c89fd047c6b9f5f6d24c6269 /drivers/gpu/drm/i915/intel_runtime_pm.c
parent0d03926de530057a15fe1ef735cb7f88716833cd (diff)
drm/i915/glk: Implement Geminilake DDI init sequence
Implement the DDI initsequence and add information about the different phys in GLK. v2: Rebase on the move of phys to be power wells. v3: Rebase on addition of struct bxt_ddi_phy_info. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1480667037-11215-4-git-send-email-ander.conselvan.de.oliveira@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_runtime_pm.c')
-rw-r--r--drivers/gpu/drm/i915/intel_runtime_pm.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c
index 49043fcf694f..4987a66044e6 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -477,6 +477,18 @@ static void hsw_set_power_well(struct drm_i915_private *dev_priv,
477#define GLK_DISPLAY_DDI_C_POWER_DOMAINS ( \ 477#define GLK_DISPLAY_DDI_C_POWER_DOMAINS ( \
478 BIT(POWER_DOMAIN_PORT_DDI_C_LANES) | \ 478 BIT(POWER_DOMAIN_PORT_DDI_C_LANES) | \
479 BIT(POWER_DOMAIN_INIT)) 479 BIT(POWER_DOMAIN_INIT))
480#define GLK_DPIO_CMN_A_POWER_DOMAINS ( \
481 BIT(POWER_DOMAIN_PORT_DDI_A_LANES) | \
482 BIT(POWER_DOMAIN_AUX_A) | \
483 BIT(POWER_DOMAIN_INIT))
484#define GLK_DPIO_CMN_B_POWER_DOMAINS ( \
485 BIT(POWER_DOMAIN_PORT_DDI_B_LANES) | \
486 BIT(POWER_DOMAIN_AUX_B) | \
487 BIT(POWER_DOMAIN_INIT))
488#define GLK_DPIO_CMN_C_POWER_DOMAINS ( \
489 BIT(POWER_DOMAIN_PORT_DDI_C_LANES) | \
490 BIT(POWER_DOMAIN_AUX_C) | \
491 BIT(POWER_DOMAIN_INIT))
480#define GLK_DISPLAY_AUX_A_POWER_DOMAINS ( \ 492#define GLK_DISPLAY_AUX_A_POWER_DOMAINS ( \
481 BIT(POWER_DOMAIN_AUX_A) | \ 493 BIT(POWER_DOMAIN_AUX_A) | \
482 BIT(POWER_DOMAIN_INIT)) 494 BIT(POWER_DOMAIN_INIT))
@@ -926,6 +938,12 @@ static void bxt_verify_ddi_phy_power_wells(struct drm_i915_private *dev_priv)
926 power_well = lookup_power_well(dev_priv, BXT_DPIO_CMN_BC); 938 power_well = lookup_power_well(dev_priv, BXT_DPIO_CMN_BC);
927 if (power_well->count > 0) 939 if (power_well->count > 0)
928 bxt_ddi_phy_verify_state(dev_priv, power_well->data); 940 bxt_ddi_phy_verify_state(dev_priv, power_well->data);
941
942 if (IS_GEMINILAKE(dev_priv)) {
943 power_well = lookup_power_well(dev_priv, GLK_DPIO_CMN_C);
944 if (power_well->count > 0)
945 bxt_ddi_phy_verify_state(dev_priv, power_well->data);
946 }
929} 947}
930 948
931static bool gen9_dc_off_power_well_enabled(struct drm_i915_private *dev_priv, 949static bool gen9_dc_off_power_well_enabled(struct drm_i915_private *dev_priv,
@@ -2219,6 +2237,27 @@ static struct i915_power_well glk_power_wells[] = {
2219 .id = SKL_DISP_PW_2, 2237 .id = SKL_DISP_PW_2,
2220 }, 2238 },
2221 { 2239 {
2240 .name = "dpio-common-a",
2241 .domains = GLK_DPIO_CMN_A_POWER_DOMAINS,
2242 .ops = &bxt_dpio_cmn_power_well_ops,
2243 .id = BXT_DPIO_CMN_A,
2244 .data = DPIO_PHY1,
2245 },
2246 {
2247 .name = "dpio-common-b",
2248 .domains = GLK_DPIO_CMN_B_POWER_DOMAINS,
2249 .ops = &bxt_dpio_cmn_power_well_ops,
2250 .id = BXT_DPIO_CMN_BC,
2251 .data = DPIO_PHY0,
2252 },
2253 {
2254 .name = "dpio-common-c",
2255 .domains = GLK_DPIO_CMN_C_POWER_DOMAINS,
2256 .ops = &bxt_dpio_cmn_power_well_ops,
2257 .id = GLK_DPIO_CMN_C,
2258 .data = DPIO_PHY2,
2259 },
2260 {
2222 .name = "AUX A", 2261 .name = "AUX A",
2223 .domains = GLK_DISPLAY_AUX_A_POWER_DOMAINS, 2262 .domains = GLK_DISPLAY_AUX_A_POWER_DOMAINS,
2224 .ops = &skl_power_well_ops, 2263 .ops = &skl_power_well_ops,