linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Cc: Benoit Parrot <bparrot@ti.com>, Pratyush Yadav <p.yadav@ti.com>,
	Lokesh Vutla <lokeshvutla@ti.com>,
	linux-media@vger.kernel.org
Subject: Re: [PATCH 17/28] media: ti-vpe: cal: allocate pix proc dynamically
Date: Sun, 18 Apr 2021 15:59:15 +0300	[thread overview]
Message-ID: <YHwtI+WIlHWCBEH5@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20210412113457.328012-18-tomi.valkeinen@ideasonboard.com>

Hi Tomi,

Thank you for the patch.

On Mon, Apr 12, 2021 at 02:34:46PM +0300, Tomi Valkeinen wrote:
> CAL has 4 pixel processing units but the units are not needed e.g. for
> metadata. As we could be capturing 4 pixel streams and 4 metadata
> streams, i.e. using 8 DMA contexts, we cannot assign a pixel processing
> unit to every DMA context. Instead we need to reserve a pixel processing
> unit only when needed.
> 
> Add functions to reserve and release a pix proc unit, and use them in
> cal_ctx_prepare/unprepare. Note that for the time being we still always
> reserve a pix proc unit.
> 
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
> ---
>  drivers/media/platform/ti-vpe/cal.c | 44 +++++++++++++++++++++++++++--
>  drivers/media/platform/ti-vpe/cal.h |  2 ++
>  2 files changed, 44 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/platform/ti-vpe/cal.c b/drivers/media/platform/ti-vpe/cal.c
> index a6ca341c98bd..e397f59d3bbc 100644
> --- a/drivers/media/platform/ti-vpe/cal.c
> +++ b/drivers/media/platform/ti-vpe/cal.c
> @@ -290,6 +290,37 @@ void cal_quickdump_regs(struct cal_dev *cal)
>   * ------------------------------------------------------------------
>   */
>  
> +#define CAL_MAX_PIX_PROC 4
> +
> +static int cal_reserve_pix_proc(struct cal_dev *cal)
> +{
> +	unsigned long ret;
> +
> +	spin_lock(&cal->v4l2_dev.lock);
> +
> +	ret = find_first_zero_bit(&cal->reserve_pix_proc_mask, CAL_MAX_PIX_PROC);
> +
> +	if (ret == CAL_MAX_PIX_PROC) {
> +		spin_unlock(&cal->v4l2_dev.lock);
> +		return -ENOSPC;
> +	}
> +
> +	cal->reserve_pix_proc_mask |= BIT(ret);
> +
> +	spin_unlock(&cal->v4l2_dev.lock);
> +
> +	return ret;
> +}
> +
> +static void cal_release_pix_proc(struct cal_dev *cal, unsigned int pix_proc_num)
> +{
> +	spin_lock(&cal->v4l2_dev.lock);
> +
> +	cal->reserve_pix_proc_mask &= ~BIT(pix_proc_num);
> +
> +	spin_unlock(&cal->v4l2_dev.lock);
> +}
> +
>  static void cal_ctx_csi2_config(struct cal_ctx *ctx)
>  {
>  	u32 val;
> @@ -433,12 +464,22 @@ static bool cal_ctx_wr_dma_stopped(struct cal_ctx *ctx)
>  
>  int cal_ctx_prepare(struct cal_ctx *ctx)
>  {
> +	int ret;
> +
> +	ret = cal_reserve_pix_proc(ctx->cal);
> +	if (ret < 0) {
> +		ctx_err(ctx, "Failed to reserve pix proc: %d\n", ret);
> +		return ret;
> +	}
> +
> +	ctx->pix_proc = ret;

I wonder if this is the right place to allocate a context, it may be
better to reject invalid pipeline configurations earlier on. It's fine
for now, we can revisit this in subsequent patches, with the full
multiplexed streams implementation.

Another option would be to allocate the context in cal_ctx_create() for
now, with a call to cal_reserve_pix_proc(), and move it later in the
context of the patch series that implements support for multiplexed
streams.

> +
>  	return 0;
>  }
>  
>  void cal_ctx_unprepare(struct cal_ctx *ctx)
>  {
> -
> +	cal_release_pix_proc(ctx->cal, ctx->pix_proc);
>  }
>  
>  void cal_ctx_start(struct cal_ctx *ctx)
> @@ -872,7 +913,6 @@ static struct cal_ctx *cal_ctx_create(struct cal_dev *cal, int inst)
>  	ctx->dma_ctx = inst;
>  	ctx->ppi_ctx = inst;
>  	ctx->cport = inst;
> -	ctx->pix_proc = inst;
>  
>  	ret = cal_ctx_v4l2_init(ctx);
>  	if (ret)
> diff --git a/drivers/media/platform/ti-vpe/cal.h b/drivers/media/platform/ti-vpe/cal.h
> index c34b843d2019..01e05e46e48d 100644
> --- a/drivers/media/platform/ti-vpe/cal.h
> +++ b/drivers/media/platform/ti-vpe/cal.h
> @@ -188,6 +188,8 @@ struct cal_dev {
>  	struct media_device	mdev;
>  	struct v4l2_device	v4l2_dev;
>  	struct v4l2_async_notifier notifier;
> +
> +	unsigned long reserve_pix_proc_mask;

I would have named this used_pix_proc_mask.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

>  };
>  
>  /*

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2021-04-18 12:59 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-12 11:34 [PATCH 00/28] media: ti-vpe: cal: prepare for multistream support Tomi Valkeinen
2021-04-12 11:34 ` [PATCH 01/28] media: ti-vpe: cal: add g/s_parm for legacy API Tomi Valkeinen
2021-04-17 23:01   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 02/28] media: ti-vpe: cal: fix error handling in cal_camerarx_create Tomi Valkeinen
2021-04-17 23:05   ` Laurent Pinchart
2021-04-19  8:24     ` Tomi Valkeinen
2021-04-19  8:31       ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 03/28] media: ti-vpe: cal: remove unused cal_camerarx->dev field Tomi Valkeinen
2021-04-18  0:43   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 04/28] media: ti-vpe: cal: rename "sensor" to "source" Tomi Valkeinen
2021-04-17 23:18   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 05/28] media: ti-vpe: cal: move global config from cal_ctx_wr_dma_config to runtime resume Tomi Valkeinen
2021-04-17 23:27   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 06/28] media: ti-vpe: cal: use v4l2_get_link_freq Tomi Valkeinen
2021-04-18 11:48   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 07/28] media: ti-vpe: cal: add cal_ctx_prepare/unprepare Tomi Valkeinen
2021-04-18 13:30   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 08/28] media: ti-vpe: cal: change index and cport to u8 Tomi Valkeinen
2021-04-18 11:55   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 09/28] media: ti-vpe: cal: Add PPI context Tomi Valkeinen
2021-04-18 12:17   ` Laurent Pinchart
2021-04-19  9:01     ` Tomi Valkeinen
2021-04-12 11:34 ` [PATCH 10/28] media: ti-vpe: cal: Add pixel processing context Tomi Valkeinen
2021-04-18 12:20   ` Laurent Pinchart
2021-04-18 12:23     ` Laurent Pinchart
2021-04-19  9:17     ` Tomi Valkeinen
2021-04-12 11:34 ` [PATCH 11/28] media: ti-vpe: cal: rename cal_ctx->index to dma_ctx Tomi Valkeinen
2021-04-18 12:22   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 12/28] media: ti-vpe: cal: rename CAL_HL_IRQ_MASK Tomi Valkeinen
2021-04-18 12:29   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 13/28] media: ti-vpe: cal: clean up CAL_CSI2_VC_IRQ_* macros Tomi Valkeinen
2021-04-18 12:32   ` Laurent Pinchart
2021-04-19 10:29     ` Tomi Valkeinen
2021-04-12 11:34 ` [PATCH 14/28] media: ti-vpe: cal: catch VC errors Tomi Valkeinen
2021-04-18 12:38   ` Laurent Pinchart
2021-04-19 11:19     ` Tomi Valkeinen
2021-04-28 23:44       ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 15/28] media: ti-vpe: cal: remove wait when stopping camerarx Tomi Valkeinen
2021-04-18 12:46   ` Laurent Pinchart
2021-04-19 11:29     ` Tomi Valkeinen
2021-04-28 23:57       ` Laurent Pinchart
2021-05-04  7:56         ` Tomi Valkeinen
2021-06-04 13:44         ` Laurent Pinchart
2021-06-07 10:41           ` Tomi Valkeinen
2021-06-09 12:31             ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 16/28] media: ti-vpe: cal: disable ppi and pix proc at ctx_stop Tomi Valkeinen
2021-04-18 12:49   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 17/28] media: ti-vpe: cal: allocate pix proc dynamically Tomi Valkeinen
2021-04-18 12:59   ` Laurent Pinchart [this message]
2021-04-19 11:45     ` Tomi Valkeinen
2021-04-29  0:04       ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 18/28] media: ti-vpe: cal: add 'use_pix_proc' field Tomi Valkeinen
2021-04-18 13:00   ` Laurent Pinchart
2021-04-19 11:53     ` Tomi Valkeinen
2021-04-29  0:07       ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 19/28] media: ti-vpe: cal: add cal_ctx_wr_dma_enable and fix a race Tomi Valkeinen
2021-04-18 13:04   ` Laurent Pinchart
2021-04-19 12:02     ` Tomi Valkeinen
2021-04-12 11:34 ` [PATCH 20/28] media: ti-vpe: cal: add vc and datatype fields to cal_ctx Tomi Valkeinen
2021-04-18 13:06   ` Laurent Pinchart
2021-04-19 12:07     ` Tomi Valkeinen
2021-04-12 11:34 ` [PATCH 21/28] media: ti-vpe: cal: fix cal_ctx_v4l2_register error handling Tomi Valkeinen
2021-04-18 13:09   ` Laurent Pinchart
2021-04-20 10:50     ` Tomi Valkeinen
2021-04-20 11:17       ` Tomi Valkeinen
2021-04-29  0:10         ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 22/28] media: ti-vpe: cal: set field always to V4L2_FIELD_NONE Tomi Valkeinen
2021-04-18 13:14   ` Laurent Pinchart
2021-04-19 12:34     ` Tomi Valkeinen
2021-04-12 11:34 ` [PATCH 23/28] media: ti-vpe: cal: fix typo in a comment Tomi Valkeinen
2021-04-18 13:14   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 24/28] media: ti-vpe: cal: add mbus_code support to cal_mc_enum_fmt_vid_cap Tomi Valkeinen
2021-04-18 13:17   ` Laurent Pinchart
2021-04-19 12:50     ` Tomi Valkeinen
2021-04-12 11:34 ` [PATCH 25/28] media: ti-vpe: cal: rename non-MC funcs to cal_legacy_* Tomi Valkeinen
2021-04-18 13:18   ` Laurent Pinchart
2021-04-12 11:34 ` [PATCH 26/28] media: ti-vpe: cal: init ctx->v_fmt correctly in MC mode Tomi Valkeinen
2021-04-18 13:21   ` Laurent Pinchart
2021-04-19 13:01     ` Tomi Valkeinen
2021-04-12 11:34 ` [PATCH 27/28] media: ti-vpe: cal: remove cal_camerarx->fmtinfo Tomi Valkeinen
2021-04-18 13:24   ` Laurent Pinchart
2021-04-19 13:08     ` Tomi Valkeinen
2021-04-12 11:34 ` [PATCH 28/28] media: ti-vpe: cal: support 8 DMA contexts Tomi Valkeinen
2021-04-18 13:29   ` 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=YHwtI+WIlHWCBEH5@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=bparrot@ti.com \
    --cc=linux-media@vger.kernel.org \
    --cc=lokeshvutla@ti.com \
    --cc=p.yadav@ti.com \
    --cc=tomi.valkeinen@ideasonboard.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).