diff options
author | Sakari Ailus <sakari.ailus@iki.fi> | 2012-10-21 01:48:18 +0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-11-28 16:45:50 +0400 |
commit | aab84f55d45ff6838e708f0cb8e1c0166d339ef6 (patch) | |
tree | 9501cefb494febf9c7bed88aeb02a212ccf6e799 /drivers/media | |
parent | a7b21061363dc980b3867a65d657ce7796303454 (diff) | |
download | linux-aab84f55d45ff6838e708f0cb8e1c0166d339ef6.tar.xz |
[media] omap3isp: Find source pad from external entity
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>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/platform/omap3isp/isp.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c index 5ea5520ff467..cb9bc3436135 100644 --- a/drivers/media/platform/omap3isp/isp.c +++ b/drivers/media/platform/omap3isp/isp.c @@ -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; |