diff mbox

[1/4] drm/i915: Split shared dpll setup out of __intel_set_mode()

Message ID 1422543311-5107-1-git-send-email-ander.conselvan.de.oliveira@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ander Conselvan de Oliveira Jan. 29, 2015, 2:55 p.m. UTC
This simplifies __intel_set_mode() a little.

Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 50 ++++++++++++++++++++++++------------
 1 file changed, 33 insertions(+), 17 deletions(-)

Comments

Daniel Vetter Jan. 30, 2015, 4:31 p.m. UTC | #1
On Thu, Jan 29, 2015 at 04:55:08PM +0200, Ander Conselvan de Oliveira wrote:
> This simplifies __intel_set_mode() a little.
> 
> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>

Merged this one here, please sign up Matt or someone else suitable for the
in-depth review.
-Daniel

> ---
>  drivers/gpu/drm/i915/intel_display.c | 50 ++++++++++++++++++++++++------------
>  1 file changed, 33 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 423ef95..3d220a6 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -11021,6 +11021,36 @@ out:
>  	return pipe_config;
>  }
>  
> +static int __intel_set_mode_setup_plls(struct drm_device *dev,
> +				       unsigned modeset_pipes,
> +				       unsigned disable_pipes)
> +{
> +	struct drm_i915_private *dev_priv = to_i915(dev);
> +	unsigned clear_pipes = modeset_pipes | disable_pipes;
> +	struct intel_crtc *intel_crtc;
> +	int ret = 0;
> +
> +	if (!dev_priv->display.crtc_compute_clock)
> +		return 0;
> +
> +	ret = intel_shared_dpll_start_config(dev_priv, clear_pipes);
> +	if (ret)
> +		goto done;
> +
> +	for_each_intel_crtc_masked(dev, modeset_pipes, intel_crtc) {
> +		struct intel_crtc_state *state = intel_crtc->new_config;
> +		ret = dev_priv->display.crtc_compute_clock(intel_crtc,
> +							   state);
> +		if (ret) {
> +			intel_shared_dpll_abort_config(dev_priv);
> +			goto done;
> +		}
> +	}
> +
> +done:
> +	return ret;
> +}
> +
>  static int __intel_set_mode(struct drm_crtc *crtc,
>  			    struct drm_display_mode *mode,
>  			    int x, int y, struct drm_framebuffer *fb,
> @@ -11058,23 +11088,9 @@ static int __intel_set_mode(struct drm_crtc *crtc,
>  		prepare_pipes &= ~disable_pipes;
>  	}
>  
> -	if (dev_priv->display.crtc_compute_clock) {
> -		unsigned clear_pipes = modeset_pipes | disable_pipes;
> -
> -		ret = intel_shared_dpll_start_config(dev_priv, clear_pipes);
> -		if (ret)
> -			goto done;
> -
> -		for_each_intel_crtc_masked(dev, modeset_pipes, intel_crtc) {
> -			struct intel_crtc_state *state = intel_crtc->new_config;
> -			ret = dev_priv->display.crtc_compute_clock(intel_crtc,
> -								   state);
> -			if (ret) {
> -				intel_shared_dpll_abort_config(dev_priv);
> -				goto done;
> -			}
> -		}
> -	}
> +	ret = __intel_set_mode_setup_plls(dev, modeset_pipes, disable_pipes);
> +	if (ret)
> +		goto done;
>  
>  	for_each_intel_crtc_masked(dev, disable_pipes, intel_crtc)
>  		intel_crtc_disable(&intel_crtc->base);
> -- 
> 2.1.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 423ef95..3d220a6 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -11021,6 +11021,36 @@  out:
 	return pipe_config;
 }
 
+static int __intel_set_mode_setup_plls(struct drm_device *dev,
+				       unsigned modeset_pipes,
+				       unsigned disable_pipes)
+{
+	struct drm_i915_private *dev_priv = to_i915(dev);
+	unsigned clear_pipes = modeset_pipes | disable_pipes;
+	struct intel_crtc *intel_crtc;
+	int ret = 0;
+
+	if (!dev_priv->display.crtc_compute_clock)
+		return 0;
+
+	ret = intel_shared_dpll_start_config(dev_priv, clear_pipes);
+	if (ret)
+		goto done;
+
+	for_each_intel_crtc_masked(dev, modeset_pipes, intel_crtc) {
+		struct intel_crtc_state *state = intel_crtc->new_config;
+		ret = dev_priv->display.crtc_compute_clock(intel_crtc,
+							   state);
+		if (ret) {
+			intel_shared_dpll_abort_config(dev_priv);
+			goto done;
+		}
+	}
+
+done:
+	return ret;
+}
+
 static int __intel_set_mode(struct drm_crtc *crtc,
 			    struct drm_display_mode *mode,
 			    int x, int y, struct drm_framebuffer *fb,
@@ -11058,23 +11088,9 @@  static int __intel_set_mode(struct drm_crtc *crtc,
 		prepare_pipes &= ~disable_pipes;
 	}
 
-	if (dev_priv->display.crtc_compute_clock) {
-		unsigned clear_pipes = modeset_pipes | disable_pipes;
-
-		ret = intel_shared_dpll_start_config(dev_priv, clear_pipes);
-		if (ret)
-			goto done;
-
-		for_each_intel_crtc_masked(dev, modeset_pipes, intel_crtc) {
-			struct intel_crtc_state *state = intel_crtc->new_config;
-			ret = dev_priv->display.crtc_compute_clock(intel_crtc,
-								   state);
-			if (ret) {
-				intel_shared_dpll_abort_config(dev_priv);
-				goto done;
-			}
-		}
-	}
+	ret = __intel_set_mode_setup_plls(dev, modeset_pipes, disable_pipes);
+	if (ret)
+		goto done;
 
 	for_each_intel_crtc_masked(dev, disable_pipes, intel_crtc)
 		intel_crtc_disable(&intel_crtc->base);