aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>2018-03-06 15:33:55 -0500
committerRodrigo Vivi <rodrigo.vivi@intel.com>2018-03-06 17:35:45 -0500
commitc90c275c6ff4b7eca4221a302b399499239ae89e (patch)
treeca1a372350bfaf13edaddc3d726dc745a6ec684b
parentf41d19beccfebb84abc729e2d8ece0c368b2152f (diff)
drm/i915/psr: Update PSR2 resolution check for Cannonlake
In fact, apply the Cannonlake resolution check for all >= Gen-10 platforms to be safe. v3: Update GLK too. (Ville) Longer variable names. if-else in place of ternary operator. v2: Use local variables for resolution limits and print them (Ville) Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Elio Martinez Monroy <elio.martinez.monroy@intel.com> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180306203355.29292-1-dhinakaran.pandiyan@intel.com
-rw-r--r--drivers/gpu/drm/i915/intel_psr.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
index 05770790a4e9..23175c5c4a50 100644
--- a/drivers/gpu/drm/i915/intel_psr.c
+++ b/drivers/gpu/drm/i915/intel_psr.c
@@ -451,8 +451,9 @@ static bool intel_psr2_config_valid(struct intel_dp *intel_dp,
451{ 451{
452 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); 452 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
453 struct drm_i915_private *dev_priv = to_i915(dig_port->base.base.dev); 453 struct drm_i915_private *dev_priv = to_i915(dig_port->base.base.dev);
454 const struct drm_display_mode *adjusted_mode = 454 int crtc_hdisplay = crtc_state->base.adjusted_mode.crtc_hdisplay;
455 &crtc_state->base.adjusted_mode; 455 int crtc_vdisplay = crtc_state->base.adjusted_mode.crtc_vdisplay;
456 int psr_max_h = 0, psr_max_v = 0;
456 457
457 /* 458 /*
458 * FIXME psr2_support is messed up. It's both computed 459 * FIXME psr2_support is messed up. It's both computed
@@ -462,10 +463,18 @@ static bool intel_psr2_config_valid(struct intel_dp *intel_dp,
462 if (!dev_priv->psr.psr2_support) 463 if (!dev_priv->psr.psr2_support)
463 return false; 464 return false;
464 465
465 /* PSR2 is restricted to work with panel resolutions up to 3640x2304 */ 466 if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) {
466 if (adjusted_mode->crtc_hdisplay > 3640 || 467 psr_max_h = 4096;
467 adjusted_mode->crtc_vdisplay > 2304) { 468 psr_max_v = 2304;
468 DRM_DEBUG_KMS("PSR2 not enabled, panel resolution too big\n"); 469 } else if (IS_GEN9(dev_priv)) {
470 psr_max_h = 3640;
471 psr_max_v = 2304;
472 }
473
474 if (crtc_hdisplay > psr_max_h || crtc_vdisplay > psr_max_v) {
475 DRM_DEBUG_KMS("PSR2 not enabled, resolution %dx%d > max supported %dx%d\n",
476 crtc_hdisplay, crtc_vdisplay,
477 psr_max_h, psr_max_v);
469 return false; 478 return false;
470 } 479 }
471 480