public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] Random cleanups
@ 2023-05-08  9:17 Sakari Ailus
  2023-05-08  9:17 ` [PATCH 1/3] media: mc: Make media_get_pad_index() use pad type flag Sakari Ailus
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Sakari Ailus @ 2023-05-08  9:17 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart, bingbu.cao

Hi all,

These three patches are seemingly random cleanups but are a pre-requisite
for another set for supporting generic metadata formats. I'll post that
set separately. These three should be merged independently though.

since v1:

- Use _BITUL macro instead.

- Also add U after 0.

Sakari Ailus (3):
  media: mc: Make media_get_pad_index() use pad type flag
  media: Documentation: Rename meta format files
  media: uapi: Use _BITUL macro for assigning bits in u32 fields

 .../userspace-api/media/v4l/meta-formats.rst  | 14 +++----
 ...{pixfmt-meta-d4xx.rst => metafmt-d4xx.rst} |  0
 ...-intel-ipu3.rst => metafmt-intel-ipu3.rst} |  0
 ...fmt-meta-rkisp1.rst => metafmt-rkisp1.rst} |  0
 .../{pixfmt-meta-uvc.rst => metafmt-uvc.rst}  |  0
 ...ixfmt-meta-vivid.rst => metafmt-vivid.rst} |  0
 ...meta-vsp1-hgo.rst => metafmt-vsp1-hgo.rst} |  0
 ...meta-vsp1-hgt.rst => metafmt-vsp1-hgt.rst} |  0
 MAINTAINERS                                   |  4 +-
 drivers/media/dvb-core/dvbdev.c               |  4 +-
 drivers/media/mc/mc-entity.c                  | 16 +++-----
 drivers/media/usb/au0828/au0828-core.c        |  2 +-
 drivers/media/v4l2-core/v4l2-mc.c             | 38 ++++++++++++-------
 include/media/media-entity.h                  |  4 +-
 include/uapi/linux/media.h                    | 30 +++++++--------
 15 files changed, 59 insertions(+), 53 deletions(-)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-d4xx.rst => metafmt-d4xx.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-intel-ipu3.rst => metafmt-intel-ipu3.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-rkisp1.rst => metafmt-rkisp1.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-uvc.rst => metafmt-uvc.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-vivid.rst => metafmt-vivid.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-vsp1-hgo.rst => metafmt-vsp1-hgo.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-vsp1-hgt.rst => metafmt-vsp1-hgt.rst} (100%)

-- 
2.30.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/3] media: mc: Make media_get_pad_index() use pad type flag
  2023-05-08  9:17 [PATCH v2 0/3] Random cleanups Sakari Ailus
@ 2023-05-08  9:17 ` Sakari Ailus
  2023-05-08  9:17 ` [PATCH 2/3] media: Documentation: Rename meta format files Sakari Ailus
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Sakari Ailus @ 2023-05-08  9:17 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart, bingbu.cao

Use the pad flag specifying the pad type instead of a boolean in
preparation for internal source pads.

Also make the loop variable unsigned.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
 drivers/media/dvb-core/dvbdev.c        |  4 +--
 drivers/media/mc/mc-entity.c           | 16 ++++-------
 drivers/media/usb/au0828/au0828-core.c |  2 +-
 drivers/media/v4l2-core/v4l2-mc.c      | 38 +++++++++++++++++---------
 include/media/media-entity.h           |  4 +--
 5 files changed, 35 insertions(+), 29 deletions(-)

diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
index 0ed087caf7f3..0091b5375e45 100644
--- a/drivers/media/dvb-core/dvbdev.c
+++ b/drivers/media/dvb-core/dvbdev.c
@@ -707,7 +707,7 @@ int dvb_create_media_graph(struct dvb_adapter *adap,
 						     MEDIA_LNK_FL_ENABLED,
 						     false);
 		} else {
-			pad_sink = media_get_pad_index(tuner, true,
+			pad_sink = media_get_pad_index(tuner, MEDIA_PAD_FL_SINK,
 						       PAD_SIGNAL_ANALOG);
 			if (pad_sink < 0)
 				return -EINVAL;
@@ -725,7 +725,7 @@ int dvb_create_media_graph(struct dvb_adapter *adap,
 
 	if (ntuner && ndemod) {
 		/* NOTE: first found tuner source pad presumed correct */
-		pad_source = media_get_pad_index(tuner, false,
+		pad_source = media_get_pad_index(tuner, MEDIA_PAD_FL_SOURCE,
 						 PAD_SIGNAL_ANALOG);
 		if (pad_source < 0)
 			return -EINVAL;
diff --git a/drivers/media/mc/mc-entity.c b/drivers/media/mc/mc-entity.c
index e7216a985ba6..ef34ddd715c9 100644
--- a/drivers/media/mc/mc-entity.c
+++ b/drivers/media/mc/mc-entity.c
@@ -1052,25 +1052,19 @@ static void __media_entity_remove_link(struct media_entity *entity,
 	kfree(link);
 }
 
-int media_get_pad_index(struct media_entity *entity, bool is_sink,
+int media_get_pad_index(struct media_entity *entity, u32 pad_type,
 			enum media_pad_signal_type sig_type)
 {
-	int i;
-	bool pad_is_sink;
+	unsigned int i;
 
 	if (!entity)
 		return -EINVAL;
 
 	for (i = 0; i < entity->num_pads; i++) {
-		if (entity->pads[i].flags & MEDIA_PAD_FL_SINK)
-			pad_is_sink = true;
-		else if (entity->pads[i].flags & MEDIA_PAD_FL_SOURCE)
-			pad_is_sink = false;
-		else
-			continue;	/* This is an error! */
-
-		if (pad_is_sink != is_sink)
+		if ((entity->pads[i].flags &
+		     (MEDIA_PAD_FL_SINK | MEDIA_PAD_FL_SOURCE)) != pad_type)
 			continue;
+
 		if (entity->pads[i].sig_type == sig_type)
 			return i;
 	}
diff --git a/drivers/media/usb/au0828/au0828-core.c b/drivers/media/usb/au0828/au0828-core.c
index b3a09d3ac7d2..1e246b47766d 100644
--- a/drivers/media/usb/au0828/au0828-core.c
+++ b/drivers/media/usb/au0828/au0828-core.c
@@ -250,7 +250,7 @@ static void au0828_media_graph_notify(struct media_entity *new,
 
 create_link:
 	if (decoder && mixer) {
-		ret = media_get_pad_index(decoder, false,
+		ret = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE,
 					  PAD_SIGNAL_AUDIO);
 		if (ret >= 0)
 			ret = media_create_pad_link(decoder, ret,
diff --git a/drivers/media/v4l2-core/v4l2-mc.c b/drivers/media/v4l2-core/v4l2-mc.c
index bf0c18100664..209a7efd08fe 100644
--- a/drivers/media/v4l2-core/v4l2-mc.c
+++ b/drivers/media/v4l2-core/v4l2-mc.c
@@ -105,9 +105,11 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
 	/* Link the tuner and IF video output pads */
 	if (tuner) {
 		if (if_vid) {
-			pad_source = media_get_pad_index(tuner, false,
+			pad_source = media_get_pad_index(tuner,
+							 MEDIA_PAD_FL_SOURCE,
 							 PAD_SIGNAL_ANALOG);
-			pad_sink = media_get_pad_index(if_vid, true,
+			pad_sink = media_get_pad_index(if_vid,
+						       MEDIA_PAD_FL_SINK,
 						       PAD_SIGNAL_ANALOG);
 			if (pad_source < 0 || pad_sink < 0) {
 				dev_warn(mdev->dev, "Couldn't get tuner and/or PLL pad(s): (%d, %d)\n",
@@ -122,9 +124,11 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
 				return ret;
 			}
 
-			pad_source = media_get_pad_index(if_vid, false,
+			pad_source = media_get_pad_index(if_vid,
+							 MEDIA_PAD_FL_SOURCE,
 							 PAD_SIGNAL_ANALOG);
-			pad_sink = media_get_pad_index(decoder, true,
+			pad_sink = media_get_pad_index(decoder,
+						       MEDIA_PAD_FL_SINK,
 						       PAD_SIGNAL_ANALOG);
 			if (pad_source < 0 || pad_sink < 0) {
 				dev_warn(mdev->dev, "get decoder and/or PLL pad(s): (%d, %d)\n",
@@ -139,9 +143,11 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
 				return ret;
 			}
 		} else {
-			pad_source = media_get_pad_index(tuner, false,
+			pad_source = media_get_pad_index(tuner,
+							 MEDIA_PAD_FL_SOURCE,
 							 PAD_SIGNAL_ANALOG);
-			pad_sink = media_get_pad_index(decoder, true,
+			pad_sink = media_get_pad_index(decoder,
+						       MEDIA_PAD_FL_SINK,
 						       PAD_SIGNAL_ANALOG);
 			if (pad_source < 0 || pad_sink < 0) {
 				dev_warn(mdev->dev, "couldn't get tuner and/or decoder pad(s): (%d, %d)\n",
@@ -156,9 +162,11 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
 		}
 
 		if (if_aud) {
-			pad_source = media_get_pad_index(tuner, false,
+			pad_source = media_get_pad_index(tuner,
+							 MEDIA_PAD_FL_SOURCE,
 							 PAD_SIGNAL_AUDIO);
-			pad_sink = media_get_pad_index(if_aud, true,
+			pad_sink = media_get_pad_index(if_aud,
+						       MEDIA_PAD_FL_SINK,
 						       PAD_SIGNAL_AUDIO);
 			if (pad_source < 0 || pad_sink < 0) {
 				dev_warn(mdev->dev, "couldn't get tuner and/or decoder pad(s) for audio: (%d, %d)\n",
@@ -180,7 +188,8 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
 
 	/* Create demod to V4L, VBI and SDR radio links */
 	if (io_v4l) {
-		pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV);
+		pad_source = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE,
+						 PAD_SIGNAL_DV);
 		if (pad_source < 0) {
 			dev_warn(mdev->dev, "couldn't get decoder output pad for V4L I/O\n");
 			return -EINVAL;
@@ -195,7 +204,8 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
 	}
 
 	if (io_swradio) {
-		pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV);
+		pad_source = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE,
+						 PAD_SIGNAL_DV);
 		if (pad_source < 0) {
 			dev_warn(mdev->dev, "couldn't get decoder output pad for SDR\n");
 			return -EINVAL;
@@ -210,7 +220,8 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
 	}
 
 	if (io_vbi) {
-		pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV);
+		pad_source = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE,
+						 PAD_SIGNAL_DV);
 		if (pad_source < 0) {
 			dev_warn(mdev->dev, "couldn't get decoder output pad for VBI\n");
 			return -EINVAL;
@@ -231,7 +242,7 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
 		case MEDIA_ENT_F_CONN_RF:
 			if (!tuner)
 				continue;
-			pad_sink = media_get_pad_index(tuner, true,
+			pad_sink = media_get_pad_index(tuner, MEDIA_PAD_FL_SINK,
 						       PAD_SIGNAL_ANALOG);
 			if (pad_sink < 0) {
 				dev_warn(mdev->dev, "couldn't get tuner analog pad sink\n");
@@ -243,7 +254,8 @@ int v4l2_mc_create_media_graph(struct media_device *mdev)
 			break;
 		case MEDIA_ENT_F_CONN_SVIDEO:
 		case MEDIA_ENT_F_CONN_COMPOSITE:
-			pad_sink = media_get_pad_index(decoder, true,
+			pad_sink = media_get_pad_index(decoder,
+						       MEDIA_PAD_FL_SINK,
 						       PAD_SIGNAL_ANALOG);
 			if (pad_sink < 0) {
 				dev_warn(mdev->dev, "couldn't get decoder analog pad sink\n");
diff --git a/include/media/media-entity.h b/include/media/media-entity.h
index 741f9c629c6f..e4f556911c3f 100644
--- a/include/media/media-entity.h
+++ b/include/media/media-entity.h
@@ -741,7 +741,7 @@ static inline void media_entity_cleanup(struct media_entity *entity) {}
  * media_get_pad_index() - retrieves a pad index from an entity
  *
  * @entity:	entity where the pads belong
- * @is_sink:	true if the pad is a sink, false if it is a source
+ * @pad_type:	the type of the pad, one of MEDIA_PAD_FL_* pad types
  * @sig_type:	type of signal of the pad to be search
  *
  * This helper function finds the first pad index inside an entity that
@@ -752,7 +752,7 @@ static inline void media_entity_cleanup(struct media_entity *entity) {}
  * On success, return the pad number. If the pad was not found or the media
  * entity is a NULL pointer, return -EINVAL.
  */
-int media_get_pad_index(struct media_entity *entity, bool is_sink,
+int media_get_pad_index(struct media_entity *entity, u32 pad_type,
 			enum media_pad_signal_type sig_type);
 
 /**
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/3] media: Documentation: Rename meta format files
  2023-05-08  9:17 [PATCH v2 0/3] Random cleanups Sakari Ailus
  2023-05-08  9:17 ` [PATCH 1/3] media: mc: Make media_get_pad_index() use pad type flag Sakari Ailus
