mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jai Luthra <j-luthra@ti.com>
To: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>,
	Vaishnav Achath <vaishnav.a@ti.com>,
	Maxime Ripard <mripard@kernel.org>, Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Conor Dooley <conor+dt@kernel.org>
Cc: <linux-media@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<devicetree@vger.kernel.org>,
	Vignesh Raghavendra <vigneshr@ti.com>,
	Aradhya Bhatia <a-bhatia1@ti.com>,
	Devarsh Thakkar <devarsht@ti.com>,
	Changhuang Liang <changhuang.liang@starfivetech.com>,
	Jack Zhu <jack.zhu@starfivetech.com>,
	Julien Massot <julien.massot@collabora.com>,
	Jayshri Pawar <jpawar@cadence.com>, Jai Luthra <j-luthra@ti.com>
Subject: [PATCH RFC 09/21] SQUASH: media: ti: j721e-csi2rx: Fix link validation for multi-stream
Date: Thu, 22 Feb 2024 17:01:25 +0530	[thread overview]
Message-ID: <20240222-multistream-v1-9-1837ed916eeb@ti.com> (raw)
In-Reply-To: <20240222-multistream-v1-0-1837ed916eeb@ti.com>

With the new architecture, multiple video nodes are connected to output
pads of the ticsi2rx subdev. Fix the link validation for such scenarios.

Signed-off-by: Jai Luthra <j-luthra@ti.com>
---
 .../media/platform/ti/j721e-csi2rx/j721e-csi2rx.c  | 31 ++++++++++++++--------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c b/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
index 42eb1bff21e2..1443338f4134 100644
--- a/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
+++ b/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c
@@ -1133,45 +1133,54 @@ static int ti_csi2rx_link_validate(struct media_link *link)
 	struct v4l2_subdev_format source_fmt = {
 		.which	= V4L2_SUBDEV_FORMAT_ACTIVE,
 		.pad	= link->source->index,
+		.stream = 0,
 	};
+	struct v4l2_subdev_state *state;
 	const struct ti_csi2rx_fmt *ti_fmt;
 	int ret;
 
