Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: mc: Make media_get_pad_index() use pad type flag

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>

authored by

Sakari Ailus and committed by
Hans Verkuil
4fd463e9 7ab94843

+35 -29
+2 -2
drivers/media/dvb-core/dvbdev.c
··· 730 730 MEDIA_LNK_FL_ENABLED, 731 731 false); 732 732 } else { 733 - pad_sink = media_get_pad_index(tuner, true, 733 + pad_sink = media_get_pad_index(tuner, MEDIA_PAD_FL_SINK, 734 734 PAD_SIGNAL_ANALOG); 735 735 if (pad_sink < 0) 736 736 return -EINVAL; ··· 748 748 749 749 if (ntuner && ndemod) { 750 750 /* NOTE: first found tuner source pad presumed correct */ 751 - pad_source = media_get_pad_index(tuner, false, 751 + pad_source = media_get_pad_index(tuner, MEDIA_PAD_FL_SOURCE, 752 752 PAD_SIGNAL_ANALOG); 753 753 if (pad_source < 0) 754 754 return -EINVAL;
+5 -11
drivers/media/mc/mc-entity.c
··· 1052 1052 kfree(link); 1053 1053 } 1054 1054 1055 - int media_get_pad_index(struct media_entity *entity, bool is_sink, 1055 + int media_get_pad_index(struct media_entity *entity, u32 pad_type, 1056 1056 enum media_pad_signal_type sig_type) 1057 1057 { 1058 - int i; 1059 - bool pad_is_sink; 1058 + unsigned int i; 1060 1059 1061 1060 if (!entity) 1062 1061 return -EINVAL; 1063 1062 1064 1063 for (i = 0; i < entity->num_pads; i++) { 1065 - if (entity->pads[i].flags & MEDIA_PAD_FL_SINK) 1066 - pad_is_sink = true; 1067 - else if (entity->pads[i].flags & MEDIA_PAD_FL_SOURCE) 1068 - pad_is_sink = false; 1069 - else 1070 - continue; /* This is an error! */ 1071 - 1072 - if (pad_is_sink != is_sink) 1064 + if ((entity->pads[i].flags & 1065 + (MEDIA_PAD_FL_SINK | MEDIA_PAD_FL_SOURCE)) != pad_type) 1073 1066 continue; 1067 + 1074 1068 if (entity->pads[i].sig_type == sig_type) 1075 1069 return i; 1076 1070 }
+1 -1
drivers/media/usb/au0828/au0828-core.c
··· 250 250 251 251 create_link: 252 252 if (decoder && mixer) { 253 - ret = media_get_pad_index(decoder, false, 253 + ret = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE, 254 254 PAD_SIGNAL_AUDIO); 255 255 if (ret >= 0) 256 256 ret = media_create_pad_link(decoder, ret,
+25 -13
drivers/media/v4l2-core/v4l2-mc.c
··· 105 105 /* Link the tuner and IF video output pads */ 106 106 if (tuner) { 107 107 if (if_vid) { 108 - pad_source = media_get_pad_index(tuner, false, 108 + pad_source = media_get_pad_index(tuner, 109 + MEDIA_PAD_FL_SOURCE, 109 110 PAD_SIGNAL_ANALOG); 110 - pad_sink = media_get_pad_index(if_vid, true, 111 + pad_sink = media_get_pad_index(if_vid, 112 + MEDIA_PAD_FL_SINK, 111 113 PAD_SIGNAL_ANALOG); 112 114 if (pad_source < 0 || pad_sink < 0) { 113 115 dev_warn(mdev->dev, "Couldn't get tuner and/or PLL pad(s): (%d, %d)\n", ··· 124 122 return ret; 125 123 } 126 124 127 - pad_source = media_get_pad_index(if_vid, false, 125 + pad_source = media_get_pad_index(if_vid, 126 + MEDIA_PAD_FL_SOURCE, 128 127 PAD_SIGNAL_ANALOG); 129 - pad_sink = media_get_pad_index(decoder, true, 128 + pad_sink = media_get_pad_index(decoder, 129 + MEDIA_PAD_FL_SINK, 130 130 PAD_SIGNAL_ANALOG); 131 131 if (pad_source < 0 || pad_sink < 0) { 132 132 dev_warn(mdev->dev, "get decoder and/or PLL pad(s): (%d, %d)\n", ··· 143 139 return ret; 144 140 } 145 141 } else { 146 - pad_source = media_get_pad_index(tuner, false, 142 + pad_source = media_get_pad_index(tuner, 143 + MEDIA_PAD_FL_SOURCE, 147 144 PAD_SIGNAL_ANALOG); 148 - pad_sink = media_get_pad_index(decoder, true, 145 + pad_sink = media_get_pad_index(decoder, 146 + MEDIA_PAD_FL_SINK, 149 147 PAD_SIGNAL_ANALOG); 150 148 if (pad_source < 0 || pad_sink < 0) { 151 149 dev_warn(mdev->dev, "couldn't get tuner and/or decoder pad(s): (%d, %d)\n", ··· 162 156 } 163 157 164 158 if (if_aud) { 165 - pad_source = media_get_pad_index(tuner, false, 159 + pad_source = media_get_pad_index(tuner, 160 + MEDIA_PAD_FL_SOURCE, 166 161 PAD_SIGNAL_AUDIO); 167 - pad_sink = media_get_pad_index(if_aud, true, 162 + pad_sink = media_get_pad_index(if_aud, 163 + MEDIA_PAD_FL_SINK, 168 164 PAD_SIGNAL_AUDIO); 169 165 if (pad_source < 0 || pad_sink < 0) { 170 166 dev_warn(mdev->dev, "couldn't get tuner and/or decoder pad(s) for audio: (%d, %d)\n", ··· 188 180 189 181 /* Create demod to V4L, VBI and SDR radio links */ 190 182 if (io_v4l) { 191 - pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV); 183 + pad_source = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE, 184 + PAD_SIGNAL_DV); 192 185 if (pad_source < 0) { 193 186 dev_warn(mdev->dev, "couldn't get decoder output pad for V4L I/O\n"); 194 187 return -EINVAL; ··· 204 195 } 205 196 206 197 if (io_swradio) { 207 - pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV); 198 + pad_source = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE, 199 + PAD_SIGNAL_DV); 208 200 if (pad_source < 0) { 209 201 dev_warn(mdev->dev, "couldn't get decoder output pad for SDR\n"); 210 202 return -EINVAL; ··· 220 210 } 221 211 222 212 if (io_vbi) { 223 - pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV); 213 + pad_source = media_get_pad_index(decoder, MEDIA_PAD_FL_SOURCE, 214 + PAD_SIGNAL_DV); 224 215 if (pad_source < 0) { 225 216 dev_warn(mdev->dev, "couldn't get decoder output pad for VBI\n"); 226 217 return -EINVAL; ··· 242 231 case MEDIA_ENT_F_CONN_RF: 243 232 if (!tuner) 244 233 continue; 245 - pad_sink = media_get_pad_index(tuner, true, 234 + pad_sink = media_get_pad_index(tuner, MEDIA_PAD_FL_SINK, 246 235 PAD_SIGNAL_ANALOG); 247 236 if (pad_sink < 0) { 248 237 dev_warn(mdev->dev, "couldn't get tuner analog pad sink\n"); ··· 254 243 break; 255 244 case MEDIA_ENT_F_CONN_SVIDEO: 256 245 case MEDIA_ENT_F_CONN_COMPOSITE: 257 - pad_sink = media_get_pad_index(decoder, true, 246 + pad_sink = media_get_pad_index(decoder, 247 + MEDIA_PAD_FL_SINK, 258 248 PAD_SIGNAL_ANALOG); 259 249 if (pad_sink < 0) { 260 250 dev_warn(mdev->dev, "couldn't get decoder analog pad sink\n");
+2 -2
include/media/media-entity.h
··· 741 741 * media_get_pad_index() - retrieves a pad index from an entity 742 742 * 743 743 * @entity: entity where the pads belong 744 - * @is_sink: true if the pad is a sink, false if it is a source 744 + * @pad_type: the type of the pad, one of MEDIA_PAD_FL_* pad types 745 745 * @sig_type: type of signal of the pad to be search 746 746 * 747 747 * This helper function finds the first pad index inside an entity that ··· 752 752 * On success, return the pad number. If the pad was not found or the media 753 753 * entity is a NULL pointer, return -EINVAL. 754 754 */ 755 - int media_get_pad_index(struct media_entity *entity, bool is_sink, 755 + int media_get_pad_index(struct media_entity *entity, u32 pad_type, 756 756 enum media_pad_signal_type sig_type); 757 757 758 758 /**