@ 2023-05-08  9:17 ` Sakari Ailus
  2023-05-08  9:17 ` [PATCH 3/3] media: uapi: Use _BITUL macro for assigning bits in u32 fields Sakari Ailus
  2023-05-08  9:20 ` [PATCH 0/3] Random cleanups Sakari Ailus
  3 siblings, 0 replies; 7+ messages in thread
From: Sakari Ailus @ 2023-05-08  9:17 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart, bingbu.cao

Rename meta format files, using "metafmt" prefix instead of "pixfmt-meta".
These are metadata formats, not pixel formats.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: Bingbu Cao <bingbu.cao@intel.com>
Cc: Dafna Hirschfeld <dafna@fastmail.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
 .../userspace-api/media/v4l/meta-formats.rst       | 14 +++++++-------
 .../v4l/{pixfmt-meta-d4xx.rst => metafmt-d4xx.rst} |  0
 ...-meta-intel-ipu3.rst => metafmt-intel-ipu3.rst} |  0
 .../{pixfmt-meta-rkisp1.rst => metafmt-rkisp1.rst} |  0
 .../v4l/{pixfmt-meta-uvc.rst => metafmt-uvc.rst}   |  0
 .../{pixfmt-meta-vivid.rst => metafmt-vivid.rst}   |  0
 ...xfmt-meta-vsp1-hgo.rst => metafmt-vsp1-hgo.rst} |  0
 ...xfmt-meta-vsp1-hgt.rst => metafmt-vsp1-hgt.rst} |  0
 MAINTAINERS                                        |  4 ++--
 9 files changed, 9 insertions(+), 9 deletions(-)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-d4xx.rst => metafmt-d4xx.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-intel-ipu3.rst => metafmt-intel-ipu3.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-rkisp1.rst => metafmt-rkisp1.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-uvc.rst => metafmt-uvc.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-vivid.rst => metafmt-vivid.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-vsp1-hgo.rst => metafmt-vsp1-hgo.rst} (100%)
 rename Documentation/userspace-api/media/v4l/{pixfmt-meta-vsp1-hgt.rst => metafmt-vsp1-hgt.rst} (100%)

diff --git a/Documentation/userspace-api/media/v4l/meta-formats.rst b/Documentation/userspace-api/media/v4l/meta-formats.rst
index fff25357fe86..0bb61fc5bc00 100644
--- a/Documentation/userspace-api/media/v4l/meta-formats.rst
+++ b/Documentation/userspace-api/media/v4l/meta-formats.rst
@@ -12,10 +12,10 @@ These formats are used for the :ref:`metadata` interface only.
 .. toctree::
     :maxdepth: 1
 
-    pixfmt-meta-d4xx
-    pixfmt-meta-intel-ipu3
-    pixfmt-meta-rkisp1
-    pixfmt-meta-uvc
-    pixfmt-meta-vsp1-hgo
-    pixfmt-meta-vsp1-hgt
-    pixfmt-meta-vivid
+    metafmt-d4xx
+    metafmt-intel-ipu3
+    metafmt-rkisp1
+    metafmt-uvc
+    metafmt-vsp1-hgo
+    metafmt-vsp1-hgt
+    metafmt-vivid
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-meta-d4xx.rst b/Documentation/userspace-api/media/v4l/metafmt-d4xx.rst
similarity index 100%
rename from Documentation/userspace-api/media/v4l/pixfmt-meta-d4xx.rst
rename to Documentation/userspace-api/media/v4l/metafmt-d4xx.rst
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-meta-intel-ipu3.rst b/Documentation/userspace-api/media/v4l/metafmt-intel-ipu3.rst
similarity index 100%
rename from Documentation/userspace-api/media/v4l/pixfmt-meta-intel-ipu3.rst
rename to Documentation/userspace-api/media/v4l/metafmt-intel-ipu3.rst
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-meta-rkisp1.rst b/Documentation/userspace-api/media/v4l/metafmt-rkisp1.rst
similarity index 100%
rename from Documentation/userspace-api/media/v4l/pixfmt-meta-rkisp1.rst
rename to Documentation/userspace-api/media/v4l/metafmt-rkisp1.rst
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-meta-uvc.rst b/Documentation/userspace-api/media/v4l/metafmt-uvc.rst
similarity index 100%
rename from Documentation/userspace-api/media/v4l/pixfmt-meta-uvc.rst
rename to Documentation/userspace-api/media/v4l/metafmt-uvc.rst
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-meta-vivid.rst b/Documentation/userspace-api/media/v4l/metafmt-vivid.rst
similarity index 100%
rename from Documentation/userspace-api/media/v4l/pixfmt-meta-vivid.rst
rename to Documentation/userspace-api/media/v4l/metafmt-vivid.rst
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-meta-vsp1-hgo.rst b/Documentation/userspace-api/media/v4l/metafmt-vsp1-hgo.rst
similarity index 100%
rename from Documentation/userspace-api/media/v4l/pixfmt-meta-vsp1-hgo.rst
rename to Documentation/userspace-api/media/v4l/metafmt-vsp1-hgo.rst
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-meta-vsp1-hgt.rst b/Documentation/userspace-api/media/v4l/metafmt-vsp1-hgt.rst
similarity index 100%
rename from Documentation/userspace-api/media/v4l/pixfmt-meta-vsp1-hgt.rst
rename to Documentation/userspace-api/media/v4l/metafmt-vsp1-hgt.rst
diff --git a/MAINTAINERS b/MAINTAINERS
index e25ebb7c781b..546826109900 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -10359,7 +10359,7 @@ L:	linux-media@vger.kernel.org
 S:	Maintained
 F:	Documentation/admin-guide/media/ipu3.rst
 F:	Documentation/admin-guide/media/ipu3_rcb.svg
-F:	Documentation/userspace-api/media/v4l/pixfmt-meta-intel-ipu3.rst
+F:	Documentation/userspace-api/media/v4l/metafmt-intel-ipu3.rst
 F:	drivers/staging/media/ipu3/
 
 INTEL IXP4XX CRYPTO SUPPORT
@@ -18026,7 +18026,7 @@ L:	linux-rockchip@lists.infradead.org
 S:	Maintained
 F:	Documentation/admin-guide/media/rkisp1.rst
 F:	Documentation/devicetree/bindings/media/rockchip-isp1.yaml
-F:	Documentation/userspace-api/media/v4l/pixfmt-meta-rkisp1.rst
+F:	Documentation/userspace-api/media/v4l/metafmt-rkisp1.rst
 F:	drivers/media/platform/rockchip/rkisp1
 F:	include/uapi/linux/rkisp1-config.h
 
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/3] media: uapi: Use _BITUL macro for assigning bits in u32 fields
  2023-05-08  9:17 [PATCH v2 0/3] Random cleanups Sakari Ailus
  2023-05-08  9:17 ` [PATCH 1/3] media: mc: Make media_get_pad_index() use pad type flag Sakari Ailus
  2023-05-08  9:17 ` [PATCH 2/3] media: Documentation: Rename meta format files Sakari Ailus
@ 2023-05-08  9:17 ` Sakari Ailus
  2023-05-08  9:41   ` Laurent Pinchart
  2023-05-08 11:42   ` kernel test robot
  2023-05-08  9:20 ` [PATCH 0/3] Random cleanups Sakari Ailus
  3 siblings, 2 replies; 7+ messages in thread
From: Sakari Ailus @ 2023-05-08  9:17 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart, bingbu.cao

Use _BITUL macro for assigning bits in u32 fields. While this is a good
practice, there doesn't appear to be a bug that this patch would fix. For
multi-bit fields, use U notation (for unsigned int).

The patch has been generated using the following command:

	perl -i -pe 's/\([0-9]+\K <</U <</g;
		s/\(1U\s*<<\s*([0-9]+)\)$/_BITUL($1)/
			if ! /MEDIA_LNK_FL_INTERFACE_LINK/
		s/\|\s*0\K\)/U\)/' --
		include/uapi/linux/media.h

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 include/uapi/linux/media.h | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/include/uapi/linux/media.h b/include/uapi/linux/media.h
index 3ddadaea849f..370d0135780a 100644
--- a/include/uapi/linux/media.h
+++ b/include/uapi/linux/media.h
@@ -140,11 +140,11 @@ struct media_device_info {
 #define MEDIA_ENT_F_DV_ENCODER			(MEDIA_ENT_F_BASE + 0x6002)
 
 /* Entity flags */
-#define MEDIA_ENT_FL_DEFAULT			(1 << 0)
-#define MEDIA_ENT_FL_CONNECTOR			(1 << 1)
+#define MEDIA_ENT_FL_DEFAULT			_BITUL(0)
+#define MEDIA_ENT_FL_CONNECTOR			_BITUL(1)
 
 /* OR with the entity id value to find the next entity */
-#define MEDIA_ENT_ID_FLAG_NEXT			(1U << 31)
+#define MEDIA_ENT_ID_FLAG_NEXT			_BITUL(31)
 
 struct media_entity_desc {
 	__u32 id;
@@ -205,9 +205,9 @@ struct media_entity_desc {
 	};
 };
 
-#define MEDIA_PAD_FL_SINK			(1 << 0)
-#define MEDIA_PAD_FL_SOURCE			(1 << 1)
-#define MEDIA_PAD_FL_MUST_CONNECT		(1 << 2)
+#define MEDIA_PAD_FL_SINK			_BITUL(0)
+#define MEDIA_PAD_FL_SOURCE			_BITUL(1)
+#define MEDIA_PAD_FL_MUST_CONNECT		_BITUL(2)
 
 struct media_pad_desc {
 	__u32 entity;		/* entity ID */
@@ -216,14 +216,14 @@ struct media_pad_desc {
 	__u32 reserved[2];
 };
 
-#define MEDIA_LNK_FL_ENABLED			(1 << 0)
-#define MEDIA_LNK_FL_IMMUTABLE			(1 << 1)
-#define MEDIA_LNK_FL_DYNAMIC			(1 << 2)
+#define MEDIA_LNK_FL_ENABLED			_BITUL(0)
+#define MEDIA_LNK_FL_IMMUTABLE			_BITUL(1)
+#define MEDIA_LNK_FL_DYNAMIC			_BITUL(2)
 
 #define MEDIA_LNK_FL_LINK_TYPE			(0xf << 28)
-#  define MEDIA_LNK_FL_DATA_LINK		(0 << 28)
-#  define MEDIA_LNK_FL_INTERFACE_LINK		(1 << 28)
-#  define MEDIA_LNK_FL_ANCILLARY_LINK		(2 << 28)
+#  define MEDIA_LNK_FL_DATA_LINK		(0U << 28)
+#  define MEDIA_LNK_FL_INTERFACE_LINK		(1U << 28)
+#  define MEDIA_LNK_FL_ANCILLARY_LINK		(2U << 28)
 
 struct media_link_desc {
 	struct media_pad_desc source;
@@ -293,7 +293,7 @@ struct media_links_enum {
  * struct media_device_info.
  */
 #define MEDIA_V2_ENTITY_HAS_FLAGS(media_version) \
-	((media_version) >= ((4 << 16) | (19 << 8) | 0))
+	((media_version) >= ((4U << 16) | (19U << 8) | 0U))
 
 struct media_v2_entity {
 	__u32 id;
@@ -328,7 +328,7 @@ struct media_v2_interface {
  * struct media_device_info.
  */
 #define MEDIA_V2_PAD_HAS_INDEX(media_version) \
-	((media_version) >= ((4 << 16) | (19 << 8) | 0))
+	((media_version) >= ((4U << 16) | (19U << 8) | 0U))
 
 struct media_v2_pad {
 	__u32 id;
@@ -432,7 +432,7 @@ struct media_v2_topology {
 #define MEDIA_INTF_T_ALSA_TIMER                (MEDIA_INTF_T_ALSA_BASE + 7)
 
 /* Obsolete symbol for media_version, no longer used in the kernel */
-#define MEDIA_API_VERSION			((0 << 16) | (1 << 8) | 0)
+#define MEDIA_API_VERSION			((0U << 16) | (1U << 8) | 0U)
 
 #endif
 
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/3] Random cleanups
  2023-05-08  9:17 [PATCH v2 0/3] Random cleanups Sakari Ailus
                   ` (2 preceding siblings ...)
  2023-05-08  9:17 ` [PATCH 3/3] media: uapi: Use _BITUL macro for assigning bits in u32 fields Sakari Ailus
@ 2023-05-08  9:20 ` Sakari Ailus
  3 siblings, 0 replies; 7+ messages in thread
