All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Konduru, Chandra" <chandra.konduru@intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: "Conselvan De Oliveira,
	Ander" <ander.conselvan.de.oliveira@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>,
	"Vetter, Daniel" <daniel.vetter@intel.com>
Subject: Re: [PATCH 19/21] drm/i915: Enable skylake panel fitting using skylake shared scalers
Date: Tue, 17 Mar 2015 20:43:02 +0000	[thread overview]
Message-ID: <76A9B330A4D78C4D99CB292C4CC06C0E36F7A1B1@fmsmsx101.amr.corp.intel.com> (raw)
In-Reply-To: <20150317142219.GN21993@phenom.ffwll.local>



> -----Original Message-----
> From: Daniel Vetter [mailto:daniel.vetter@ffwll.ch] On Behalf Of Daniel Vetter
> Sent: Tuesday, March 17, 2015 7:22 AM
> To: Konduru, Chandra
> Cc: intel-gfx@lists.freedesktop.org; Conselvan De Oliveira, Ander; Vetter, Daniel
> Subject: Re: [Intel-gfx] [PATCH 19/21] drm/i915: Enable skylake panel fitting
> using skylake shared scalers
> 
> On Sat, Mar 14, 2015 at 10:55:44PM -0700, Chandra Konduru wrote:
> > Modify skylake panel fitting implementation to use shared scalers.
> >
> > Signed-off-by: Chandra Konduru <chandra.konduru@intel.com>
> 
> Ah here's the real pfit state, and the scaler state is just readout. Still we recover
> this from the bios, I do think we need to make sure that at least the crtc scaler is
> correctly assigned. Can't we recompute the scaler state after readout to make
> sure it fits with pfit state here?
> -Daniel

Crtc scaler can be computed from hw readout. As replied earlier, will be making 
changes to update crtc scaler_id and appropriately set the scaler_users. 

