From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: linux-media@vger.kernel.org, linux-acpi@vger.kernel.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH v2 3/8] v4l: async: Add fwnode match support
Date: Fri, 07 Apr 2017 12:49:02 +0300 [thread overview]
Message-ID: <3722368.bfpMvP62Mi@avalon> (raw)
In-Reply-To: <1491484330-12040-4-git-send-email-sakari.ailus@linux.intel.com>
Hi Sakari,
Thank you for the patch.
On Thursday 06 Apr 2017 16:12:05 Sakari Ailus wrote:
> Add fwnode matching to complement OF node matching. And fwnode may also be
> an OF node.
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
> drivers/media/v4l2-core/v4l2-async.c | 12 ++++++++++++
> include/media/v4l2-async.h | 5 +++++
> include/media/v4l2-subdev.h | 3 +++
> 3 files changed, 20 insertions(+)
>
> diff --git a/drivers/media/v4l2-core/v4l2-async.c
> b/drivers/media/v4l2-core/v4l2-async.c index 96cc733..384ad5e 100644
> --- a/drivers/media/v4l2-core/v4l2-async.c
> +++ b/drivers/media/v4l2-core/v4l2-async.c
> @@ -46,6 +46,11 @@ 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)
> +{
> + return sd->fwnode == asd->match.fwnode.fwn;
> +}
> +
> static bool match_custom(struct v4l2_subdev *sd, struct v4l2_async_subdev
> *asd) {
> if (!asd->match.custom.match)
> @@ -80,6 +85,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 +166,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,
> @@ -282,6 +291,9 @@ int v4l2_async_register_subdev(struct v4l2_subdev *sd)
> */
> if (!sd->of_node && sd->dev)
> sd->of_node = sd->dev->of_node;
> + if (!sd->fwnode && sd->dev)
> + sd->fwnode = sd->dev->of_node ?
> + &sd->dev->of_node->fwnode : sd->dev->fwnode;
>
> mutex_lock(&list_lock);
>
> diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h
> index 8e2a236..8f552d2 100644
> --- a/include/media/v4l2-async.h
> +++ b/include/media/v4l2-async.h
> @@ -32,6 +32,7 @@ struct v4l2_async_notifier;
> * @V4L2_ASYNC_MATCH_DEVNAME: Match will use the device name
> * @V4L2_ASYNC_MATCH_I2C: Match will check for I2C adapter ID and address
> * @V4L2_ASYNC_MATCH_OF: Match will use OF node
> + * @V4L2_ASYNC_MATCH_FWNODE: Match will use firmware node
> *
> * This enum is used by the asyncrhronous sub-device logic to define the
> * algorithm that will be used to match an asynchronous device.
> @@ -41,6 +42,7 @@ enum v4l2_async_match_type {
> V4L2_ASYNC_MATCH_DEVNAME,
> V4L2_ASYNC_MATCH_I2C,
> V4L2_ASYNC_MATCH_OF,
> + V4L2_ASYNC_MATCH_FWNODE,
> };
>
> /**
> @@ -58,6 +60,9 @@ struct v4l2_async_subdev {
> const struct device_node *node;
> } of;
> struct {
> + struct fwnode_handle *fwn;
I'd name this "node". The rationale is that code should be as independent as
possible of whether we use device_node or fwnode_handle. Naming both variable
"node" helps in that regard, and is in my opinion easier to read. This applies
to the other patches in the series too.
Apart from that,
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> + } fwnode;
> + struct {
> const char *name;
> } device_name;
> struct {
> diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
> index 0ab1c5d..5f1669c 100644
> --- a/include/media/v4l2-subdev.h
> +++ b/include/media/v4l2-subdev.h
> @@ -788,6 +788,8 @@ struct v4l2_subdev_platform_data {
> * @devnode: subdev device node
> * @dev: pointer to the physical device, if any
> * @of_node: The device_node of the subdev, usually the same as
> dev->of_node. + * @fwnode: The fwnode_handle of the subdev, usually the
> same as
> + * either dev->of_node->fwnode or dev->fwnode (whichever is non-
NULL).
> * @async_list: Links this subdev to a global subdev_list or
> @notifier->done * list.
> * @asd: Pointer to respective &struct v4l2_async_subdev.
> @@ -819,6 +821,7 @@ struct v4l2_subdev {
> struct video_device *devnode;
> struct device *dev;
> struct device_node *of_node;
> + struct fwnode_handle *fwnode;
> struct list_head async_list;
> struct v4l2_async_subdev *asd;
> struct v4l2_async_notifier *notifier;
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2017-04-07 9:48 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-06 13:12 [PATCH v2 0/9] V4L2 fwnode support Sakari Ailus
2017-04-06 13:12 ` [PATCH v2 1/8] v4l: flash led class: Use fwnode_handle instead of device_node in init Sakari Ailus
2017-04-07 8:49 ` Laurent Pinchart
2017-04-07 10:20 ` Sakari Ailus
2017-04-08 1:59 ` kbuild test robot
2017-04-06 13:12 ` [PATCH v2 2/8] v4l: fwnode: Support generic fwnode for parsing standardised properties Sakari Ailus
2017-04-07 9:44 ` Laurent Pinchart
2017-04-07 10:36 ` Sakari Ailus
2017-04-07 10:54 ` Laurent Pinchart
2017-04-07 13:03 ` Sakari Ailus
2017-04-07 21:30 ` Sakari Ailus
2017-04-06 13:12 ` [PATCH v2 3/8] v4l: async: Add fwnode match support Sakari Ailus
2017-04-07 9:49 ` Laurent Pinchart [this message]
2017-04-07 10:39 ` Sakari Ailus
2017-04-07 10:04 ` Laurent Pinchart
2017-04-07 10:45 ` Sakari Ailus
2017-04-07 10:47 ` Laurent Pinchart
2017-04-07 22:08 ` Sakari Ailus
2017-04-06 13:12 ` [PATCH v2 4/8] v4l: async: Provide interoperability between OF and fwnode matching Sakari Ailus
2017-04-07 10:07 ` Laurent Pinchart
2017-04-07 22:10 ` Sakari Ailus
2017-04-10 11:28 ` Sakari Ailus
2017-04-06 13:12 ` [PATCH v2 5/8] v4l: Switch from V4L2 OF not V4L2 fwnode API Sakari Ailus
2017-04-07 10:32 ` Laurent Pinchart
2017-04-07 10:58 ` Sakari Ailus
2017-04-07 11:09 ` Laurent Pinchart
2017-04-07 22:55 ` Sakari Ailus
2017-04-10 9:21 ` Mika Westerberg
2017-04-10 9:59 ` Sakari Ailus
2017-04-10 10:11 ` Mika Westerberg
2017-04-10 10:17 ` Sakari Ailus
2017-04-06 13:12 ` [PATCH v2 6/8] v4l: media/drv-intf/soc_mediabus.h: include dependent header file Sakari Ailus
2017-04-07 10:01 ` Laurent Pinchart
2017-04-07 22:56 ` Sakari Ailus
2017-04-06 13:12 ` [PATCH v2 7/8] docs-rst: media: Switch documentation to V4L2 fwnode API Sakari Ailus
2017-04-07 9:59 ` Laurent Pinchart
2017-04-07 23:02 ` Sakari Ailus
2017-04-06 13:12 ` [PATCH v2 8/8] v4l: Remove V4L2 OF framework in favour of V4L2 fwnode framework Sakari Ailus
2017-04-07 9:58 ` Laurent Pinchart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3722368.bfpMvP62Mi@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=devicetree@vger.kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=sakari.ailus@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).