-	ret = v4l2_subdev_call_state_active(&csi->subdev, pad,
-					    get_fmt, &source_fmt);
-	if (ret)
-		return ret;
+	state = v4l2_subdev_lock_and_get_active_state(&csi->subdev);
+	ret = v4l2_subdev_call(&csi->subdev, pad, get_fmt, state, &source_fmt);
+	v4l2_subdev_unlock_state(state);
+
+	if (ret) {
+		dev_dbg(csi->dev,
+			"Skipping validation as no format present on \"%s\":%u:0\n",
+			link->source->entity->name, link->source->index);
+		return 0;
+	}
 
 	if (source_fmt.format.width != csi_fmt->width) {
-		dev_dbg(csi->dev, "Width does not match (source %u, sink %u)\n",
+		dev_err(csi->dev, "Width does not match (source %u, sink %u)\n",
 			source_fmt.format.width, csi_fmt->width);
 		return -EPIPE;
 	}
 
 	if (source_fmt.format.height != csi_fmt->height) {
-		dev_dbg(csi->dev, "Height does not match (source %u, sink %u)\n",
+		dev_err(csi->dev, "Height does not match (source %u, sink %u)\n",
 			source_fmt.format.height, csi_fmt->height);
 		return -EPIPE;
 	}
 
 	if (source_fmt.format.field != csi_fmt->field &&
 	    csi_fmt->field != V4L2_FIELD_NONE) {
-		dev_dbg(csi->dev, "Field does not match (source %u, sink %u)\n",
+		dev_err(csi->dev, "Field does not match (source %u, sink %u)\n",
 			source_fmt.format.field, csi_fmt->field);
 		return -EPIPE;
 	}
 
 	ti_fmt = find_format_by_code(source_fmt.format.code);
 	if (!ti_fmt) {
-		dev_dbg(csi->dev, "Media bus format 0x%x not supported\n",
+		dev_err(csi->dev, "Media bus format 0x%x not supported\n",
 			source_fmt.format.code);
 		return -EPIPE;
 	}
 
 	if (ti_fmt->fourcc != csi_fmt->pixelformat) {
-		dev_dbg(csi->dev,
-			"Cannot transform source fmt 0x%x to sink fmt 0x%x\n",
-			ti_fmt->fourcc, csi_fmt->pixelformat);
+		dev_err(csi->dev,
+			"Cannot transform \"%s\":%u format %p4cc to %p4cc\n",
+			link->source->entity->name, link->source->index,
+			&ti_fmt->fourcc, &csi_fmt->pixelformat);
 		return -EPIPE;
 	}
 

-- 
2.43.0


  parent reply	other threads:[~2024-02-22 11:33 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-22 11:31 [PATCH RFC 00/21] media: cadence,ti: CSI2RX Multistream Support Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 01/21] media: ti: j721e-csi2rx: Fix races while restarting DMA Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 02/21] media: cadence: csi2rx: configure DPHY before starting source stream Jai Luthra
2024-02-22 14:29   ` Julien Massot
2024-02-23  7:23     ` Jai Luthra
2024-02-23  2:46   ` 回复: " Changhuang Liang
2024-02-22 11:31 ` [PATCH RFC 03/21] media: cadence: csi2rx: Support runtime PM Jai Luthra
2024-03-22  9:26   ` 回复: " Changhuang Liang
2024-03-22 11:13     ` Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 04/21] dt-bindings: media: ti,j721e-csi2rx-shim: Support 32 dma chans Jai Luthra
2024-02-22 12:25   ` Rob Herring
2024-02-23  7:44     ` Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 05/21] media: ti: j721e-csi2rx: separate out device and context Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 06/21] media: ti: j721e-csi2rx: prepare SHIM code for multiple contexts Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 07/21] media: ti: j721e-csi2rx: allocate DMA channel based on context index Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 08/21] media: ti: j721e-csi2rx: add a subdev for the core device Jai Luthra
2024-02-22 11:31 ` Jai Luthra [this message]
2024-02-22 11:31 ` [PATCH RFC 10/21] media: ti: j721e-csi2rx: get number of contexts from device tree Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 11/21] media: cadence: csi2rx: add get_frame_desc wrapper Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 12/21] media: ti: j721e-csi2rx: add support for processing virtual channels Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 13/21] media: cadence: csi2rx: Use new enable stream APIs Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 14/21] media: cadence: csi2rx: Enable stream-wise routing Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 15/21] SQUASH: media: cadence: csi2rx: Enable per-stream controls Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 16/21] SQUASH: media: cadence: csi2rx: Filter using MIPI virtual channels Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 17/21] SQUASH: media: cadence: csi2rx: Filter streams in get_frame_desc Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 18/21] media: ti: j721e-csi2rx: add multistream support Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 19/21] SQUASH: media: ti: j721e-csi2rx: Enable per-stream controls Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 20/21] SQUASH: media: ti: j721e-csi2rx: Assert pixel reset before stopping last stream Jai Luthra
2024-02-22 11:31 ` [PATCH RFC 21/21] media: ti: j721e-csi2rx: Submit all available buffers Jai Luthra
2024-02-23  2:53 ` 回复: [PATCH RFC 00/21] media: cadence,ti: CSI2RX Multistream Support Changhuang Liang
2024-02-23  7:49   ` Jai Luthra

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=20240222-multistream-v1-9-1837ed916eeb@ti.com \
    --to=j-luthra@ti.com \
    --cc=a-bhatia1@ti.com \
    --cc=changhuang.liang@starfivetech.com \
    --cc=conor+dt@kernel.org \
    --cc=devarsht@ti.com \
    --cc=devicetree@vger.kernel.org \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=jack.zhu@starfivetech.com \
    --cc=jpawar@cadence.com \
    --cc=julien.massot@collabora.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=mripard@kernel.org \
    --cc=robh@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=tomi.valkeinen@ideasonboard.com \
    --cc=vaishnav.a@ti.com \
    --cc=vigneshr@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®