From: jacopo mondi <jacopo@jmondi.org>
To: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-renesas-soc@vger.kernel.org,
Kieran Bingham <kieran.bingham@ideasonboard.com>
Subject: Re: [PATCH v2 5/8] v4l: vsp1: Extend the DU API to support CRC computation
Date: Sat, 28 Apr 2018 12:03:16 +0200 [thread overview]
Message-ID: <20180428100316.GC18201@w540> (raw)
In-Reply-To: <20180422223430.16407-6-laurent.pinchart+renesas@ideasonboard.com>
[-- Attachment #1: Type: text/plain, Size: 5101 bytes --]
Hi Laurent,
just one minor comment below
On Mon, Apr 23, 2018 at 01:34:27AM +0300, Laurent Pinchart wrote:
> Add a parameter (in the form of a structure to ease future API
> extensions) to the VSP atomic flush handler to pass CRC source
> configuration, and pass the CRC value to the completion callback.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> drivers/gpu/drm/rcar-du/rcar_du_vsp.c | 6 ++++--
> drivers/media/platform/vsp1/vsp1_drm.c | 6 ++++--
> drivers/media/platform/vsp1/vsp1_drm.h | 2 +-
> include/media/vsp1.h | 29 +++++++++++++++++++++++++++--
> 4 files changed, 36 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_vsp.c b/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> index 2c260c33840b..bdcec201591f 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> @@ -31,7 +31,7 @@
> #include "rcar_du_kms.h"
> #include "rcar_du_vsp.h"
>
> -static void rcar_du_vsp_complete(void *private, bool completed)
> +static void rcar_du_vsp_complete(void *private, bool completed, u32 crc)
> {
> struct rcar_du_crtc *crtc = private;
>
> @@ -102,7 +102,9 @@ void rcar_du_vsp_atomic_begin(struct rcar_du_crtc *crtc)
>
> void rcar_du_vsp_atomic_flush(struct rcar_du_crtc *crtc)
> {
> - vsp1_du_atomic_flush(crtc->vsp->vsp, crtc->vsp_pipe);
> + struct vsp1_du_atomic_pipe_config cfg = { { 0, } };
> +
> + vsp1_du_atomic_flush(crtc->vsp->vsp, crtc->vsp_pipe, &cfg);
> }
>
> /* Keep the two tables in sync. */
> diff --git a/drivers/media/platform/vsp1/vsp1_drm.c b/drivers/media/platform/vsp1/vsp1_drm.c
> index 2b29a83dceb9..5fc31578f9b0 100644
> --- a/drivers/media/platform/vsp1/vsp1_drm.c
> +++ b/drivers/media/platform/vsp1/vsp1_drm.c
> @@ -36,7 +36,7 @@ static void vsp1_du_pipeline_frame_end(struct vsp1_pipeline *pipe,
> bool complete = completion == VSP1_DL_FRAME_END_COMPLETED;
>
> if (drm_pipe->du_complete)
> - drm_pipe->du_complete(drm_pipe->du_private, complete);
> + drm_pipe->du_complete(drm_pipe->du_private, complete, 0);
>
> if (completion & VSP1_DL_FRAME_END_INTERNAL) {
> drm_pipe->force_brx_release = false;
> @@ -739,8 +739,10 @@ EXPORT_SYMBOL_GPL(vsp1_du_atomic_update);
> * vsp1_du_atomic_flush - Commit an atomic update
> * @dev: the VSP device
> * @pipe_index: the DRM pipeline index
> + * @cfg: atomic pipe configuration
> */
> -void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index)
> +void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index,
> + const struct vsp1_du_atomic_pipe_config *cfg)
> {
> struct vsp1_device *vsp1 = dev_get_drvdata(dev);
> struct vsp1_drm_pipeline *drm_pipe = &vsp1->drm->pipe[pipe_index];
> diff --git a/drivers/media/platform/vsp1/vsp1_drm.h b/drivers/media/platform/vsp1/vsp1_drm.h
> index f4af1b2b12d6..e5b88b28806c 100644
> --- a/drivers/media/platform/vsp1/vsp1_drm.h
> +++ b/drivers/media/platform/vsp1/vsp1_drm.h
> @@ -35,7 +35,7 @@ struct vsp1_drm_pipeline {
> wait_queue_head_t wait_queue;
>
> /* Frame synchronisation */
> - void (*du_complete)(void *, bool);
> + void (*du_complete)(void *data, bool completed, u32 crc);
> void *du_private;
> };
>
> diff --git a/include/media/vsp1.h b/include/media/vsp1.h
> index ff7ef894465d..ac63a9928a79 100644
> --- a/include/media/vsp1.h
> +++ b/include/media/vsp1.h
> @@ -34,7 +34,7 @@ struct vsp1_du_lif_config {
> unsigned int width;
> unsigned int height;
>
> - void (*callback)(void *, bool);
> + void (*callback)(void *data, bool completed, u32 crc);
> void *callback_data;
> };
>
> @@ -61,11 +61,36 @@ struct vsp1_du_atomic_config {
> unsigned int zpos;
> };
>
> +/**
> + * enum vsp1_du_crc_source - Source used for CRC calculation
> + * @VSP1_DU_CRC_NONE: CRC calculation disabled
> + * @VSP_DU_CRC_PLANE: Perform CRC calculation on an input plane
> + * @VSP_DU_CRC_OUTPUT: Perform CRC calculation on the composed output
These two paramters are called VSP1_DU_CRC_* not VSP_DU_CRC_*
> + */
> +enum vsp1_du_crc_source {
> + VSP1_DU_CRC_NONE,
> + VSP1_DU_CRC_PLANE,
> + VSP1_DU_CRC_OUTPUT,
> +};
> +
> +/**
> + * struct vsp1_du_atomic_pipe_config - VSP atomic pipe configuration parameters
> + * @crc.source: source for CRC calculation
> + * @crc.index: index of the CRC source plane (when crc.source is set to plane)
> + */
> +struct vsp1_du_atomic_pipe_config {
> + struct {
> + enum vsp1_du_crc_source source;
> + unsigned int index;
> + } crc;
> +};
> +
> void vsp1_du_atomic_begin(struct device *dev, unsigned int pipe_index);
> int vsp1_du_atomic_update(struct device *dev, unsigned int pipe_index,
> unsigned int rpf,
> const struct vsp1_du_atomic_config *cfg);
> -void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index);
> +void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index,
> + const struct vsp1_du_atomic_pipe_config *cfg);
> int vsp1_du_map_sg(struct device *dev, struct sg_table *sgt);
> void vsp1_du_unmap_sg(struct device *dev, struct sg_table *sgt);
>
> --
> Regards,
>
> Laurent Pinchart
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: jacopo mondi <jacopo@jmondi.org>
To: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: linux-renesas-soc@vger.kernel.org,
Kieran Bingham <kieran.bingham@ideasonboard.com>,
dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org
Subject: Re: [PATCH v2 5/8] v4l: vsp1: Extend the DU API to support CRC computation
Date: Sat, 28 Apr 2018 12:03:16 +0200 [thread overview]
Message-ID: <20180428100316.GC18201@w540> (raw)
In-Reply-To: <20180422223430.16407-6-laurent.pinchart+renesas@ideasonboard.com>
[-- Attachment #1.1: Type: text/plain, Size: 5101 bytes --]
Hi Laurent,
just one minor comment below
On Mon, Apr 23, 2018 at 01:34:27AM +0300, Laurent Pinchart wrote:
> Add a parameter (in the form of a structure to ease future API
> extensions) to the VSP atomic flush handler to pass CRC source
> configuration, and pass the CRC value to the completion callback.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> drivers/gpu/drm/rcar-du/rcar_du_vsp.c | 6 ++++--
> drivers/media/platform/vsp1/vsp1_drm.c | 6 ++++--
> drivers/media/platform/vsp1/vsp1_drm.h | 2 +-
> include/media/vsp1.h | 29 +++++++++++++++++++++++++++--
> 4 files changed, 36 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_vsp.c b/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> index 2c260c33840b..bdcec201591f 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_vsp.c
> @@ -31,7 +31,7 @@
> #include "rcar_du_kms.h"
> #include "rcar_du_vsp.h"
>
> -static void rcar_du_vsp_complete(void *private, bool completed)
> +static void rcar_du_vsp_complete(void *private, bool completed, u32 crc)
> {
> struct rcar_du_crtc *crtc = private;
>
> @@ -102,7 +102,9 @@ void rcar_du_vsp_atomic_begin(struct rcar_du_crtc *crtc)
>
> void rcar_du_vsp_atomic_flush(struct rcar_du_crtc *crtc)
> {
> - vsp1_du_atomic_flush(crtc->vsp->vsp, crtc->vsp_pipe);
> + struct vsp1_du_atomic_pipe_config cfg = { { 0, } };
> +
> + vsp1_du_atomic_flush(crtc->vsp->vsp, crtc->vsp_pipe, &cfg);
> }
>
> /* Keep the two tables in sync. */
> diff --git a/drivers/media/platform/vsp1/vsp1_drm.c b/drivers/media/platform/vsp1/vsp1_drm.c
> index 2b29a83dceb9..5fc31578f9b0 100644
> --- a/drivers/media/platform/vsp1/vsp1_drm.c
> +++ b/drivers/media/platform/vsp1/vsp1_drm.c
> @@ -36,7 +36,7 @@ static void vsp1_du_pipeline_frame_end(struct vsp1_pipeline *pipe,
> bool complete = completion == VSP1_DL_FRAME_END_COMPLETED;
>
> if (drm_pipe->du_complete)
> - drm_pipe->du_complete(drm_pipe->du_private, complete);
> + drm_pipe->du_complete(drm_pipe->du_private, complete, 0);
>
> if (completion & VSP1_DL_FRAME_END_INTERNAL) {
> drm_pipe->force_brx_release = false;
> @@ -739,8 +739,10 @@ EXPORT_SYMBOL_GPL(vsp1_du_atomic_update);
> * vsp1_du_atomic_flush - Commit an atomic update
> * @dev: the VSP device
> * @pipe_index: the DRM pipeline index
> + * @cfg: atomic pipe configuration
> */
> -void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index)
> +void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index,
> + const struct vsp1_du_atomic_pipe_config *cfg)
> {
> struct vsp1_device *vsp1 = dev_get_drvdata(dev);
> struct vsp1_drm_pipeline *drm_pipe = &vsp1->drm->pipe[pipe_index];
> diff --git a/drivers/media/platform/vsp1/vsp1_drm.h b/drivers/media/platform/vsp1/vsp1_drm.h
> index f4af1b2b12d6..e5b88b28806c 100644
> --- a/drivers/media/platform/vsp1/vsp1_drm.h
> +++ b/drivers/media/platform/vsp1/vsp1_drm.h
> @@ -35,7 +35,7 @@ struct vsp1_drm_pipeline {
> wait_queue_head_t wait_queue;
>
> /* Frame synchronisation */
> - void (*du_complete)(void *, bool);
> + void (*du_complete)(void *data, bool completed, u32 crc);
> void *du_private;
> };
>
> diff --git a/include/media/vsp1.h b/include/media/vsp1.h
> index ff7ef894465d..ac63a9928a79 100644
> --- a/include/media/vsp1.h
> +++ b/include/media/vsp1.h
> @@ -34,7 +34,7 @@ struct vsp1_du_lif_config {
> unsigned int width;
> unsigned int height;
>
> - void (*callback)(void *, bool);
> + void (*callback)(void *data, bool completed, u32 crc);
> void *callback_data;
> };
>
> @@ -61,11 +61,36 @@ struct vsp1_du_atomic_config {
> unsigned int zpos;
> };
>
> +/**
> + * enum vsp1_du_crc_source - Source used for CRC calculation
> + * @VSP1_DU_CRC_NONE: CRC calculation disabled
> + * @VSP_DU_CRC_PLANE: Perform CRC calculation on an input plane
> + * @VSP_DU_CRC_OUTPUT: Perform CRC calculation on the composed output
These two paramters are called VSP1_DU_CRC_* not VSP_DU_CRC_*
> + */
> +enum vsp1_du_crc_source {
> + VSP1_DU_CRC_NONE,
> + VSP1_DU_CRC_PLANE,
> + VSP1_DU_CRC_OUTPUT,
> +};
> +
> +/**
> + * struct vsp1_du_atomic_pipe_config - VSP atomic pipe configuration parameters
> + * @crc.source: source for CRC calculation
> + * @crc.index: index of the CRC source plane (when crc.source is set to plane)
> + */
> +struct vsp1_du_atomic_pipe_config {
> + struct {
> + enum vsp1_du_crc_source source;
> + unsigned int index;
> + } crc;
> +};
> +
> void vsp1_du_atomic_begin(struct device *dev, unsigned int pipe_index);
> int vsp1_du_atomic_update(struct device *dev, unsigned int pipe_index,
> unsigned int rpf,
> const struct vsp1_du_atomic_config *cfg);
> -void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index);
> +void vsp1_du_atomic_flush(struct device *dev, unsigned int pipe_index,
> + const struct vsp1_du_atomic_pipe_config *cfg);
> int vsp1_du_map_sg(struct device *dev, struct sg_table *sgt);
> void vsp1_du_unmap_sg(struct device *dev, struct sg_table *sgt);
>
> --
> Regards,
>
> Laurent Pinchart
>
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-04-28 10:03 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-22 22:34 [PATCH v2 0/8] R-Car DU: Support CRC calculation Laurent Pinchart
2018-04-22 22:34 ` Laurent Pinchart
2018-04-22 22:34 ` [PATCH v2 1/8] v4l: vsp1: Use SPDX license headers Laurent Pinchart
2018-04-22 22:34 ` Laurent Pinchart
2018-04-27 21:25 ` Kieran Bingham
2018-04-27 21:25 ` Kieran Bingham
2018-04-27 21:47 ` Laurent Pinchart
2018-04-27 21:47 ` Laurent Pinchart
2018-04-22 22:34 ` [PATCH v2 2/8] v4l: vsp1: Share the CLU, LIF and LUT set_fmt pad operation code Laurent Pinchart
2018-04-22 22:34 ` Laurent Pinchart
2018-04-28 9:50 ` jacopo mondi
2018-04-28 9:50 ` jacopo mondi
2018-04-28 16:07 ` Laurent Pinchart
2018-04-28 16:07 ` Laurent Pinchart
2018-04-28 17:16 ` Kieran Bingham
2018-04-28 17:16 ` Kieran Bingham
2018-04-28 17:25 ` Laurent Pinchart
2018-04-28 17:25 ` Laurent Pinchart
2018-04-28 17:30 ` Laurent Pinchart
2018-04-28 17:30 ` Laurent Pinchart
2018-04-28 17:32 ` Kieran Bingham
2018-04-28 17:32 ` Kieran Bingham
2018-04-22 22:34 ` [PATCH v2 3/8] v4l: vsp1: Reset the crop and compose rectangles in the set_fmt helper Laurent Pinchart
2018-04-22 22:34 ` Laurent Pinchart
2018-04-28 9:56 ` jacopo mondi
2018-04-28 9:56 ` jacopo mondi
2018-04-28 17:22 ` Kieran Bingham
2018-04-28 17:22 ` Kieran Bingham
2018-04-22 22:34 ` [PATCH v2 4/8] v4l: vsp1: Document the vsp1_du_atomic_config structure Laurent Pinchart
2018-04-22 22:34 ` Laurent Pinchart
2018-04-28 17:29 ` Kieran Bingham
2018-04-28 17:29 ` Kieran Bingham
2018-04-22 22:34 ` [PATCH v2 5/8] v4l: vsp1: Extend the DU API to support CRC computation Laurent Pinchart
2018-04-22 22:34 ` Laurent Pinchart
2018-04-28 10:03 ` jacopo mondi [this message]
2018-04-28 10:03 ` jacopo mondi
2018-04-28 16:19 ` Laurent Pinchart
2018-04-28 16:19 ` Laurent Pinchart
2018-04-28 17:48 ` Kieran Bingham
2018-04-28 17:48 ` Kieran Bingham
2018-04-22 22:34 ` [PATCH v2 6/8] v4l: vsp1: Add support for the DISCOM entity Laurent Pinchart
2018-04-22 22:34 ` Laurent Pinchart
2018-04-28 10:40 ` jacopo mondi
2018-04-28 10:40 ` jacopo mondi
2018-04-28 16:50 ` Laurent Pinchart
2018-04-28 16:50 ` Laurent Pinchart
2018-04-28 18:28 ` Kieran Bingham
2018-04-28 18:28 ` Kieran Bingham
2018-04-22 22:34 ` [PATCH v2 7/8] v4l: vsp1: Integrate DISCOM in display pipeline Laurent Pinchart
2018-04-22 22:34 ` Laurent Pinchart
2018-04-28 11:00 ` jacopo mondi
2018-04-28 11:00 ` jacopo mondi
2018-04-28 16:57 ` Laurent Pinchart
2018-04-28 16:57 ` Laurent Pinchart
2018-04-28 18:58 ` Kieran Bingham
2018-04-28 18:58 ` Kieran Bingham
2018-04-28 19:15 ` Laurent Pinchart
2018-04-28 19:15 ` Laurent Pinchart
2018-04-22 22:34 ` [PATCH v2 8/8] drm: rcar-du: Add support for CRC computation Laurent Pinchart
2018-04-22 22:34 ` Laurent Pinchart
2018-04-28 19:16 ` Kieran Bingham
2018-04-28 19:16 ` Kieran Bingham
2018-04-28 20:15 ` Laurent Pinchart
2018-04-28 20:15 ` Laurent Pinchart
2018-04-27 21:07 ` igt trouble with planes shared between multiple CRTCs (Re: [PATCH v2 0/8] R-Car DU: Support CRC calculation) Laurent Pinchart
2018-04-27 21:07 ` Laurent Pinchart
2018-04-30 14:55 ` Daniel Vetter
2018-04-30 14:55 ` Daniel Vetter
2018-04-30 14:56 ` [igt-dev] " Daniel Vetter
2018-04-30 14:56 ` Daniel Vetter
2018-04-30 14:56 ` Daniel Vetter
2018-05-01 8:58 ` [igt-dev] " Maarten Lankhorst
2018-05-01 8:58 ` Maarten Lankhorst
2018-05-01 8:58 ` Maarten Lankhorst
2018-05-01 15:47 ` [igt-dev] " Maarten Lankhorst
2018-05-01 15:47 ` Maarten Lankhorst
2018-05-01 15:47 ` Maarten Lankhorst
2018-05-02 7:32 ` Daniel Vetter
2018-05-02 7:32 ` Daniel Vetter
2018-05-07 13:28 ` [igt-dev] " Maarten Lankhorst
2018-05-07 13:28 ` Maarten Lankhorst
2018-05-07 13:28 ` Maarten Lankhorst
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=20180428100316.GC18201@w540 \
--to=jacopo@jmondi.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=kieran.bingham@ideasonboard.com \
--cc=laurent.pinchart+renesas@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.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.