All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-media@vger.kernel.org
Cc: hverkuil@xs4all.nl, laurent.pinchart@ideasonboard.com,
	tomi.valkeinen@ideasonboard.com, jacopo.mondi@ideasonboard.com,
	bingbu.cao@intel.com, hongju.wang@intel.com
Subject: [PATCH 2/6] media: v4l: subdev: Also return pads array information on stream functions
Date: Fri, 13 Oct 2023 13:44:20 +0300	[thread overview]
Message-ID: <20231013104424.404768-3-sakari.ailus@linux.intel.com> (raw)
In-Reply-To: <20231013104424.404768-1-sakari.ailus@linux.intel.com>

There are two sets of functions that return information from sub-device
state, one for stream-unaware users and another for stream-aware users.
Add support for stream-aware functions to return format, crop and compose
information from pad-based array that are functionally equivalent to the
old, stream-unaware ones.

Also check state is non-NULL, in order to guard against old drivers
potentially calling this with NULL state for active formats or selection
rectangles.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/v4l2-core/v4l2-subdev.c | 39 +++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c
index 52a8043ab556..7d0ce8c8aab4 100644
--- a/drivers/media/v4l2-core/v4l2-subdev.c
+++ b/drivers/media/v4l2-core/v4l2-subdev.c
@@ -1684,6 +1684,19 @@ v4l2_subdev_state_get_stream_format(struct v4l2_subdev_state *state,
 	struct v4l2_subdev_stream_configs *stream_configs;
 	unsigned int i;
 
+	if (WARN_ON(!state))
+		return NULL;
+
+	if (state->pads) {
+		if (stream)
+			return NULL;
+
+		if (WARN_ON(pad >= state->num_pads))
+			pad = 0;
+
+		return &state->pads[pad].try_fmt;
+	}
+
 	lockdep_assert_held(state->lock);
 
 	stream_configs = &state->stream_configs;
@@ -1705,6 +1718,19 @@ v4l2_subdev_state_get_stream_crop(struct v4l2_subdev_state *state,
 	struct v4l2_subdev_stream_configs *stream_configs;
 	unsigned int i;
 
+	if (WARN_ON(!state))
+		return NULL;
+
+	if (state->pads) {
+		if (stream)
+			return NULL;
+
+		if (WARN_ON(pad >= state->num_pads))
+			pad = 0;
+
+		return &state->pads[pad].try_crop;
+	}
+
 	lockdep_assert_held(state->lock);
 
 	stream_configs = &state->stream_configs;
@@ -1726,6 +1752,19 @@ v4l2_subdev_state_get_stream_compose(struct v4l2_subdev_state *state,
 	struct v4l2_subdev_stream_configs *stream_configs;
 	unsigned int i;
 
+	if (WARN_ON(!state))
+		return NULL;
+
+	if (state->pads) {
+		if (stream)
+			return NULL;
+
+		if (WARN_ON(pad >= state->num_pads))
+			pad = 0;
+
+		return &state->pads[pad].try_compose;
+	}
+
 	lockdep_assert_held(state->lock);
 
 	stream_configs = &state->stream_configs;
-- 
2.39.2


  parent reply	other threads:[~2023-10-13 10:44 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-13 10:44 [PATCH 0/6] Unify sub-device state access functions Sakari Ailus
2023-10-13 10:44 ` [PATCH 1/6] media: v4l: subdev: Store the number of pads in sub-device state Sakari Ailus
2023-10-13 10:57   ` Laurent Pinchart
2023-10-13 11:06     ` Sakari Ailus
2023-10-13 11:15       ` Laurent Pinchart
2023-10-13 11:17         ` Sakari Ailus
2023-10-23  8:34           ` Tomi Valkeinen
2023-10-23 11:46             ` Laurent Pinchart
2023-10-13 10:44 ` Sakari Ailus [this message]
2023-10-13 11:07   ` [PATCH 2/6] media: v4l: subdev: Also return pads array information on stream functions Laurent Pinchart
2023-10-13 11:13     ` Sakari Ailus
2023-10-16  8:24       ` Laurent Pinchart
2023-10-16  8:59         ` Sakari Ailus
2023-10-16 10:21           ` Sakari Ailus
2023-10-23 11:42             ` Laurent Pinchart
2023-10-13 10:44 ` [PATCH 3/6] media: v4l: subdev: Rename sub-device state information access functions Sakari Ailus
2023-10-13 11:04   ` Laurent Pinchart
2023-10-13 11:09     ` Sakari Ailus
2023-10-13 11:23       ` Laurent Pinchart
2023-10-13 11:33         ` Sakari Ailus
2023-10-16  8:26           ` Laurent Pinchart
2023-10-16  8:58             ` Sakari Ailus
2023-10-17  6:00   ` kernel test robot
2023-10-17  8:22   ` kernel test robot
2023-10-13 10:44 ` [PATCH 4/6] media: v4l: subdev: v4l2_subdev_get_format always returns format now Sakari Ailus
2023-10-13 11:06   ` Laurent Pinchart
2023-10-13 10:44 ` [PATCH 5/6] media: v4l: subdev: Switch to stream-aware state functions Sakari Ailus
2023-10-17  9:17   ` kernel test robot
2023-10-13 10:44 ` [PATCH 6/6] media: v4l: subdev: Remove stream-unaware sub-device state access Sakari Ailus

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=20231013104424.404768-3-sakari.ailus@linux.intel.com \
    --to=sakari.ailus@linux.intel.com \
    --cc=bingbu.cao@intel.com \
    --cc=hongju.wang@intel.com \
    --cc=hverkuil@xs4all.nl \
    --cc=jacopo.mondi@ideasonboard.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --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 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.