media: mc: Make media_get_pad_index() use pad type flag
authorSakari Ailus <sakari.ailus@linux.intel.com>
Tue, 25 Apr 2023 10:23:00 +0000 (13:23 +0300)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Thu, 25 May 2023 14:21:22 +0000 (16:21 +0200)
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>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/dvb-core/dvbdev.c
drivers/media/mc/mc-entity.c
drivers/media/usb/au0828/au0828-core.c
drivers/media/v4l2-core/v4l2-mc.c
include/media/media-entity.h

index fb81fa4..305bb21 100644 (file)
@@ -730,7 +730,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;
@@ -748,7 +748,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;
index 8d6e7a6..83468d4 100644 (file)
@@ -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;
        }
index b3a09d3..1e246b4 100644 (file)
@@ -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,
index bf0c181..209a7ef 100644 (file)
@@ -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");
index 452d9c9..2b6cd34 100644 (file)
@@ -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);
 
 /**