diff options
author | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2013-07-19 11:21:29 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2013-07-30 14:52:32 -0400 |
commit | e7359f8e660882fb2168609638163561eb2f50f0 (patch) | |
tree | f40223db11d3de96d1315023530880d33a844dca /drivers/media/v4l2-core | |
parent | cfca7644d7959e1f50cb132306d1557bf6c2da57 (diff) |
[media] V4L: Add V4L2_ASYNC_MATCH_OF subdev matching type
Add support for matching by device_node pointer. This allows
the notifier user to simply pass a list of device_node pointers
corresponding to sub-devices.
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/v4l2-core')
-rw-r--r-- | drivers/media/v4l2-core/v4l2-async.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c index 86934ca73357..9f91013a600d 100644 --- a/drivers/media/v4l2-core/v4l2-async.c +++ b/drivers/media/v4l2-core/v4l2-async.c | |||
@@ -39,6 +39,11 @@ static bool match_devname(struct device *dev, struct v4l2_async_subdev *asd) | |||
39 | return !strcmp(asd->match.device_name.name, dev_name(dev)); | 39 | return !strcmp(asd->match.device_name.name, dev_name(dev)); |
40 | } | 40 | } |
41 | 41 | ||
42 | static bool match_of(struct device *dev, struct v4l2_async_subdev *asd) | ||
43 | { | ||
44 | return dev->of_node == asd->match.of.node; | ||
45 | } | ||
46 | |||
42 | static LIST_HEAD(subdev_list); | 47 | static LIST_HEAD(subdev_list); |
43 | static LIST_HEAD(notifier_list); | 48 | static LIST_HEAD(notifier_list); |
44 | static DEFINE_MUTEX(list_lock); | 49 | static DEFINE_MUTEX(list_lock); |
@@ -66,6 +71,9 @@ static struct v4l2_async_subdev *v4l2_async_belongs(struct v4l2_async_notifier * | |||
66 | case V4L2_ASYNC_MATCH_I2C: | 71 | case V4L2_ASYNC_MATCH_I2C: |
67 | match = match_i2c; | 72 | match = match_i2c; |
68 | break; | 73 | break; |
74 | case V4L2_ASYNC_MATCH_OF: | ||
75 | match = match_of; | ||
76 | break; | ||
69 | default: | 77 | default: |
70 | /* Cannot happen, unless someone breaks us */ | 78 | /* Cannot happen, unless someone breaks us */ |
71 | WARN_ON(true); | 79 | WARN_ON(true); |
@@ -145,6 +153,7 @@ int v4l2_async_notifier_register(struct v4l2_device *v4l2_dev, | |||
145 | case V4L2_ASYNC_MATCH_CUSTOM: | 153 | case V4L2_ASYNC_MATCH_CUSTOM: |
146 | case V4L2_ASYNC_MATCH_DEVNAME: | 154 | case V4L2_ASYNC_MATCH_DEVNAME: |
147 | case V4L2_ASYNC_MATCH_I2C: | 155 | case V4L2_ASYNC_MATCH_I2C: |
156 | case V4L2_ASYNC_MATCH_OF: | ||
148 | break; | 157 | break; |
149 | default: | 158 | default: |
150 | dev_err(notifier->v4l2_dev ? notifier->v4l2_dev->dev : NULL, | 159 | dev_err(notifier->v4l2_dev ? notifier->v4l2_dev->dev : NULL, |