> 
> > ---
> >  drivers/gpu/drm/i915/intel_display.c |   39 ++++++++++++++++++---------------
> -
> >  1 file changed, 21 insertions(+), 18 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_display.c
> > b/drivers/gpu/drm/i915/intel_display.c
> > index 8ab9624..8deebb7 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -4192,11 +4192,23 @@ static void skylake_pfit_enable(struct intel_crtc
> *crtc)
> >  	struct drm_device *dev = crtc->base.dev;
> >  	struct drm_i915_private *dev_priv = dev->dev_private;
> >  	int pipe = crtc->pipe;
> > +	struct intel_crtc_scaler_state *scaler_state =
> > +		&crtc->config->scaler_state;
> >
> >  	if (crtc->config->pch_pfit.enabled) {
> > -		I915_WRITE(PS_CTL(pipe), PS_ENABLE);
> > -		I915_WRITE(PS_WIN_POS(pipe), crtc->config->pch_pfit.pos);
> > -		I915_WRITE(PS_WIN_SZ(pipe), crtc->config->pch_pfit.size);
> > +		int id;
> > +
> > +		if (WARN_ON(crtc->config->scaler_state.scaler_id < 0)) {
> > +			DRM_ERROR("Requesting pfit without getting a scaler
> first\n");
> > +			return;
> > +		}
> > +
> > +		id = scaler_state->scaler_id;
> > +		I915_WRITE(SKL_PS_CTRL(pipe, id), PS_SCALER_EN |
> > +			scaler_state->scalers[id].mode |
> > +			scaler_state->scalers[id].filter);
> > +		I915_WRITE(SKL_PS_WIN_POS(pipe, id), crtc->config-
> >pch_pfit.pos);
> > +		I915_WRITE(SKL_PS_WIN_SZ(pipe, id), crtc->config-
> >pch_pfit.size);
> >  	}
> >  }
> >
> > @@ -4664,17 +4676,7 @@ static void haswell_crtc_enable(struct drm_crtc
> > *crtc)
> >
> >  static void skylake_pfit_disable(struct intel_crtc *crtc)  {
> > -	struct drm_device *dev = crtc->base.dev;
> > -	struct drm_i915_private *dev_priv = dev->dev_private;
> > -	int pipe = crtc->pipe;
> > -
> > -	/* To avoid upsetting the power well on haswell only disable the pfit if
> > -	 * it's in use. The hw state code will make sure we get this right. */
> > -	if (crtc->config->pch_pfit.enabled) {
> > -		I915_WRITE(PS_CTL(pipe), 0);
> > -		I915_WRITE(PS_WIN_POS(pipe), 0);
> > -		I915_WRITE(PS_WIN_SZ(pipe), 0);
> > -	}
> > +	skl_detach_scaler(&crtc->base, NULL);
> >  }
> >
> >  static void ironlake_pfit_disable(struct intel_crtc *crtc) @@
> > -7953,13 +7955,14 @@ static void skylake_get_pfit_config(struct intel_crtc
> *crtc,
> >  	struct drm_device *dev = crtc->base.dev;
> >  	struct drm_i915_private *dev_priv = dev->dev_private;
> >  	uint32_t tmp;
> > +	int id = crtc->config->scaler_state.scaler_id;
> >
> > -	tmp = I915_READ(PS_CTL(crtc->pipe));
> > +	tmp = id >= 0 ? I915_READ(SKL_PS_CTRL(crtc->pipe, id)) : 0;
> >
> > -	if (tmp & PS_ENABLE) {
> > +	if (tmp & PS_SCALER_EN) {
> >  		pipe_config->pch_pfit.enabled = true;
> > -		pipe_config->pch_pfit.pos = I915_READ(PS_WIN_POS(crtc-
> >pipe));
> > -		pipe_config->pch_pfit.size = I915_READ(PS_WIN_SZ(crtc-
> >pipe));
> > +		pipe_config->pch_pfit.pos = I915_READ(SKL_PS_WIN_POS(crtc-
> >pipe, id));
> > +		pipe_config->pch_pfit.size = I915_READ(SKL_PS_WIN_SZ(crtc-
> >pipe,
> > +id));
> >  	}
> >  }
> >
> > --
> > 1.7.9.5
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2015-03-17 20:43 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-15  5:55 [PATCH 00/21] skylake display scalers Chandra Konduru
2015-03-15  5:55 ` [PATCH 01/21] drm/i915: Adding drm helper function drm_plane_from_index() Chandra Konduru
2015-03-17 14:05   ` Daniel Vetter
2015-03-17 18:12     ` Konduru, Chandra
2015-03-15  5:55 ` [PATCH 02/21] drm/i915: Register definitions for skylake scalers Chandra Konduru
2015-03-15  5:55 ` [PATCH 03/21] drm/i915: Enable get_colorkey functions for primary plane Chandra Konduru
2015-03-17 14:12   ` Daniel Vetter
2015-03-15  5:55 ` [PATCH 04/21] drm/i915: skylake scaler structure definitions Chandra Konduru
2015-03-17 16:13   ` Matt Roper
2015-03-17 21:20     ` Konduru, Chandra
2015-03-18  8:00       ` Daniel Vetter
2015-03-18  8:13         ` Daniel Vetter
2015-03-15  5:55 ` [PATCH 05/21] drm/i915: Initialize skylake scalers Chandra Konduru
2015-03-15  5:55 ` [PATCH 06/21] drm/i915: Dump scaler_state too as part of dumping crtc_state Chandra Konduru
2015-03-15  5:55 ` [PATCH 07/21] drm/i915: Helper function to update skylake scaling ratio Chandra Konduru
2015-03-17 16:35   ` Matt Roper
2015-03-17 21:23     ` Konduru, Chandra
2015-03-15  5:55 ` [PATCH 08/21] drm/i915: Add helper function to update scaler_users in crtc_state Chandra Konduru
2015-03-18  8:15   ` Daniel Vetter
2015-03-19 17:43     ` Konduru, Chandra
2015-03-20  9:57       ` Daniel Vetter
2015-03-15  5:55 ` [PATCH 09/21] drm/i915: Add atomic function to setup scalers scalers for a crtc Chandra Konduru
2015-03-15  5:55 ` [PATCH 10/21] drm/i915: Helper function to detach a scaler from a plane or crtc Chandra Konduru
2015-03-15  5:55 ` [PATCH 11/21] drm/i915: Ensure planes begin with no scaler Chandra Konduru
2015-03-15  5:55 ` [PATCH 12/21] drm/i915: Ensure colorkey and scaling aren't enabled at same time Chandra Konduru
2015-03-17 14:16   ` Daniel Vetter
2015-03-17 14:16     ` Chris Wilson
2015-03-17 14:38       ` Daniel Vetter
2015-03-17 15:12         ` Chris Wilson
2015-03-17 18:03           ` Konduru, Chandra
2015-03-15  5:55 ` [PATCH 13/21] drm/i915: Preserve scaler state when clearing crtc_state Chandra Konduru
2015-03-17 14:17   ` Daniel Vetter
2015-03-17 18:11     ` Konduru, Chandra
2015-03-18  6:24       ` Ander Conselvan De Oliveira
2015-03-15  5:55 ` [PATCH 14/21] drm/i915: use current scaler state during readout_hw_state Chandra Konduru
2015-03-17 14:19   ` Daniel Vetter
2015-03-17 18:54     ` Konduru, Chandra
2015-03-18  8:06       ` Daniel Vetter
2015-03-15  5:55 ` [PATCH 15/21] drm/i915: Update scaling ratio as part of crtc_compute_config Chandra Konduru
2015-03-15  5:55 ` [PATCH 16/21] drm/i915: Ensure setting up scalers into staged crtc_state Chandra Konduru
2015-03-15  5:55 ` [PATCH 17/21] drm/i915: copy staged scaler state from drm state to crtc->config Chandra Konduru
2015-03-15  5:55 ` [PATCH 18/21] drm/i915: stage panel fitting scaler request for fixed mode panel Chandra Konduru
2015-03-15  5:55 ` [PATCH 19/21] drm/i915: Enable skylake panel fitting using skylake shared scalers Chandra Konduru
2015-03-17 14:22   ` Daniel Vetter
2015-03-17 20:43     ` Konduru, Chandra [this message]
2015-03-18  8:19       ` Daniel Vetter
2015-03-15  5:55 ` [PATCH 20/21] drm/i915: Enable skylake primary plane scaling using " Chandra Konduru
2015-03-15  5:55 ` [PATCH 21/21] drm/i915: Enable skylake sprite " Chandra Konduru
2015-03-17 14:32 ` [PATCH 00/21] skylake display scalers Daniel Vetter
2015-03-17 20:54   ` Konduru, Chandra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=76A9B330A4D78C4D99CB292C4CC06C0E36F7A1B1@fmsmsx101.amr.corp.intel.com \
    --to=chandra.konduru@intel.com \
    --cc=ander.conselvan.de.oliveira@intel.com \
    --cc=daniel.vetter@intel.com \
    --cc=daniel@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.