mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[media] v4l: async: Add fwnode match support
Add fwnode matching to complement OF node matching. And fwnode may also be an OF node. Do not enable fwnode matching yet. It will replace OF matching soon. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Tested-by: Hans Verkuil <hans.verkuil@cisco.com> Tested-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
ca50c197bd
commit
ecdf0cfe71
3 changed files with 23 additions and 0 deletions
|
@ -14,6 +14,7 @@
|
|||
#include <linux/list.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/types.h>
|
||||
|
@ -46,6 +47,16 @@ static bool match_of(struct v4l2_subdev *sd, struct v4l2_async_subdev *asd)
|
|||
of_node_full_name(asd->match.of.node));
|
||||
}
|
||||
|
||||
static bool match_fwnode(struct v4l2_subdev *sd, struct v4l2_async_subdev *asd)
|
||||
{
|
||||
if (!is_of_node(sd->fwnode) || !is_of_node(asd->match.fwnode.fwnode))
|
||||
return sd->fwnode == asd->match.fwnode.fwnode;
|
||||
|
||||
return !of_node_cmp(of_node_full_name(to_of_node(sd->fwnode)),
|
||||
of_node_full_name(
|
||||
to_of_node(asd->match.fwnode.fwnode)));
|
||||
}
|
||||
|
||||
static bool match_custom(struct v4l2_subdev *sd, struct v4l2_async_subdev *asd)
|
||||
{
|
||||
if (!asd->match.custom.match)
|
||||
|
@ -80,6 +91,9 @@ static struct v4l2_async_subdev *v4l2_async_belongs(struct v4l2_async_notifier *
|
|||
case V4L2_ASYNC_MATCH_OF:
|
||||
match = match_of;
|
||||
break;
|
||||
case V4L2_ASYNC_MATCH_FWNODE:
|
||||
match = match_fwnode;
|
||||
break;
|
||||
default:
|
||||
/* Cannot happen, unless someone breaks us */
|
||||
WARN_ON(true);
|
||||
|
@ -158,6 +172,7 @@ int v4l2_async_notifier_register(struct v4l2_device *v4l2_dev,
|
|||
case V4L2_ASYNC_MATCH_DEVNAME:
|
||||
case V4L2_ASYNC_MATCH_I2C:
|
||||
case V4L2_ASYNC_MATCH_OF:
|
||||
case V4L2_ASYNC_MATCH_FWNODE:
|
||||
break;
|
||||
default:
|
||||
dev_err(notifier->v4l2_dev ? notifier->v4l2_dev->dev : NULL,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue