All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: "Kumar, Mahesh" <mahesh1.kumar@intel.com>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 05/10] drm/rcar-du/crc: Implement verify_crc_source callback
Date: Wed, 11 Jul 2018 13:45:29 +0300	[thread overview]
Message-ID: <2639703.I0Fo2OazOQ@avalon> (raw)
In-Reply-To: <fb0731e3-1f61-c183-7fd5-433b1acff4df@intel.com>

Hi Mahesh,

On Tuesday, 10 July 2018 15:59:11 EEST Kumar, Mahesh wrote:
> On 7/10/2018 5:07 PM, Laurent Pinchart wrote:
> > On Monday, 2 July 2018 14:07:24 EEST Mahesh Kumar wrote:
> >> This patch implements "verify_crc_source" callback function for
> >> rcar drm driver.
> >> 
> >> Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
> >> Cc: dri-devel@lists.freedesktop.org
> >> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> >> ---
> >> 
> >>   drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 40 +++++++++++++++++++++++++++
> >>   1 file changed, 40 insertions(+)
> >> 
> >> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> >> b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c index 15dc9caa128b..24eeaa7e14d7
> >> 100644
> >> --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> >> +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> >> @@ -756,6 +756,45 @@ static void rcar_du_crtc_disable_vblank(struct
> >> drm_crtc *crtc)
> >>  		rcrtc->vblank_enable = false;
> >>   }
> >> 
> >> +static int rcar_du_crtc_verify_crc_source(struct drm_crtc *crtc,
> >> +					  const char *source_name,
> >> +					  size_t *values_cnt)
> >> +{
> >> +	struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
> >> +	unsigned int index = 0;
> >> +	unsigned int i;
> >> +	int ret;
> >> +
> >> +	/*
> >> +	 * Parse the source name. Supported values are "plane%u" to compute the
> >> +	 * CRC on an input plane (%u is the plane ID), and "auto" to compute
> >> the
> >> +	 * CRC on the composer (VSP) output.
> >> +	 */
> >> +	if (!source_name || !strcmp(source_name, "auto")) {
> >> +		goto out;
> >> +	} else if (strstarts(source_name, "plane")) {
> >> +		ret = kstrtouint(source_name + strlen("plane"), 10, &index);
> >> +		if (ret < 0)
> >> +			return ret;
> >> +
> >> +		for (i = 0; i < rcrtc->vsp->num_planes; ++i) {
> >> +			if (index == rcrtc->vsp->planes[i].plane.base.id) {
> >> +				index = i;
> >> +				break;
> >> +			}
> >> +		}
> >> +
> >> +		if (i >= rcrtc->vsp->num_planes)
> >> +			return -EINVAL;
> >> +	} else {
> >> +		return -EINVAL;
> >> +	}
> >> +
> >> +out:
> >> +	*values_cnt = 1;
> >> +	return 0;
> > 
> > This duplicates lots of code from the rcar_du_crtc_set_crc_source()
> > function. Could you please extract it to a shared function ?
> 
> Agree, it duplicates the code but "index" is needed by set_crc_source call
> anyway will create a wrapper to avoid duplication of code.

Thank you.

> > Could you please also implement support for the .get_crc_sources()
> > operation ? I think doing so might show limitations in the current API,
> > namely the fact that the list will need to be dynamically created for
> > this driver.
> 
> for that I think rcar_du_crtc_create function can build a dynamic list
> during initializing crtc functions, unless plane can be dynamically
> allocated to any CRTC. this is the place where I need input from maintainer.

That should indeed work. The DU hardware can, in some SoC models, share planes 
between CRTCs. In that case we'll need to ensure that the source corresponds 
to a plane currently associated with the CRTC. That check is currently missing 
and likely out of scope for this patch series, so don't worry about it.

> >> +}
> >> +
> >>   static int rcar_du_crtc_set_crc_source(struct drm_crtc *crtc,
> >>   				       const char *source_name,
> >>   				       size_t *values_cnt)
> >> @@ -861,6 +900,7 @@ static const struct drm_crtc_funcs crtc_funcs_gen3 =
> >> {
> >> 
> >>   	.enable_vblank = rcar_du_crtc_enable_vblank,
> >>   	.disable_vblank = rcar_du_crtc_disable_vblank,
> >>   	.set_crc_source = rcar_du_crtc_set_crc_source,
> >> 
> >> +	.verify_crc_source = rcar_du_crtc_verify_crc_source,
> >> 
> >>   };
> >>   
> >>   /*
> >>   ----------------------------------------------------------------------
> >>   --


-- 
Regards,

Laurent Pinchart



_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2018-07-11 10:45 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-02 11:07 [PATCH 00/10] Improve crc-core driver interface Mahesh Kumar
2018-07-02 11:07 ` [PATCH 01/10] drm: crc: Introduce verify_crc_source callback Mahesh Kumar
2018-07-10 11:26   ` Laurent Pinchart
2018-07-10 11:54     ` Kumar, Mahesh
2018-07-10 12:10       ` Laurent Pinchart
2018-07-10 12:12         ` Kumar, Mahesh
2018-07-02 11:07 ` [PATCH 02/10] drm: crc: Introduce get_crc_sources callback Mahesh Kumar
2018-07-10 11:22   ` Laurent Pinchart
2018-07-10 12:01     ` Kumar, Mahesh
2018-07-10 12:09       ` Laurent Pinchart
2018-07-10 12:11         ` Kumar, Mahesh
2018-07-02 11:07 ` [PATCH 03/10] drm/rockchip/crc: Implement verify_crc_source callback Mahesh Kumar
2018-07-03 10:16   ` Maarten Lankhorst
2018-07-03 10:46     ` Heiko Stübner
2018-07-02 11:07 ` [PATCH 04/10] drm/amdgpu_dm/crc: " Mahesh Kumar
2018-07-03 10:19   ` Maarten Lankhorst
2018-07-03 13:04     ` Leo Li
2018-07-02 11:07 ` [PATCH 05/10] drm/rcar-du/crc: " Mahesh Kumar
2018-07-03 10:20   ` Maarten Lankhorst
2018-07-10 11:37   ` Laurent Pinchart
2018-07-10 12:59     ` Kumar, Mahesh
2018-07-11 10:45       ` Laurent Pinchart [this message]
2018-07-02 11:07 ` [PATCH 06/10] drm/i915/crc: implement " Mahesh Kumar
2018-07-02 12:18   ` Maarten Lankhorst
2018-07-02 11:07 ` [PATCH 07/10] drm/i915/crc: implement get_crc_sources callback Mahesh Kumar
2018-07-02 11:07 ` [PATCH 08/10] drm/crc: Cleanup crtc_crc_open function Mahesh Kumar
2018-07-03 13:05   ` Leo Li
2018-07-10 11:49   ` Laurent Pinchart
2018-07-10 13:18     ` Kumar, Mahesh
2018-07-02 11:07 ` [PATCH 09/10] Revert "drm: crc: Wait for a frame before returning from open()" Mahesh Kumar
2018-07-10 12:02   ` Laurent Pinchart
2018-07-02 11:07 ` [PATCH 10/10] drm: crc: Introduce pre_crc_read function Mahesh Kumar
2018-07-10 12:05   ` Laurent Pinchart
2018-07-02 11:46 ` ✗ Fi.CI.BAT: failure for Improve crc-core driver interface (rev4) Patchwork
2018-07-02 16:15 ` [PATCH 00/10] Improve crc-core driver interface Alex Deucher
2018-07-11 15:11 Mahesh Kumar
2018-07-11 15:11 ` [PATCH 05/10] drm/rcar-du/crc: Implement verify_crc_source callback Mahesh Kumar
2018-07-12  8:36 [PATCH 00/10] Improve crc-core driver interface Mahesh Kumar
2018-07-12  8:36 ` [PATCH 05/10] drm/rcar-du/crc: Implement verify_crc_source callback Mahesh Kumar
2018-07-12 11:37   ` Laurent Pinchart

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=2639703.I0Fo2OazOQ@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=mahesh1.kumar@intel.com \
    /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.