All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
To: linux-media@vger.kernel.org, Lokesh Vutla <lokeshvutla@ti.com>,
	Pratyush Yadav <p.yadav@ti.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Subject: [PATCH v4 28/35] media: ti-vpe: cal: support 8 DMA contexts
Date: Mon, 14 Jun 2021 14:23:38 +0300	[thread overview]
Message-ID: <20210614112345.2032435-29-tomi.valkeinen@ideasonboard.com> (raw)
In-Reply-To: <20210614112345.2032435-1-tomi.valkeinen@ideasonboard.com>

The current driver only ever needs 2 DMA contexts (one per PHY), but we
need to use more of the 8 contexts to add support for multiple streams.

Change the code so that we allocate DMA contexts as needed, which at
this time is 1 per PHY, but could be up to 8.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/ti-vpe/cal.c | 31 ++++++++++-------------------
 drivers/media/platform/ti-vpe/cal.h |  5 +++--
 2 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/drivers/media/platform/ti-vpe/cal.c b/drivers/media/platform/ti-vpe/cal.c
index 3a836813eda8..ec8ffc8d5721 100644
--- a/drivers/media/platform/ti-vpe/cal.c
+++ b/drivers/media/platform/ti-vpe/cal.c
@@ -658,7 +658,7 @@ static irqreturn_t cal_irq(int irq_cal, void *data)
 		/* Clear Interrupt status */
 		cal_write(cal, CAL_HL_IRQSTATUS(1), status);
 
-		for (i = 0; i < ARRAY_SIZE(cal->ctx); ++i) {
+		for (i = 0; i < cal->num_contexts; ++i) {
 			if (status & CAL_HL_IRQ_WDMA_END_MASK(i))
 				cal_irq_wdma_end(cal->ctx[i]);
 		}
@@ -672,7 +672,7 @@ static irqreturn_t cal_irq(int irq_cal, void *data)
 		/* Clear Interrupt status */
 		cal_write(cal, CAL_HL_IRQSTATUS(2), status);
 
-		for (i = 0; i < ARRAY_SIZE(cal->ctx); ++i) {
+		for (i = 0; i < cal->num_contexts; ++i) {
 			if (status & CAL_HL_IRQ_WDMA_START_MASK(i))
 				cal_irq_wdma_start(cal->ctx[i]);
 		}
@@ -742,10 +742,7 @@ static int cal_async_notifier_complete(struct v4l2_async_notifier *notifier)
 	unsigned int i;
 	int ret;
 
-	for (i = 0; i < ARRAY_SIZE(cal->ctx); ++i) {
-		if (!cal->ctx[i])
-			continue;
-
+	for (i = 0; i < cal->num_contexts; ++i) {
 		ret = cal_ctx_v4l2_register(cal->ctx[i]);
 		if (ret)
 			goto err_ctx_unreg;
@@ -865,10 +862,8 @@ static void cal_media_unregister(struct cal_dev *cal)
 	unsigned int i;
 
 	/* Unregister all the V4L2 video devices. */
-	for (i = 0; i < ARRAY_SIZE(cal->ctx); i++) {
-		if (cal->ctx[i])
-			cal_ctx_v4l2_unregister(cal->ctx[i]);
-	}
+	for (i = 0; i < cal->num_contexts; i++)
+		cal_ctx_v4l2_unregister(cal->ctx[i]);
 
 	cal_async_notifier_unregister(cal);
 	media_device_unregister(&cal->mdev);
@@ -915,10 +910,8 @@ static void cal_media_cleanup(struct cal_dev *cal)
 {
 	unsigned int i;
 
-	for (i = 0; i < ARRAY_SIZE(cal->ctx); i++) {
-		if (cal->ctx[i])
-			cal_ctx_v4l2_cleanup(cal->ctx[i]);
-	}
+	for (i = 0; i < cal->num_contexts; i++)
+		cal_ctx_v4l2_cleanup(cal->ctx[i]);
 
 	v4l2_device_unregister(&cal->v4l2_dev);
 	media_device_cleanup(&cal->mdev);
@@ -1067,7 +1060,6 @@ static int cal_init_camerarx_regmap(struct cal_dev *cal)
 static int cal_probe(struct platform_device *pdev)
 {
 	struct cal_dev *cal;
-	struct cal_ctx *ctx;
 	bool connected = false;
 	unsigned int i;
 	int ret;
@@ -1157,6 +1149,8 @@ static int cal_probe(struct platform_device *pdev)
 			ret = -ENODEV;
 			goto error_context;
 		}
+
+		cal->num_contexts++;
 	}
 
 	/* Register the media device. */
@@ -1167,11 +1161,8 @@ static int cal_probe(struct platform_device *pdev)
 	return 0;
 
 error_context:
-	for (i = 0; i < ARRAY_SIZE(cal->ctx); i++) {
-		ctx = cal->ctx[i];
-		if (ctx)
-			cal_ctx_v4l2_cleanup(ctx);
-	}
+	for (i = 0; i < cal->num_contexts; i++)
+		cal_ctx_v4l2_cleanup(cal->ctx[i]);
 
 error_camerarx:
 	for (i = 0; i < cal->data->num_csi2_phy; i++)
diff --git a/drivers/media/platform/ti-vpe/cal.h b/drivers/media/platform/ti-vpe/cal.h
index 7d9a2d697fc4..400f95485d7c 100644
--- a/drivers/media/platform/ti-vpe/cal.h
+++ b/drivers/media/platform/ti-vpe/cal.h
@@ -29,7 +29,7 @@
 #include <media/videobuf2-v4l2.h>
 
 #define CAL_MODULE_NAME			"cal"
-#define CAL_NUM_CONTEXT			2
+#define CAL_MAX_NUM_CONTEXT		8
 #define CAL_NUM_CSI2_PORTS		2
 
 /*
@@ -182,7 +182,8 @@ struct cal_dev {
 	/* Camera Core Module handle */
 	struct cal_camerarx	*phy[CAL_NUM_CSI2_PORTS];
 
-	struct cal_ctx		*ctx[CAL_NUM_CONTEXT];
+	u32 num_contexts;
+	struct cal_ctx		*ctx[CAL_MAX_NUM_CONTEXT];
 
 	struct media_device	mdev;
 	struct v4l2_device	v4l2_dev;
-- 
2.25.1


  parent reply	other threads:[~2021-06-14 11:40 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-14 11:23 [PATCH v4 00/35] media: ti-vpe: cal: improvements towards multistrea Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 01/35] media: ti-vpe: cal: add g/s_parm for legacy API Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 02/35] media: ti-vpe: cal: fix error handling in cal_camerarx_create Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 03/35] media: ti-vpe: cal: remove unused cal_camerarx->dev field Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 04/35] media: ti-vpe: cal: rename "sensor" to "source" Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 05/35] media: ti-vpe: cal: move global config from cal_ctx_wr_dma_config to runtime resume Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 06/35] media: ti-vpe: cal: use v4l2_get_link_freq Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 07/35] media: ti-vpe: cal: add cal_ctx_prepare/unprepare Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 08/35] media: ti-vpe: cal: change index and cport to u8 Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 09/35] media: ti-vpe: cal: Add CSI2 context Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 10/35] media: ti-vpe: cal: Add pixel processing context Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 11/35] media: ti-vpe: cal: rename cal_ctx->index to dma_ctx Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 12/35] media: ti-vpe: cal: rename CAL_HL_IRQ_MASK Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 13/35] media: ti-vpe: cal: clean up CAL_CSI2_VC_IRQ_* macros Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 14/35] media: ti-vpe: cal: catch VC errors Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 15/35] media: ti-vpe: cal: remove wait when stopping camerarx Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 16/35] media: ti-vpe: cal: disable csi2 ctx and pix proc at ctx_stop Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 17/35] media: ti-vpe: cal: allocate pix proc dynamically Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 18/35] media: ti-vpe: cal: add 'use_pix_proc' field Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 19/35] media: ti-vpe: cal: add cal_ctx_wr_dma_enable and fix a race Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 20/35] media: ti-vpe: cal: add vc and datatype fields to cal_ctx Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 21/35] media: ti-vpe: cal: handle cal_ctx_v4l2_register error Tomi Valkeinen
