From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761204AbdJRG7T (ORCPT ); Wed, 18 Oct 2017 02:59:19 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:18826 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752222AbdJRG7Q (ORCPT ); Wed, 18 Oct 2017 02:59:16 -0400 X-AuditID: b6c32a38-d71ff70000001124-72-59e6fbc1e7f7 MIME-version: 1.0 Content-transfer-encoding: 8BIT Content-type: text/plain; charset="UTF-8" Message-id: <59E6FBC2.6080102@samsung.com> Date: Wed, 18 Oct 2017 15:59:14 +0900 From: Chanwoo Choi Organization: Samsung Electronics User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 To: Andrzej Hajda , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" Cc: Bartlomiej Zolnierkiewicz , Marek Szyprowski , dri-devel@lists.freedesktop.org, Inki Dae , Rob Herring , Mark Rutland , Krzysztof Kozlowski , Archit Taneja , Laurent Pinchart , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-usb@vger.kernel.org Subject: Re: [RFC PATCH 3/4] extcon: add possibility to get extcon device by of node In-reply-to: <20170928130730.8747-4-a.hajda@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrCJsWRmVeSWpSXmKPExsWy7bCmvu7B388iDe4vFbO4te4cq0VTx1tW i40z1rNazD8C5F75+p7NYtL9CSwW589vYLfonLiE3WLT42usFpd3zWGzmHF+H5PFomWtzBZr j9xlt1h6/SKTReveI+wO/B5r5q1h9Ljc18vkMbtjJqvHplWdbB73u48zeWxeUu/Rt2UVo8fn TXIBHFGpNhmpiSmpRQqpecn5KZl56bZK3sHxzvGmZgaGuoaWFuZKCnmJuam2Si4+AbpumTlA xysplCXmlAKFAhKLi5X07WyK8ktLUhUy8otLbJWiDQ2N9AwNzPWMjIz0TIxjrYxMgUoSUjOu 7d3OXjBZruLprAb2BsaTEl2MnBwSAiYSO3puM3cxcnEICexglFi96A0rhPOdUeLv7POMMFWH pkyEqtrNKPHkdw9YgldAUOLH5HssXYwcHMwC8hJHLmWDhJkFNCW27l7PDlF/j1Hiw4F9rBD1 WhL/Jq9kBrFZBFQlNv/bDTaHDSi+/8UNNhCbX0BR4uqPx2BxUYEIiZ3zv4ENEhFoYZTY0byM BcRhFmhmkdj0dAETSJWwQJhE//MVYDangIXE9scbGUGKJATmsUvM+7qICeIHF4kZ3cdZIGxh iVfHt7CDnC0hIC1x6agtRH07o8TmOfdYIJwORon7KxtZIRqMJU51NTJBPMcn8e5rDytEM69E R5sQRImHxM9ta6DmO0qs2tQCDcidjBLfdnewTGCUm4UUZLMQQTYLKcgWMDKvYhRLLSjOTU8t Niww0StOzC0uzUvXS87P3cQITrFaFjsY95zzOcQowMGoxMP7Q/FZpBBrYllxZe4hRgkOZiUR XuaPQCHelMTKqtSi/Pii0pzU4kOMpsAQn8gsJZqcD0z/eSXxhiaWBiZmRsAUZmloqCTOK7r+ WoSQQHpiSWp2ampBahFMHxMHp1QDY6vpnZ1ZE5peCfeYhFxwNL+Upx/fJ5t0Lq3cfd2SqJ/l +269NFXfNOPCtvf1ghe2P3D8/mD9qwtcU5kYA56IuUxJvfZhYskJOT+OEg79cB+Gp7pN3kz5 722yWY+E75jfXjJvcXOC3Pbo5Q/m3lV5IrIz7/6Pd086ZoXFbWYsP9fZEPUoZMf300osxRmJ hlrMRcWJAMXoMSjHAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprGIsWRmVeSWpSXmKPExsVy+t9jAd0Dv59FGsy+YGlxa905Voumjres FhtnrGe1mH8EyL3y9T2bxaT7E1gszp/fwG7ROXEJu8Wmx9dYLS7vmsNmMeP8PiaLRctamS3W HrnLbrH0+kUmi9a9R9gd+D3WzFvD6HG5r5fJY3bHTFaPTas62Tzudx9n8ti8pN6jb8sqRo/P m+QCOKK4bFJSczLLUov07RK4Mq7t3c5eMFmu4umsBvYGxpMSXYycHBICJhKHpkxk7mLk4hAS 2MkoMf/xDkaQBK+AoMSPyfdYuhg5OJgF5CWOXMoGCTMLqEtMmrcIqv4Bo8TuprOsEPVaEv8m r2QGsVkEVCU2/9sNNocNKL7/xQ02EJtfQFHi6o/HjCAzRQUiJLpPVILMERFoY5TYPmMXI4jD LNDMItE56x4TSIOwQJjEm94nTHDXTdxwhgUkwSlgIbH98UbGCYwCs5AcOwvh2FlIjl3AyLyK UTK1oDg3PbfYqMAwL7Vcrzgxt7g0L10vOT93EyMwtrYd1urbwXh/SfwhRgEORiUe3h+KzyKF WBPLiitzDzFKcDArifAyfwQK8aYkVlalFuXHF5XmpBYfYpTmYFES572ddyxSSCA9sSQ1OzW1 ILUIJsvEwSnVwJhXq/FVXbzm8pdZkfLeqY7Hwqf3soi/6bfTPfbx83T9PE3tok+nPZmWTNPJ 53PlNHqY6p8UpuV1eIdM1NeA/+Lzjps3xOR8zNxZ2ZS610djObOmlrC/3qOYCKEtfPHpE9ye iHTaadWfaG3u+8XjJ97ds/bC2vqGxdX6J0+uaL45e0bpx/uOSizFGYmGWsxFxYkAGDhg4akC AAA= X-CMS-MailID: 20171018065913epcas1p48f24b0d7d50faecc855713af86631d5f X-Msg-Generator: CA X-Sender-IP: 182.195.42.142 X-Local-Sender: =?UTF-8?B?7LWc7LCs7JqwG1RpemVuIFBsYXRmb3JtIExhYihTL1fshLw=?= =?UTF-8?B?7YSwKRvsgrzshLHsoITsnpAbU2VuaW9yIEVuZ2luZWVy?= X-Global-Sender: =?UTF-8?B?Q2hhbndvbyBDaG9pG1RpemVuIFBsYXRmb3JtIExhYi4bU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtTZW5pb3IgRW5naW5lZXI=?= X-Sender-Code: =?UTF-8?B?QzEwG1RFTEUbQzEwVjgxMTE=?= CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20170928130736eucas1p250bb9d854204ea142a2160cd9ab56194 X-RootMTR: 20170928130736eucas1p250bb9d854204ea142a2160cd9ab56194 References: <20170928130730.8747-1-a.hajda@samsung.com> <20170928130730.8747-4-a.hajda@samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 2017년 09월 28일 22:07, Andrzej Hajda wrote: > Since extcon property is not allowed in DT, extcon subsystem requires > another way to get extcon device. Lets try the simplest approach - get > edev by of_node. > > Signed-off-by: Andrzej Hajda > --- > drivers/extcon/extcon.c | 44 ++++++++++++++++++++++++++++++++++---------- > include/linux/extcon.h | 6 ++++++ > 2 files changed, 40 insertions(+), 10 deletions(-) Looks good to me. Just I added the minor comment. Acked-by: Chanwoo Choi > > diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c > index cb38c2747684..fdb8c1d767c1 100644 > --- a/drivers/extcon/extcon.c > +++ b/drivers/extcon/extcon.c > @@ -1336,6 +1336,28 @@ void extcon_dev_unregister(struct extcon_dev *edev) > EXPORT_SYMBOL_GPL(extcon_dev_unregister); > > #ifdef CONFIG_OF > + > +/* > + * extcon_get_edev_by_of_node - Get the extcon device from devicetree. > + * @node : OF node identyfying edev > + * > + * Return the pointer of extcon device if success or ERR_PTR(err) if fail. > + */ > +struct extcon_dev *extcon_get_edev_by_of_node(struct device_node *node) > +{ > + struct extcon_dev *edev; > + > + mutex_lock(&extcon_dev_list_lock); > + list_for_each_entry(edev, &extcon_dev_list, entry) > + if (edev->dev.parent && edev->dev.parent->of_node == node) > + goto end; > + edev = ERR_PTR(-EPROBE_DEFER); > +end: The extcon.c already use the 'out' statement for goto. I'd like you to use 'out' instead of 'end'. > + mutex_unlock(&extcon_dev_list_lock); > + > + return edev; > +} > + > /* > * extcon_get_edev_by_phandle - Get the extcon device from devicetree. > * @dev : the instance to the given device > @@ -1363,25 +1385,27 @@ struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, int index) > return ERR_PTR(-ENODEV); > } > > - mutex_lock(&extcon_dev_list_lock); > - list_for_each_entry(edev, &extcon_dev_list, entry) { > - if (edev->dev.parent && edev->dev.parent->of_node == node) { > - mutex_unlock(&extcon_dev_list_lock); > - of_node_put(node); > - return edev; > - } > - } > - mutex_unlock(&extcon_dev_list_lock); > + edev = extcon_get_edev_by_of_node(node); > of_node_put(node); > > - return ERR_PTR(-EPROBE_DEFER); > + return edev; > } > + > #else > + > +struct extcon_dev *extcon_get_edev_by_of_node(struct device_node *node) > +{ > + return ERR_PTR(-ENOSYS); > +} > + > struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, int index) > { > return ERR_PTR(-ENOSYS); > } > + > #endif /* CONFIG_OF */ > + > +EXPORT_SYMBOL_GPL(extcon_get_edev_by_of_node); > EXPORT_SYMBOL_GPL(extcon_get_edev_by_phandle); > > /** > diff --git a/include/linux/extcon.h b/include/linux/extcon.h > index 744d60ca80c3..2f88e7491672 100644 > --- a/include/linux/extcon.h > +++ b/include/linux/extcon.h > @@ -261,6 +261,7 @@ extern void devm_extcon_unregister_notifier_all(struct device *dev, > * Following APIs get the extcon_dev from devicetree or by through extcon name. > */ > extern struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name); > +extern struct extcon_dev *extcon_get_edev_by_of_node(struct device_node *node); > extern struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, > int index); > > @@ -382,6 +383,11 @@ static inline struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name) > return ERR_PTR(-ENODEV); > } > > +static inline struct extcon_dev *extcon_get_edev_by_of_node(struct device_node *node) > +{ > + return ERR_PTR(-ENODEV); > +} > + > static inline struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, > int index) > { > -- Best Regards, Chanwoo Choi Samsung Electronics