From patchwork Mon Jul 22 18:04:45 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sylwester Nawrocki X-Patchwork-Id: 19354 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from ) id 1V1KUZ-0006GI-0c; Mon, 22 Jul 2013 20:05:51 +0200 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.72/mailfrontend-5) with esmtp id 1V1KUW-0006Os-7l; Mon, 22 Jul 2013 20:05:50 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932722Ab3GVSFp (ORCPT + 1 other); Mon, 22 Jul 2013 14:05:45 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:18466 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932673Ab3GVSFn (ORCPT ); Mon, 22 Jul 2013 14:05:43 -0400 Received: from epcpsbgm1.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MQC00L7WNL6IAO0@mailout4.samsung.com> for linux-media@vger.kernel.org; Tue, 23 Jul 2013 03:05:34 +0900 (KST) X-AuditID: cbfee61a-b7f196d000007dfa-26-51ed746de213 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 1A.37.32250.D647DE15; Tue, 23 Jul 2013 03:05:34 +0900 (KST) Received: from amdc1344.digital.local ([106.116.147.32]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MQC00AGGNK2Y9A0@mmp1.samsung.com>; Tue, 23 Jul 2013 03:05:33 +0900 (KST) From: Sylwester Nawrocki To: linux-media@vger.kernel.org Cc: g.liakhovetski@gmx.de, prabhakar.csengg@gmail.com, laurent.pinchart@ideasonboard.com, hverkuil@xs4all.nl, kyungmin.park@samsung.com, Sylwester Nawrocki Subject: [PATCH RFC 3/5] V4L2: Add V4L2_ASYNC_MATCH_OF subdev matching type Date: Mon, 22 Jul 2013 20:04:45 +0200 Message-id: <1374516287-7638-4-git-send-email-s.nawrocki@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1374516287-7638-1-git-send-email-s.nawrocki@samsung.com> References: <1374516287-7638-1-git-send-email-s.nawrocki@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprBLMWRmVeSWpSXmKPExsVy+t9jAd28kreBBnd3MFu83ziPyeLU5GdM Fmeb3rBbdE5cwm7Rs2Erq8XL+yuYLQ6/aWd1YPfYOesuu8eHj3Eesztmsnr0bVnF6PF5k5zH qa+f2QPYorhsUlJzMstSi/TtErgyvv3ZxlpwRqhiTe9RxgbGZfxdjJwcEgImEmunTmWBsMUk Ltxbz9bFyMUhJLCIUeLm09vsEE4Hk8SMa32MIFVsAoYSvUchbBEBeYknvTfAOpgFdjBKtMz/ C5YQFvCW+DLlKxOIzSKgKrF7yjIwm1fAVeJpdzeQzQG0TkFiziQbkDCngJvExZvtYFcIAZVM n/CFZQIj7wJGhlWMoqkFyQXFSem5hnrFibnFpXnpesn5uZsYweH1TGoH48oGi0OMAhyMSjy8 Ht5vA4VYE8uKK3MPMUpwMCuJ8G7UAwrxpiRWVqUW5ccXleakFh9ilOZgURLnPdBqHSgkkJ5Y kpqdmlqQWgSTZeLglGpgXPkl0oR3o8DW6kMK/Ecrk9+tFGy0W198ZsHp7we0D6Q2cjIfXHj5 SG308yV5nTc4Z60rSVytue3q7PXZyWXV3yb3HXfo0LqcIjA3QnxGiffx1iP/Etn9loVpbFnR uHn/hZesz8snf+59MEd+lcK675w5Yb2pL5m8H99tDAr+/vCbl1Cu3DpmUyWW4oxEQy3mouJE ALq3WCErAgAA Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 6.0.0.2142326, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2013.7.22.173915 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' MULTIPLE_RCPTS 0.1, HTML_00_01 0.05, HTML_00_10 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_2000_2999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __IN_REP_TO 0, __MIME_TEXT_ONLY 0, __MULTIPLE_RCPTS_CC_X2 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_WWW 0, __URI_NS , __URI_NS_NXDOMAIN ' 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 Signed-off-by: Kyungmin Park --- drivers/media/v4l2-core/v4l2-async.c | 9 +++++++++ include/media/v4l2-async.h | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/drivers/media/v4l2-core/v4l2-async.c b/drivers/media/v4l2-core/v4l2-async.c index 86934ca..9f91013 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) return !strcmp(asd->match.device_name.name, dev_name(dev)); } +static bool match_of(struct device *dev, struct v4l2_async_subdev *asd) +{ + return dev->of_node == asd->match.of.node; +} + static LIST_HEAD(subdev_list); static LIST_HEAD(notifier_list); static DEFINE_MUTEX(list_lock); @@ -66,6 +71,9 @@ static struct v4l2_async_subdev *v4l2_async_belongs(struct v4l2_async_notifier * case V4L2_ASYNC_MATCH_I2C: match = match_i2c; break; + case V4L2_ASYNC_MATCH_OF: + match = match_of; + break; default: /* Cannot happen, unless someone breaks us */ WARN_ON(true); @@ -145,6 +153,7 @@ int v4l2_async_notifier_register(struct v4l2_device *v4l2_dev, case V4L2_ASYNC_MATCH_CUSTOM: case V4L2_ASYNC_MATCH_DEVNAME: case V4L2_ASYNC_MATCH_I2C: + case V4L2_ASYNC_MATCH_OF: break; default: dev_err(notifier->v4l2_dev ? notifier->v4l2_dev->dev : NULL, diff --git a/include/media/v4l2-async.h b/include/media/v4l2-async.h index 33e3b2a..295782e 100644 --- a/include/media/v4l2-async.h +++ b/include/media/v4l2-async.h @@ -13,6 +13,7 @@ #include #include +#include struct device; struct v4l2_device; @@ -26,6 +27,7 @@ enum v4l2_async_match_type { V4L2_ASYNC_MATCH_CUSTOM, V4L2_ASYNC_MATCH_DEVNAME, V4L2_ASYNC_MATCH_I2C, + V4L2_ASYNC_MATCH_OF, }; /** @@ -39,6 +41,9 @@ struct v4l2_async_subdev { enum v4l2_async_match_type match_type; union { struct { + const struct device_node *node; + } of; + struct { const char *name; } device_name; struct {