From: Sakari Ailus @ 2023-05-08  9:20 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, laurent.pinchart, bingbu.cao, tomi.valkeinen

This was meant to be v2.

-- 
Sakari Ailus

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] media: uapi: Use _BITUL macro for assigning bits in u32 fields
  2023-05-08  9:17 ` [PATCH 3/3] media: uapi: Use _BITUL macro for assigning bits in u32 fields Sakari Ailus
@ 2023-05-08  9:41   ` Laurent Pinchart
  2023-05-08 11:42   ` kernel test robot
  1 sibling, 0 replies; 7+ messages in thread
From: Laurent Pinchart @ 2023-05-08  9:41 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, bingbu.cao

Hi Sakari,

Thank you for the patch.

On Mon, May 08, 2023 at 12:17:53PM +0300, Sakari Ailus wrote:
> Use _BITUL macro for assigning bits in u32 fields. While this is a good
> practice, there doesn't appear to be a bug that this patch would fix. For
> multi-bit fields, use U notation (for unsigned int).
> 
> The patch has been generated using the following command:
> 
> 	perl -i -pe 's/\([0-9]+\K <</U <</g;
> 		s/\(1U\s*<<\s*([0-9]+)\)$/_BITUL($1)/
> 			if ! /MEDIA_LNK_FL_INTERFACE_LINK/
> 		s/\|\s*0\K\)/U\)/' --
> 		include/uapi/linux/media.h
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>

This could have been two patches are you make two unrelated
modifications, but I don't mind much.

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

> ---
>  include/uapi/linux/media.h | 30 +++++++++++++++---------------
>  1 file changed, 15 insertions(+), 15 deletions(-)
> 
> diff --git a/include/uapi/linux/media.h b/include/uapi/linux/media.h
> index 3ddadaea849f..370d0135780a 100644
> --- a/include/uapi/linux/media.h
> +++ b/include/uapi/linux/media.h
> @@ -140,11 +140,11 @@ struct media_device_info {
>  #define MEDIA_ENT_F_DV_ENCODER			(MEDIA_ENT_F_BASE + 0x6002)
>  
>  /* Entity flags */
> -#define MEDIA_ENT_FL_DEFAULT			(1 << 0)
> -#define MEDIA_ENT_FL_CONNECTOR			(1 << 1)
> +#define MEDIA_ENT_FL_DEFAULT			_BITUL(0)
> +#define MEDIA_ENT_FL_CONNECTOR			_BITUL(1)
>  
>  /* OR with the entity id value to find the next entity */
> -#define MEDIA_ENT_ID_FLAG_NEXT			(1U << 31)
> +#define MEDIA_ENT_ID_FLAG_NEXT			_BITUL(31)
>  
>  struct media_entity_desc {
>  	__u32 id;
> @@ -205,9 +205,9 @@ struct media_entity_desc {
>  	};
>  };
>  
> -#define MEDIA_PAD_FL_SINK			(1 << 0)
> -#define MEDIA_PAD_FL_SOURCE			(1 << 1)
> -#define MEDIA_PAD_FL_MUST_CONNECT		(1 << 2)
> +#define MEDIA_PAD_FL_SINK			_BITUL(0)
> +#define MEDIA_PAD_FL_SOURCE			_BITUL(1)
> +#define MEDIA_PAD_FL_MUST_CONNECT		_BITUL(2)
>  
>  struct media_pad_desc {
>  	__u32 entity;		/* entity ID */
> @@ -216,14 +216,14 @@ struct media_pad_desc {
>  	__u32 reserved[2];
>  };
>  
> -#define MEDIA_LNK_FL_ENABLED			(1 << 0)
> -#define MEDIA_LNK_FL_IMMUTABLE			(1 << 1)
> -#define MEDIA_LNK_FL_DYNAMIC			(1 << 2)
> +#define MEDIA_LNK_FL_ENABLED			_BITUL(0)
> +#define MEDIA_LNK_FL_IMMUTABLE			_BITUL(1)
> +#define MEDIA_LNK_FL_DYNAMIC			_BITUL(2)
>  
>  #define MEDIA_LNK_FL_LINK_TYPE			(0xf << 28)
> -#  define MEDIA_LNK_FL_DATA_LINK		(0 << 28)
> -#  define MEDIA_LNK_FL_INTERFACE_LINK		(1 << 28)
> -#  define MEDIA_LNK_FL_ANCILLARY_LINK		(2 << 28)
> +#  define MEDIA_LNK_FL_DATA_LINK		(0U << 28)
> +#  define MEDIA_LNK_FL_INTERFACE_LINK		(1U << 28)
> +#  define MEDIA_LNK_FL_ANCILLARY_LINK		(2U << 28)
>  
>  struct media_link_desc {
>  	struct media_pad_desc source;
> @@ -293,7 +293,7 @@ struct media_links_enum {
>   * struct media_device_info.
>   */
>  #define MEDIA_V2_ENTITY_HAS_FLAGS(media_version) \
> -	((media_version) >= ((4 << 16) | (19 << 8) | 0))
> +	((media_version) >= ((4U << 16) | (19U << 8) | 0U))
>  
>  struct media_v2_entity {
>  	__u32 id;
> @@ -328,7 +328,7 @@ struct media_v2_interface {
>   * struct media_device_info.
>   */
>  #define MEDIA_V2_PAD_HAS_INDEX(media_version) \
> -	((media_version) >= ((4 << 16) | (19 << 8) | 0))
> +	((media_version) >= ((4U << 16) | (19U << 8) | 0U))
>  
>  struct media_v2_pad {
>  	__u32 id;
> @@ -432,7 +432,7 @@ struct media_v2_topology {
>  #define MEDIA_INTF_T_ALSA_TIMER                (MEDIA_INTF_T_ALSA_BASE + 7)
>  
>  /* Obsolete symbol for media_version, no longer used in the kernel */
> -#define MEDIA_API_VERSION			((0 << 16) | (1 << 8) | 0)
> +#define MEDIA_API_VERSION			((0U << 16) | (1U << 8) | 0U)
>  
>  #endif
>  

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] media: uapi: Use _BITUL macro for assigning bits in u32 fields
  2023-05-08  9:17 ` [PATCH 3/3] media: uapi: Use _BITUL macro for assigning bits in u32 fields Sakari Ailus
  2023-05-08  9:41   ` Laurent Pinchart
@ 2023-05-08 11:42   ` kernel test robot
  1 sibling, 0 replies; 7+ messages in thread
