[media] omap3isp: Find source pad from external entity
authorSakari Ailus <sakari.ailus@iki.fi>
Sat, 20 Oct 2012 21:48:18 +0000 (18:48 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 28 Nov 2012 12:45:50 +0000 (10:45 -0200)
No longer assume pad number 0 is the source pad of the external entity. Find
the source pad from the external entity and use it instead.

Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/platform/omap3isp/isp.c

index 5ea5520ff467da2f52dd465f7b8b3f92c168d7bd..cb9bc3436135878d104a23a8f6dc734ad957574c 100644 (file)
@@ -1767,6 +1767,7 @@ static int isp_register_entities(struct isp_device *isp)
                struct media_entity *input;
                unsigned int flags;
                unsigned int pad;
+               unsigned int i;
 
                sensor = isp_register_subdev_group(isp, subdevs->subdevs);
                if (sensor == NULL)
@@ -1814,7 +1815,19 @@ static int isp_register_entities(struct isp_device *isp)
                        goto done;
                }
 
-               ret = media_entity_create_link(&sensor->entity, 0, input, pad,
+               for (i = 0; i < sensor->entity.num_pads; i++) {
+                       if (sensor->entity.pads[i].flags & MEDIA_PAD_FL_SOURCE)
+                               break;
+               }
+               if (i == sensor->entity.num_pads) {
+                       dev_err(isp->dev,
+                               "%s: no source pad in external entity\n",
+                               __func__);
+                       ret = -EINVAL;
+                       goto done;
+               }
+
+               ret = media_entity_create_link(&sensor->entity, i, input, pad,
                                               flags);
                if (ret < 0)
                        goto done;