From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Mahesh Kumar <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: Thu, 12 Jul 2018 14:37:04 +0300 [thread overview]
Message-ID: <1668395.xiXQ9REbAx@avalon> (raw)
In-Reply-To: <20180712083635.7472-6-mahesh1.kumar@intel.com>
Hi Mahesh,
Thank you for the patch.
On Thursday, 12 July 2018 11:36:30 EEST Mahesh Kumar wrote:
> This patch implements "verify_crc_source" callback function for
> rcar drm driver.
>
> Changes Since V1:
> - avoid duplication of code
>
> Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
> Cc: dri-devel@lists.freedesktop.org
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 66 ++++++++++++++++++++++++-------
> 1 file changed, 53 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c index 15dc9caa128b..7124918372f8
> 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> @@ -756,17 +756,66 @@ static void rcar_du_crtc_disable_vblank(struct
> drm_crtc *crtc) rcrtc->vblank_enable = false;
> }
>
> +static int rcar_du_get_plane_index(struct drm_crtc *crtc,
Please pass a struct rcar_du_crtc pointer to this function, as callers should
already have it (or can easily compute it).
> + const char *source_name,
> + unsigned int *index)
I think you can simplify this by returning the index, which is always
positive, or a negative error code in case of error.
I think you could share even more code if you named this function
rcar_du_crtc_parse_crc_source() and returned both the index and the
vsp1_du_crc_source (one of them through a pointer).
> +{
> + struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
> + unsigned int i;
> + int ret = 0;
No need to initialize ret to 0.
> +
> + ret = kstrtouint(source_name + strlen("plane"), 10, index);
This assumes that the caller will always ensure that source_nam starts with
"plane", otherwise you could access the string beyond its end. This patch is
fine, but it would be easy to use the function erroneously in the future. How
about moving the strstarts(source_name, "plane") check at the beginning of
this function ?
> + 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;
> +
> + return ret;
> +}
> +
> +static int rcar_du_crtc_verify_crc_source(struct drm_crtc *crtc,
> + const char *source_name,
> + size_t *values_cnt)
> +{
> + int ret;
> + unsigned int index;
Please sort variable declarations roughly by line length to match the style of
the driver.
You need a blank line here.
> + /*
> + * 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")) {
Can source_name be NULL here ?
> + goto out;
> + } else if (strstarts(source_name, "plane")) {
> + ret = rcar_du_get_plane_index(crtc, source_name, &index);
> + if (ret < 0)
> + return ret;
> + } else {
> + return -EINVAL;
> + }
> +
> +out:
> + *values_cnt = 1;
> + return 0;
> +}
> +
> static int rcar_du_crtc_set_crc_source(struct drm_crtc *crtc,
> const char *source_name,
> size_t *values_cnt)
> {
> - struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
> struct drm_modeset_acquire_ctx ctx;
> struct drm_crtc_state *crtc_state;
> struct drm_atomic_state *state;
> enum vsp1_du_crc_source source;
> unsigned int index = 0;
> - unsigned int i;
> int ret;
>
> /*
> @@ -781,19 +830,9 @@ static int rcar_du_crtc_set_crc_source(struct drm_crtc
> *crtc, } else if (strstarts(source_name, "plane")) {
> source = VSP1_DU_CRC_PLANE;
>
> - ret = kstrtouint(source_name + strlen("plane"), 10, &index);
> + ret = rcar_du_get_plane_index(crtc, source_name, &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;
> }
> @@ -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
next prev parent reply other threads:[~2018-07-12 11:37 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-12 8:36 [PATCH 00/10] Improve crc-core driver interface Mahesh Kumar
2018-07-12 8:36 ` [PATCH 01/10] drm: crc: Introduce verify_crc_source callback Mahesh Kumar
2018-07-12 11:06 ` Laurent Pinchart
2018-07-12 8:36 ` [PATCH 02/10] drm: crc: Introduce get_crc_sources callback Mahesh Kumar
2018-07-12 11:28 ` Laurent Pinchart
2018-07-12 8:36 ` [PATCH 03/10] drm/rockchip/crc: Implement verify_crc_source callback Mahesh Kumar
2018-07-12 8:36 ` [PATCH 04/10] drm/amdgpu_dm/crc: " Mahesh Kumar
2018-07-12 8:36 ` [PATCH 05/10] drm/rcar-du/crc: " Mahesh Kumar
2018-07-12 11:37 ` Laurent Pinchart [this message]
2018-07-12 8:36 ` [PATCH 06/10] drm/i915/crc: implement " Mahesh Kumar
2018-07-12 8:36 ` [PATCH 07/10] drm/i915/crc: implement get_crc_sources callback Mahesh Kumar
2018-07-12 8:36 ` [PATCH 08/10] drm/crc: Cleanup crtc_crc_open function Mahesh Kumar
2018-07-12 11:39 ` Laurent Pinchart
2018-07-12 8:36 ` [PATCH 09/10] Revert "drm: crc: Wait for a frame before returning from open()" Mahesh Kumar
2018-07-12 8:36 ` [PATCH 10/10] drm/rcar-du/crc: Implement get_crc_sources callback Mahesh Kumar
2018-07-12 11:46 ` Laurent Pinchart
2018-07-12 9:22 ` ✗ Fi.CI.SPARSE: warning for Improve crc-core driver interface (rev6) Patchwork
2018-07-12 9:35 ` ✗ Fi.CI.BAT: failure " Patchwork
2018-07-12 11:08 ` [PATCH 00/10] Improve crc-core driver interface Laurent Pinchart
2018-07-16 14:24 ` Kumar, Mahesh
-- strict thread matches above, loose matches on Subject: below --
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-02 11:07 [PATCH 00/10] Improve crc-core driver interface Mahesh Kumar
2018-07-02 11:07 ` [PATCH 05/10] drm/rcar-du/crc: Implement verify_crc_source callback 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
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=1668395.xiXQ9REbAx@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.