2021-06-14 20:36   ` Laurent Pinchart
2021-06-14 11:23 ` [PATCH v4 22/35] media: ti-vpe: cal: set field always to V4L2_FIELD_NONE Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 23/35] media: ti-vpe: cal: fix typo in a comment Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 24/35] media: ti-vpe: cal: add mbus_code support to cal_mc_enum_fmt_vid_cap Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 25/35] media: ti-vpe: cal: rename non-MC funcs to cal_legacy_* Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 26/35] media: ti-vpe: cal: init ctx->v_fmt correctly in MC mode Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 27/35] media: ti-vpe: cal: remove cal_camerarx->fmtinfo Tomi Valkeinen
2021-06-14 11:23 ` Tomi Valkeinen [this message]
2021-06-14 11:23 ` [PATCH v4 29/35] media: ti-vpe: cal: cleanup phy iteration in cal_remove Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 30/35] media: ti-vpe: cal: fix ctx uninitialization Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 31/35] media: ti-vpe: cal: fix queuing of the initial buffer Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 32/35] media: ti-vpe: cal: add camerarx locking Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 33/35] media: ti-vpe: cal: add camerarx enable/disable refcounting Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 34/35] media: ti-vpe: cal: allow more than 1 source pads Tomi Valkeinen
2021-06-14 11:23 ` [PATCH v4 35/35] media: ti-vpe: cal: add embedded data support Tomi Valkeinen

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=20210614112345.2032435-29-tomi.valkeinen@ideasonboard.com \
    --to=tomi.valkeinen@ideasonboard.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=lokeshvutla@ti.com \
    --cc=p.yadav@ti.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.