From: kernel test robot @ 2023-05-08 11:42 UTC (permalink / raw)
  To: Sakari Ailus, linux-media; +Cc: oe-kbuild-all, laurent.pinchart, bingbu.cao

Hi Sakari,

kernel test robot noticed the following build warnings:

[auto build test WARNING on media-tree/master]
[also build test WARNING on linus/master sailus-media-tree/streams v6.4-rc1 next-20230508]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Sakari-Ailus/media-mc-Make-media_get_pad_index-use-pad-type-flag/20230508-173012
base:   git://linuxtv.org/media_tree.git master
patch link:    https://lore.kernel.org/r/20230508091753.80803-4-sakari.ailus%40linux.intel.com
patch subject: [PATCH 3/3] media: uapi: Use _BITUL macro for assigning bits in u32 fields
config: m68k-allmodconfig (https://download.01.org/0day-ci/archive/20230508/202305081924.hCNE42mH-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/1462451478f4e2ce6cc6364c2c8aacdb2db57d6b
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Sakari-Ailus/media-mc-Make-media_get_pad_index-use-pad-type-flag/20230508-173012
        git checkout 1462451478f4e2ce6cc6364c2c8aacdb2db57d6b
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=m68k olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=m68k SHELL=/bin/bash drivers/media/i2c/ drivers/media/platform/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202305081924.hCNE42mH-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from include/linux/device.h:15,
                    from include/linux/acpi.h:15,
                    from include/linux/i2c.h:13,
                    from drivers/media/i2c/tvp5150.c:8:
   drivers/media/i2c/tvp5150.c: In function 'tvp5150_link_setup':
>> drivers/media/i2c/tvp5150.c:1332:40: warning: format '%d' expects argument of type 'int', but argument 8 has type 'long unsigned int' [-Wformat=]
    1332 |         dev_dbg_lvl(sd->dev, 1, debug, "link setup '%s':%d->'%s':%d[%d]",
         |                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:129:41: note: in definition of macro 'dev_printk'
     129 |                 _dev_printk(level, dev, fmt, ##__VA_ARGS__);            \
         |                                         ^~~
   drivers/media/i2c/tvp5150.c:1332:9: note: in expansion of macro 'dev_dbg_lvl'
    1332 |         dev_dbg_lvl(sd->dev, 1, debug, "link setup '%s':%d->'%s':%d[%d]",
         |         ^~~~~~~~~~~
   drivers/media/i2c/tvp5150.c:1332:70: note: format string is defined here
    1332 |         dev_dbg_lvl(sd->dev, 1, debug, "link setup '%s':%d->'%s':%d[%d]",
         |                                                                     ~^
         |                                                                      |
         |                                                                      int
         |                                                                     %ld
   drivers/media/i2c/tvp5150.c:1338:29: warning: format '%d' expects argument of type 'int', but argument 8 has type 'long unsigned int' [-Wformat=]
    1338 |                             "link setup '%s':%d->'%s':%d[%d]",
         |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:129:41: note: in definition of macro 'dev_printk'
     129 |                 _dev_printk(level, dev, fmt, ##__VA_ARGS__);            \
         |                                         ^~~
   drivers/media/i2c/tvp5150.c:1337:17: note: in expansion of macro 'dev_dbg_lvl'
    1337 |                 dev_dbg_lvl(sd->dev, 1, debug,
         |                 ^~~~~~~~~~~
   drivers/media/i2c/tvp5150.c:1338:59: note: format string is defined here
    1338 |                             "link setup '%s':%d->'%s':%d[%d]",
         |                                                          ~^
         |                                                           |
         |                                                           int
         |                                                          %ld
--
   In file included from include/linux/printk.h:564,
                    from include/asm-generic/bug.h:22,
                    from arch/m68k/include/asm/bug.h:32,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:13,
                    from include/asm-generic/preempt.h:5,
                    from ./arch/m68k/include/generated/asm/preempt.h:1,
                    from include/linux/preempt.h:78,
                    from arch/m68k/include/asm/irqflags.h:6,
                    from include/linux/irqflags.h:16,
                    from arch/m68k/include/asm/atomic.h:6,
                    from include/linux/atomic.h:7,
                    from include/linux/mm_types_task.h:13,
                    from include/linux/mm_types.h:5,
                    from include/linux/buildid.h:5,
                    from include/linux/module.h:14,
                    from drivers/media/platform/video-mux.c:10:
   drivers/media/platform/video-mux.c: In function 'video_mux_link_setup':
>> drivers/media/platform/video-mux.c:67:26: warning: format '%d' expects argument of type 'int', but argument 8 has type 'long unsigned int' [-Wformat=]
      67 |         dev_dbg(sd->dev, "link setup '%s':%d->'%s':%d[%d]",
         |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:223:29: note: in definition of macro '__dynamic_func_call_cls'
     223 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:249:9: note: in expansion of macro '_dynamic_func_call_cls'
     249 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:272:9: note: in expansion of macro '_dynamic_func_call'
     272 |         _dynamic_func_call(fmt, __dynamic_dev_dbg,              \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:155:9: note: in expansion of macro 'dynamic_dev_dbg'
     155 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~
   include/linux/dev_printk.h:155:30: note: in expansion of macro 'dev_fmt'
     155 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |                              ^~~~~~~
   drivers/media/platform/video-mux.c:67:9: note: in expansion of macro 'dev_dbg'
      67 |         dev_dbg(sd->dev, "link setup '%s':%d->'%s':%d[%d]",
         |         ^~~~~~~
   drivers/media/platform/video-mux.c:67:56: note: format string is defined here
      67 |         dev_dbg(sd->dev, "link setup '%s':%d->'%s':%d[%d]",
         |                                                       ~^
         |                                                        |
         |                                                        int
         |                                                       %ld


vim +1332 drivers/media/i2c/tvp5150.c

0556f1d580d4c1 Marco Felsch 2020-03-12  1299  
0556f1d580d4c1 Marco Felsch 2020-03-12  1300  static int tvp5150_s_routing(struct v4l2_subdev *sd, u32 input, u32 output,
0556f1d580d4c1 Marco Felsch 2020-03-12  1301  			     u32 config);
0556f1d580d4c1 Marco Felsch 2020-03-12  1302  
0556f1d580d4c1 Marco Felsch 2020-03-12  1303  static int tvp5150_link_setup(struct media_entity *entity,
0556f1d580d4c1 Marco Felsch 2020-03-12  1304  			      const struct media_pad *tvp5150_pad,
0556f1d580d4c1 Marco Felsch 2020-03-12  1305  			      const struct media_pad *remote, u32 flags)
0556f1d580d4c1 Marco Felsch 2020-03-12  1306  {
0556f1d580d4c1 Marco Felsch 2020-03-12  1307  	struct v4l2_subdev *sd = media_entity_to_v4l2_subdev(entity);
0556f1d580d4c1 Marco Felsch 2020-03-12  1308  	struct tvp5150 *decoder = to_tvp5150(sd);
0556f1d580d4c1 Marco Felsch 2020-03-12  1309  	struct media_pad *other_tvp5150_pad =
0556f1d580d4c1 Marco Felsch 2020-03-12  1310  		&decoder->pads[tvp5150_pad->index ^ 1];
0556f1d580d4c1 Marco Felsch 2020-03-12  1311  	struct v4l2_fwnode_connector *v4l2c;
0556f1d580d4c1 Marco Felsch 2020-03-12  1312  	bool is_svideo = false;
0556f1d580d4c1 Marco Felsch 2020-03-12  1313  	unsigned int i;
0556f1d580d4c1 Marco Felsch 2020-03-12  1314  	int err;
0556f1d580d4c1 Marco Felsch 2020-03-12  1315  
0556f1d580d4c1 Marco Felsch 2020-03-12  1316  	/*
0556f1d580d4c1 Marco Felsch 2020-03-12  1317  	 * The TVP5150 state is determined by the enabled sink pad link(s).
0556f1d580d4c1 Marco Felsch 2020-03-12  1318  	 * Enabling or disabling the source pad link has no effect.
0556f1d580d4c1 Marco Felsch 2020-03-12  1319  	 */
0556f1d580d4c1 Marco Felsch 2020-03-12  1320  	if (tvp5150_pad->flags & MEDIA_PAD_FL_SOURCE)
0556f1d580d4c1 Marco Felsch 2020-03-12  1321  		return 0;
0556f1d580d4c1 Marco Felsch 2020-03-12  1322  
0556f1d580d4c1 Marco Felsch 2020-03-12  1323  	/* Check if the svideo connector should be enabled */
0556f1d580d4c1 Marco Felsch 2020-03-12  1324  	for (i = 0; i < decoder->connectors_num; i++) {
0556f1d580d4c1 Marco Felsch 2020-03-12  1325  		if (remote->entity == &decoder->connectors[i].ent) {
0556f1d580d4c1 Marco Felsch 2020-03-12  1326  			v4l2c = &decoder->connectors[i].base;
0556f1d580d4c1 Marco Felsch 2020-03-12  1327  			is_svideo = v4l2c->type == V4L2_CONN_SVIDEO;
0556f1d580d4c1 Marco Felsch 2020-03-12  1328  			break;
0556f1d580d4c1 Marco Felsch 2020-03-12  1329  		}
0556f1d580d4c1 Marco Felsch 2020-03-12  1330  	}
0556f1d580d4c1 Marco Felsch 2020-03-12  1331  
0556f1d580d4c1 Marco Felsch 2020-03-12 @1332  	dev_dbg_lvl(sd->dev, 1, debug, "link setup '%s':%d->'%s':%d[%d]",
0556f1d580d4c1 Marco Felsch 2020-03-12  1333  		    remote->entity->name, remote->index,
0556f1d580d4c1 Marco Felsch 2020-03-12  1334  		    tvp5150_pad->entity->name, tvp5150_pad->index,
0556f1d580d4c1 Marco Felsch 2020-03-12  1335  		    flags & MEDIA_LNK_FL_ENABLED);
0556f1d580d4c1 Marco Felsch 2020-03-12  1336  	if (is_svideo)
0556f1d580d4c1 Marco Felsch 2020-03-12  1337  		dev_dbg_lvl(sd->dev, 1, debug,
0556f1d580d4c1 Marco Felsch 2020-03-12  1338  			    "link setup '%s':%d->'%s':%d[%d]",
0556f1d580d4c1 Marco Felsch 2020-03-12  1339  			    remote->entity->name, remote->index,
0556f1d580d4c1 Marco Felsch 2020-03-12  1340  			    other_tvp5150_pad->entity->name,
0556f1d580d4c1 Marco Felsch 2020-03-12  1341  			    other_tvp5150_pad->index,
0556f1d580d4c1 Marco Felsch 2020-03-12  1342  			    flags & MEDIA_LNK_FL_ENABLED);
0556f1d580d4c1 Marco Felsch 2020-03-12  1343  
0556f1d580d4c1 Marco Felsch 2020-03-12  1344  	/*
0556f1d580d4c1 Marco Felsch 2020-03-12  1345  	 * The TVP5150 has an internal mux which allows the following setup:
0556f1d580d4c1 Marco Felsch 2020-03-12  1346  	 *
0556f1d580d4c1 Marco Felsch 2020-03-12  1347  	 * comp-connector1  --\
0556f1d580d4c1 Marco Felsch 2020-03-12  1348  	 *		       |---> AIP1A
0556f1d580d4c1 Marco Felsch 2020-03-12  1349  	 *		      /
0556f1d580d4c1 Marco Felsch 2020-03-12  1350  	 * svideo-connector -|
0556f1d580d4c1 Marco Felsch 2020-03-12  1351  	 *		      \
0556f1d580d4c1 Marco Felsch 2020-03-12  1352  	 *		       |---> AIP1B
0556f1d580d4c1 Marco Felsch 2020-03-12  1353  	 * comp-connector2  --/
0556f1d580d4c1 Marco Felsch 2020-03-12  1354  	 *
0556f1d580d4c1 Marco Felsch 2020-03-12  1355  	 * We can't rely on user space that the current connector gets disabled
0556f1d580d4c1 Marco Felsch 2020-03-12  1356  	 * first before enabling the new connector. Disable all active
0556f1d580d4c1 Marco Felsch 2020-03-12  1357  	 * connector links to be on the safe side.
0556f1d580d4c1 Marco Felsch 2020-03-12  1358  	 */
0556f1d580d4c1 Marco Felsch 2020-03-12  1359  	err = tvp5150_disable_all_input_links(decoder);
0556f1d580d4c1 Marco Felsch 2020-03-12  1360  	if (err)
0556f1d580d4c1 Marco Felsch 2020-03-12  1361  		return err;
0556f1d580d4c1 Marco Felsch 2020-03-12  1362  
0556f1d580d4c1 Marco Felsch 2020-03-12  1363  	tvp5150_s_routing(sd, is_svideo ? TVP5150_SVIDEO : tvp5150_pad->index,
0556f1d580d4c1 Marco Felsch 2020-03-12  1364  			  flags & MEDIA_LNK_FL_ENABLED ? TVP5150_NORMAL :
0556f1d580d4c1 Marco Felsch 2020-03-12  1365  			  TVP5150_BLACK_SCREEN, 0);
0556f1d580d4c1 Marco Felsch 2020-03-12  1366  
0556f1d580d4c1 Marco Felsch 2020-03-12  1367  	if (flags & MEDIA_LNK_FL_ENABLED) {
baf178219478c2 Marco Felsch 2020-03-12  1368  		struct v4l2_fwnode_connector_analog *v4l2ca;
baf178219478c2 Marco Felsch 2020-03-12  1369  		u32 new_norm;
baf178219478c2 Marco Felsch 2020-03-12  1370  
0556f1d580d4c1 Marco Felsch 2020-03-12  1371  		/*
0556f1d580d4c1 Marco Felsch 2020-03-12  1372  		 * S-Video connector is conneted to both ports AIP1A and AIP1B.
0556f1d580d4c1 Marco Felsch 2020-03-12  1373  		 * Both links must be enabled in one-shot regardless which link
0556f1d580d4c1 Marco Felsch 2020-03-12  1374  		 * the user requests.
0556f1d580d4c1 Marco Felsch 2020-03-12  1375  		 */
0556f1d580d4c1 Marco Felsch 2020-03-12  1376  		if (is_svideo) {
0556f1d580d4c1 Marco Felsch 2020-03-12  1377  			err = tvp5150_set_link((struct media_pad *)remote,
0556f1d580d4c1 Marco Felsch 2020-03-12  1378  					       other_tvp5150_pad, flags);
0556f1d580d4c1 Marco Felsch 2020-03-12  1379  			if (err)
0556f1d580d4c1 Marco Felsch 2020-03-12  1380  				return err;
0556f1d580d4c1 Marco Felsch 2020-03-12  1381  		}
baf178219478c2 Marco Felsch 2020-03-12  1382  
baf178219478c2 Marco Felsch 2020-03-12  1383  		if (!decoder->connectors_num)
baf178219478c2 Marco Felsch 2020-03-12  1384  			return 0;
baf178219478c2 Marco Felsch 2020-03-12  1385  
baf178219478c2 Marco Felsch 2020-03-12  1386  		/* Update the current connector */
baf178219478c2 Marco Felsch 2020-03-12  1387  		decoder->cur_connector =
baf178219478c2 Marco Felsch 2020-03-12  1388  			container_of(remote, struct tvp5150_connector, pad);
baf178219478c2 Marco Felsch 2020-03-12  1389  
baf178219478c2 Marco Felsch 2020-03-12  1390  		/*
baf178219478c2 Marco Felsch 2020-03-12  1391  		 * Do nothing if the new connector supports the same tv-norms as
baf178219478c2 Marco Felsch 2020-03-12  1392  		 * the old one.
baf178219478c2 Marco Felsch 2020-03-12  1393  		 */
baf178219478c2 Marco Felsch 2020-03-12  1394  		v4l2ca = &decoder->cur_connector->base.connector.analog;
baf178219478c2 Marco Felsch 2020-03-12  1395  		new_norm = decoder->norm & v4l2ca->sdtv_stds;
baf178219478c2 Marco Felsch 2020-03-12  1396  		if (decoder->norm == new_norm)
baf178219478c2 Marco Felsch 2020-03-12  1397  			return 0;
baf178219478c2 Marco Felsch 2020-03-12  1398  
baf178219478c2 Marco Felsch 2020-03-12  1399  		/*
baf178219478c2 Marco Felsch 2020-03-12  1400  		 * Fallback to the new connector tv-norms if we can't find any
baf178219478c2 Marco Felsch 2020-03-12  1401  		 * common between the current tv-norm and the new one.
baf178219478c2 Marco Felsch 2020-03-12  1402  		 */
baf178219478c2 Marco Felsch 2020-03-12  1403  		tvp5150_s_std(sd, new_norm ? new_norm : v4l2ca->sdtv_stds);
0556f1d580d4c1 Marco Felsch 2020-03-12  1404  	}
0556f1d580d4c1 Marco Felsch 2020-03-12  1405  
0556f1d580d4c1 Marco Felsch 2020-03-12  1406  	return 0;
0556f1d580d4c1 Marco Felsch 2020-03-12  1407  }
0556f1d580d4c1 Marco Felsch 2020-03-12  1408  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-05-08 11:45 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-08  9:17 [PATCH v2 0/3] Random cleanups Sakari Ailus
2023-05-08  9:17 ` [PATCH 1/3] media: mc: Make media_get_pad_index() use pad type flag Sakari Ailus
2023-05-08  9:17 ` [PATCH 2/3] media: Documentation: Rename meta format files Sakari Ailus
2023-05-08  9:17 ` [PATCH 3/3] media: uapi: Use _BITUL macro for assigning bits in u32 fields Sakari Ailus
2023-05-08  9:41   ` Laurent Pinchart
2023-05-08 11:42   ` kernel test robot
2023-05-08  9:20 ` [PATCH 0/3] Random cleanups Sakari Ailus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox