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: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	tomi.valkeinen@ideasonboard.com, bingbu.cao@intel.com,
	hongju.wang@intel.com, hverkuil@xs4all.nl,
	Andrey Konovalov <andrey.konovalov@linaro.org>,
	Jacopo Mondi <jacopo.mondi@ideasonboard.com>,
	Dmitry Perchanov <dmitry.perchanov@intel.com>
Subject: [PATCH v3 03/10] media: mc: Add INTERNAL pad flag
Date: Tue,  8 Aug 2023 10:55:31 +0300	[thread overview]
Message-ID: <20230808075538.3043934-4-sakari.ailus@linux.intel.com> (raw)
In-Reply-To: <20230808075538.3043934-1-sakari.ailus@linux.intel.com>

Internal source pads will be used as routing endpoints in V4L2
[GS]_ROUTING IOCTLs, to indicate that the stream begins in the entity.

Also prevent creating links to pads that have been flagged as internal.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 Documentation/userspace-api/media/glossary.rst             | 6 ++++++
 Documentation/userspace-api/media/mediactl/media-types.rst | 6 ++++++
 drivers/media/mc/mc-entity.c                               | 6 +++++-
 include/uapi/linux/media.h                                 | 1 +
 4 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/Documentation/userspace-api/media/glossary.rst b/Documentation/userspace-api/media/glossary.rst
index 96a360edbf3b..f7b99a4527c7 100644
--- a/Documentation/userspace-api/media/glossary.rst
+++ b/Documentation/userspace-api/media/glossary.rst
@@ -173,6 +173,12 @@ Glossary
 	An integrated circuit that integrates all components of a computer
 	or other electronic systems.
 
+_media-glossary-stream:
+    Stream
+	A distinct flow of data (image data or metadata) over a media pipeline
+	from source to sink. A source may be e.g. an image sensor and a sink
+	e.g. a memory buffer.
+
     V4L2 API
 	**V4L2 userspace API**
 
diff --git a/Documentation/userspace-api/media/mediactl/media-types.rst b/Documentation/userspace-api/media/mediactl/media-types.rst
index 0ffeece1e0c8..28941da27790 100644
--- a/Documentation/userspace-api/media/mediactl/media-types.rst
+++ b/Documentation/userspace-api/media/mediactl/media-types.rst
@@ -361,6 +361,7 @@ Types and flags used to represent the media graph elements
 .. _MEDIA-PAD-FL-SINK:
 .. _MEDIA-PAD-FL-SOURCE:
 .. _MEDIA-PAD-FL-MUST-CONNECT:
+.. _MEDIA-PAD-FL-INTERNAL:
 
 .. flat-table:: Media pad flags
     :header-rows:  0
@@ -382,6 +383,11 @@ Types and flags used to represent the media graph elements
 	  when this flag isn't set; the absence of the flag doesn't imply
 	  there is none.
 
+    *  -  ``MEDIA_PAD_FL_INTERNAL``
+       -  The internal flag indicates an internal pad that has no external
+	  connections. Such a pad shall not be connected with a link. The
+	  internal flag indicates that the :ref:``stream
+	  <media-glossary-stream>`` either starts or ends in the entity.
 
 One and only one of ``MEDIA_PAD_FL_SINK`` and ``MEDIA_PAD_FL_SOURCE``
 must be set for every pad.
diff --git a/drivers/media/mc/mc-entity.c b/drivers/media/mc/mc-entity.c
index 4991281dcccc..03a9e0b8ebab 100644
--- a/drivers/media/mc/mc-entity.c
+++ b/drivers/media/mc/mc-entity.c
@@ -1071,7 +1071,8 @@ int media_get_pad_index(struct media_entity *entity, u32 pad_type,
 
 	for (i = 0; i < entity->num_pads; i++) {
 		if ((entity->pads[i].flags &
-		     (MEDIA_PAD_FL_SINK | MEDIA_PAD_FL_SOURCE)) != pad_type)
+		     (MEDIA_PAD_FL_SINK | MEDIA_PAD_FL_SOURCE |
+		      MEDIA_PAD_FL_INTERNAL)) != pad_type)
 			continue;
 
 		if (entity->pads[i].sig_type == sig_type)
@@ -1094,6 +1095,9 @@ media_create_pad_link(struct media_entity *source, u16 source_pad,
 		return -EINVAL;
 	if (WARN_ON(!(source->pads[source_pad].flags & MEDIA_PAD_FL_SOURCE)))
 		return -EINVAL;
+	if (WARN_ON(source->pads[source_pad].flags & MEDIA_PAD_FL_SOURCE &&
+		    source->pads[source_pad].flags & MEDIA_PAD_FL_INTERNAL))
+		return -EINVAL;
 	if (WARN_ON(!(sink->pads[sink_pad].flags & MEDIA_PAD_FL_SINK)))
 		return -EINVAL;
 
diff --git a/include/uapi/linux/media.h b/include/uapi/linux/media.h
index 1c80b1d6bbaf..80cfd12a43fc 100644
--- a/include/uapi/linux/media.h
+++ b/include/uapi/linux/media.h
@@ -208,6 +208,7 @@ struct media_entity_desc {
 #define MEDIA_PAD_FL_SINK			(1U << 0)
 #define MEDIA_PAD_FL_SOURCE			(1U << 1)
 #define MEDIA_PAD_FL_MUST_CONNECT		(1U << 2)
+#define MEDIA_PAD_FL_INTERNAL			(1U << 3)
 
 struct media_pad_desc {
 	__u32 entity;		/* entity ID */
-- 
2.39.2


  parent reply	other threads:[~2023-08-08 16:45 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-08  7:55 [PATCH v3 00/10] Generic line based metadata support, internal pads Sakari Ailus
2023-08-08  7:55 ` [PATCH v3 01/10] media: Documentation: Align numbered list Sakari Ailus
2023-09-05 13:06   ` Laurent Pinchart
2023-09-06 12:43     ` Sakari Ailus
2023-09-06 12:50       ` Laurent Pinchart
2023-09-07 10:58         ` Sakari Ailus
2023-08-08  7:55 ` [PATCH v3 02/10] media: mc: Check pad flag validity Sakari Ailus
2023-08-10 13:54   ` Jacopo Mondi
2023-08-14  8:49     ` Sakari Ailus
2023-09-05 13:13       ` Laurent Pinchart
2023-08-08  7:55 ` Sakari Ailus [this message]
2023-08-08  8:15   ` [PATCH v3 03/10] media: mc: Add INTERNAL pad flag Hans Verkuil
2023-08-11 11:48     ` Sakari Ailus
2023-08-10 14:12   ` Jacopo Mondi
2023-08-11  9:09     ` Sakari Ailus
2023-09-05 13:50   ` Laurent Pinchart
2023-08-08  7:55 ` [PATCH v3 04/10] media: uapi: Add generic serial metadata mbus formats Sakari Ailus
2023-08-23 13:16   ` Tomi Valkeinen
2023-08-24  7:24     ` Sakari Ailus
2023-08-24  8:26       ` Tomi Valkeinen
2023-09-05 16:38         ` Laurent Pinchart
2023-09-06  8:28           ` Tomi Valkeinen
2023-09-06 11:31             ` Laurent Pinchart
2023-09-06 11:39               ` Tomi Valkeinen
2023-09-06 12:34               ` Sakari Ailus
2023-09-06 12:50                 ` Laurent Pinchart
2023-09-07 11:04                   ` Sakari Ailus
2023-08-08  7:55 ` [PATCH v3 05/10] media: uapi: Document which mbus format fields are valid for metadata Sakari Ailus
2023-08-10 15:19   ` Jacopo Mondi
2023-08-14 10:23     ` Sakari Ailus
2023-09-05 16:44       ` Laurent Pinchart
2023-08-08  7:55 ` [PATCH v3 06/10] media: uapi: Add a macro to tell whether an mbus code is metadata Sakari Ailus
2023-08-08  8:14   ` Hans Verkuil
2023-08-08  8:16     ` Sakari Ailus
2023-09-05  9:47   ` Tomi Valkeinen
2023-09-05 10:37     ` Sakari Ailus
2023-09-05 17:06       ` Laurent Pinchart
2023-09-06 11:33         ` Sakari Ailus
2023-09-06 12:23           ` Laurent Pinchart
2023-09-06 13:06             ` Sakari Ailus
2023-09-07  8:20               ` Sakari Ailus
2023-08-08  7:55 ` [PATCH v3 07/10] media: uapi: Add generic 8-bit metadata format definitions Sakari Ailus
2023-08-08  8:22   ` Hans Verkuil
2023-08-11  6:31     ` Jacopo Mondi
2023-08-11  9:11       ` Sakari Ailus
2023-08-11  9:43         ` Jacopo Mondi
2023-08-11 10:55           ` Sakari Ailus
2023-09-05 16:47         ` Laurent Pinchart
2023-09-06 11:36           ` Sakari Ailus
2023-09-06 12:36             ` Laurent Pinchart
2023-09-06 13:25               ` Sakari Ailus
2023-09-06 13:30                 ` Laurent Pinchart
2023-09-06 13:39                   ` Sakari Ailus
2023-09-06 13:47                     ` Laurent Pinchart
2023-09-07  8:06                       ` Sakari Ailus
2023-09-07  8:16                         ` Sakari Ailus
2023-08-11 11:12     ` Sakari Ailus
2023-09-05 16:55   ` Laurent Pinchart
2023-09-06 11:56     ` Sakari Ailus
2023-09-06 13:07       ` Laurent Pinchart
2023-09-22  8:50         ` Sakari Ailus
2023-09-22 10:25           ` Laurent Pinchart
2023-09-07  8:36       ` Sakari Ailus
2023-09-07  8:47         ` Laurent Pinchart
2023-09-07  9:49           ` Sakari Ailus
2023-08-08  7:55 ` [PATCH v3 08/10] media: v4l: Support line-based metadata capture Sakari Ailus
2023-08-10 15:24   ` Jacopo Mondi
2023-08-14 11:02     ` Sakari Ailus
2023-09-05 17:15       ` Laurent Pinchart
2023-09-06  7:21         ` Jacopo Mondi
2023-09-06 12:24           ` Sakari Ailus
2023-09-06 13:20             ` Laurent Pinchart
2023-09-22  8:47               ` Sakari Ailus
2023-09-07  8:48             ` Sakari Ailus
2023-08-08  7:55 ` [PATCH v3 09/10] media: Add media bus codes for MIPI CCS embedded data Sakari Ailus
2023-09-05 17:25   ` Laurent Pinchart
2023-09-06 13:03     ` Sakari Ailus
2023-09-06 13:15       ` Laurent Pinchart
2023-09-07 11:10         ` Sakari Ailus
2023-08-08  7:55 ` [PATCH v3 10/10] media: uapi: v4l: Document source routes Sakari Ailus
2023-08-08  8:55   ` Hans Verkuil
2023-08-11 10:44     ` Sakari Ailus
2023-09-05 23:17       ` Laurent Pinchart
2023-09-06 12:11         ` 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=20230808075538.3043934-4-sakari.ailus@linux.intel.com \
    --to=sakari.ailus@linux.intel.com \
    --cc=andrey.konovalov@linaro.org \
    --cc=bingbu.cao@intel.com \
    --cc=dmitry.perchanov@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.