diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2016-05-11 15:44:41 -0400 |
---|---|---|
committer | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2016-05-13 14:28:09 -0400 |
commit | 587c7914154921ffa819aa61ef9057e68e9ad73f (patch) | |
tree | 7aeae504ec19668ce1ff1d0b0fbd035ef9d30eff | |
parent | e1ff5f0126cd83b149060171a84a4b33972ea28b (diff) |
drm/i915: Extract broadwell_calc_cdclk()
Try to reduce the amount of duplicated cdclk magic numbers by
moving the max_pixclk->cdclk conversion into a helper.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1462995892-32416-3-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 5bc7300db654..f6adea8116de 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -9675,6 +9675,18 @@ static void broadwell_set_cdclk(struct drm_device *dev, int cdclk) | |||
9675 | cdclk, dev_priv->cdclk_freq); | 9675 | cdclk, dev_priv->cdclk_freq); |
9676 | } | 9676 | } |
9677 | 9677 | ||
9678 | static int broadwell_calc_cdclk(int max_pixclk) | ||
9679 | { | ||
9680 | if (max_pixclk > 540000) | ||
9681 | return 675000; | ||
9682 | else if (max_pixclk > 450000) | ||
9683 | return 540000; | ||
9684 | else if (max_pixclk > 337500) | ||
9685 | return 450000; | ||
9686 | else | ||
9687 | return 337500; | ||
9688 | } | ||
9689 | |||
9678 | static int broadwell_modeset_calc_cdclk(struct drm_atomic_state *state) | 9690 | static int broadwell_modeset_calc_cdclk(struct drm_atomic_state *state) |
9679 | { | 9691 | { |
9680 | struct drm_i915_private *dev_priv = to_i915(state->dev); | 9692 | struct drm_i915_private *dev_priv = to_i915(state->dev); |
@@ -9686,14 +9698,7 @@ static int broadwell_modeset_calc_cdclk(struct drm_atomic_state *state) | |||
9686 | * FIXME should also account for plane ratio | 9698 | * FIXME should also account for plane ratio |
9687 | * once 64bpp pixel formats are supported. | 9699 | * once 64bpp pixel formats are supported. |
9688 | */ | 9700 | */ |
9689 | if (max_pixclk > 540000) | 9701 | cdclk = broadwell_calc_cdclk(max_pixclk); |
9690 | cdclk = 675000; | ||
9691 | else if (max_pixclk > 450000) | ||
9692 | cdclk = 540000; | ||
9693 | else if (max_pixclk > 337500) | ||
9694 | cdclk = 450000; | ||
9695 | else | ||
9696 | cdclk = 337500; | ||
9697 | 9702 | ||
9698 | if (cdclk > dev_priv->max_cdclk_freq) { | 9703 | if (cdclk > dev_priv->max_cdclk_freq) { |
9699 | DRM_DEBUG_KMS("requested cdclk (%d kHz) exceeds max (%d kHz)\n", | 9704 | DRM_DEBUG_KMS("requested cdclk (%d kHz) exceeds max (%d kHz)\n", |
@@ -9703,7 +9708,7 @@ static int broadwell_modeset_calc_cdclk(struct drm_atomic_state *state) | |||
9703 | 9708 | ||
9704 | intel_state->cdclk = intel_state->dev_cdclk = cdclk; | 9709 | intel_state->cdclk = intel_state->dev_cdclk = cdclk; |
9705 | if (!intel_state->active_crtcs) | 9710 | if (!intel_state->active_crtcs) |
9706 | intel_state->dev_cdclk = 337500; | 9711 | intel_state->dev_cdclk = broadwell_calc_cdclk(0); |
9707 | 9712 | ||
9708 | return 0; | 9713 | return 0; |
9709 | } | 9714 | } |