From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: "Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org
Subject: Re: [PATCH 3/4] rcar-vin: make rvin_{start,stop}_streaming() available for internal use
Date: Fri, 14 Dec 2018 10:27:22 +0200 [thread overview]
Message-ID: <23080491.FYkgn8OxuK@avalon> (raw)
In-Reply-To: <20181214061824.10296-4-niklas.soderlund+renesas@ragnatech.se>
Hi Niklas,
Thank you for the patch.
On Friday, 14 December 2018 08:18:23 EET Niklas Söderlund wrote:
> To support suspend/resume rvin_{start,stop}_streaming() needs to be
> accessible from the suspend and resume callbacks. Up until now the only
> users of these functions have been the callbacks in struct vb2_ops so
> the arguments to the functions are not suitable for use by the driver it
> self.
>
> Fix this by adding wrappers for the struct vb2_ops callbacks which calls
> the new rvin_{start,stop}_streaming() using more friendly arguments.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> ---
> drivers/media/platform/rcar-vin/rcar-dma.c | 20 ++++++++++++++------
> drivers/media/platform/rcar-vin/rcar-vin.h | 3 +++
> 2 files changed, 17 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c
> b/drivers/media/platform/rcar-vin/rcar-dma.c index
> 64f7636f94d6a0a3..d11d4df1906a8962 100644
> --- a/drivers/media/platform/rcar-vin/rcar-dma.c
> +++ b/drivers/media/platform/rcar-vin/rcar-dma.c
> @@ -1143,9 +1143,8 @@ static int rvin_set_stream(struct rvin_dev *vin, int
> on) return ret;
> }
>
> -static int rvin_start_streaming(struct vb2_queue *vq, unsigned int count)
> +int rvin_start_streaming(struct rvin_dev *vin)
> {
> - struct rvin_dev *vin = vb2_get_drv_priv(vq);
> unsigned long flags;
> int ret;
>
> @@ -1187,9 +1186,13 @@ static int rvin_start_streaming(struct vb2_queue *vq,
> unsigned int count) return ret;
> }
>
> -static void rvin_stop_streaming(struct vb2_queue *vq)
> +static int rvin_start_streaming_vq(struct vb2_queue *vq, unsigned int
> count)
> +{
> + return rvin_start_streaming(vb2_get_drv_priv(vq));
> +}
> +
> +void rvin_stop_streaming(struct rvin_dev *vin)
> {
> - struct rvin_dev *vin = vb2_get_drv_priv(vq);
> unsigned long flags;
> int retries = 0;
>
> @@ -1238,12 +1241,17 @@ static void rvin_stop_streaming(struct vb2_queue
> *vq) vin->scratch_phys);
> }
>
> +static void rvin_stop_streaming_vq(struct vb2_queue *vq)
> +{
> + rvin_stop_streaming(vb2_get_drv_priv(vq));
> +}
You'll need a bit more than this. rvin_stop_streaming() calls
return_all_buffers() and dma_free_coherent() which you don't want at suspend
time. Buffers should not be returned to userspace but kept for reuse, and it's
pointless to free the scratch buffer at suspend time to reallocate it at
resume time.
> static const struct vb2_ops rvin_qops = {
> .queue_setup = rvin_queue_setup,
> .buf_prepare = rvin_buffer_prepare,
> .buf_queue = rvin_buffer_queue,
> - .start_streaming = rvin_start_streaming,
> - .stop_streaming = rvin_stop_streaming,
> + .start_streaming = rvin_start_streaming_vq,
> + .stop_streaming = rvin_stop_streaming_vq,
> .wait_prepare = vb2_ops_wait_prepare,
> .wait_finish = vb2_ops_wait_finish,
> };
> diff --git a/drivers/media/platform/rcar-vin/rcar-vin.h
> b/drivers/media/platform/rcar-vin/rcar-vin.h index
> d21fc991b7a9da36..700fae1c1225a2f3 100644
> --- a/drivers/media/platform/rcar-vin/rcar-vin.h
> +++ b/drivers/media/platform/rcar-vin/rcar-vin.h
> @@ -269,4 +269,7 @@ void rvin_crop_scale_comp(struct rvin_dev *vin);
>
> int rvin_set_channel_routing(struct rvin_dev *vin, u8 chsel);
>
> +int rvin_start_streaming(struct rvin_dev *vin);
> +void rvin_stop_streaming(struct rvin_dev *vin);
> +
> #endif
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2018-12-14 8:26 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-14 6:18 [PATCH 0/4] rcar-vin: add support for suspend and resume Niklas Söderlund
2018-12-14 6:18 ` [PATCH 1/4] rcar-vin: fix wrong return value in rvin_set_channel_routing() Niklas Söderlund
2018-12-14 8:19 ` Laurent Pinchart
2018-12-14 6:18 ` [PATCH 2/4] rcar-vin: cache the CSI-2 channel selection value Niklas Söderlund
2018-12-14 8:23 ` Laurent Pinchart
2018-12-14 6:18 ` [PATCH 3/4] rcar-vin: make rvin_{start,stop}_streaming() available for internal use Niklas Söderlund
2018-12-14 8:27 ` Laurent Pinchart [this message]
2018-12-14 6:18 ` [PATCH 4/4] rcar-vin: add support for suspend and resume Niklas Söderlund
2018-12-14 8: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=23080491.FYkgn8OxuK@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=niklas.soderlund+renesas@ragnatech.se \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox