From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-1029251-1517414343-2-17953921046372573229 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no ("Email failed DMARC policy for domain") X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.001, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='US', FromHeader='com', MailFrom='org' X-Spam-charsets: X-IgnoreVacation: yes ("Email failed DMARC policy for domain") X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: linux-usb-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1517414342; b=LLKyVl6J9LcE6W3YcEd1DOrVoqZoHcqV+f56ZZgjymK15A2 QK0I8KrYqxCqg9EyJvusvpDFHS72yOesY4CYYhOL1YOkggZIsBhD3Q+4ufYrtcyW +hzpo3AiU8L9qtRcShjSlLfjFawnfDLWLqQqL+BRERt63ve3S7Lh3qbtLrfxUOkx 3p/ifUdWJSQWiKy28haXG2ein1erzwHQbf6aN9appboY1RqPkDknUDOieMvhd2ky MRF++4GXObfpfxua0bwIXkPwWppT3Rl/B50PNq3MXUcPhto3g1oByqh69m4+YH+P GTbiwEbOlSqrt3bziYnxFqYkO0R7/oRjXA4OWSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :in-reply-to:references:sender:list-id; s=arctest; t=1517414342; bh=ZfPa6bzoDSJECu3ItFTXWBRlxmQXZithv8nx3Nwu8ik=; b=rOQ3bduSJ3lq tmQcrowLPxwIf4WceD8ZwZPBkPh6RfZ9XwYuHMRDsO+oCE8ZyvDiQ8t+vGphI5j7 emRKwy9U1mSqOrh8EKBgMDsH/7mxP3uIoA3ouGKRBisbJV01IEHRNGxWz/yRPBss ZRvF/l17BPJGisI60WF6LOrHnvZiEaWfdbIdFuBh7yVO8PcKyEqcal+vAMskUBvj Mlurk5AyBc2KDIZJely8vS7KrmVWMjSNb3/ZuBH/PU/6rCR6ERZr8ENliGAcdp7+ P/FY2/SiCn+eoCF1SE05dP2cNN9Oc7IirksWfPGLJsZz1sZXgV9KaCjWWuudc8IJ iEK0MJBkgA== ARC-Authentication-Results: i=1; mx3.messagingengine.com; arc=none (no signatures found); dkim=fail (body has been altered; 1024-bit rsa key sha256) header.d=samsung.com header.i=@samsung.com header.b=GTvVWKfC x-bits=1024 x-keytype=rsa x-algorithm=sha256 x-selector=mail20170921; dmarc=fail (p=none,has-list-id=yes,d=none) header.from=samsung.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=samsung.com header.result=pass header_is_org_domain=yes Authentication-Results: mx3.messagingengine.com; arc=none (no signatures found); dkim=fail (body has been altered; 1024-bit rsa key sha256) header.d=samsung.com header.i=@samsung.com header.b=GTvVWKfC x-bits=1024 x-keytype=rsa x-algorithm=sha256 x-selector=mail20170921; dmarc=fail (p=none,has-list-id=yes,d=none) header.from=samsung.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=samsung.com header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753493AbeAaP5o (ORCPT ); Wed, 31 Jan 2018 10:57:44 -0500 Received: from mailout2.w1.samsung.com ([210.118.77.12]:41197 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752265AbeAaP5i (ORCPT ); Wed, 31 Jan 2018 10:57:38 -0500 DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180131155735euoutp02736f126991becd175918e4545d890111~O8DnmDrY81003310033euoutp02K X-AuditID: cbfec7f1-f793a6d00000326b-a9-5a71e76e2802 From: Andrzej Hajda To: linux-usb@vger.kernel.org (open list:DESIGNWARE USB3 DRD IP DRIVER) Cc: Andrzej Hajda , Bartlomiej Zolnierkiewicz , Marek Szyprowski , devicetree@vger.kernel.org (open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS), Felipe Balbi , Greg Kroah-Hartman , Inki Dae , Rob Herring , Mark Rutland , Krzysztof Kozlowski , Chanwoo Choi , Laurent Pinchart , linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org Subject: [PATCH 1/2] USB: dwc3: get extcon device by OF graph bindings Date: Wed, 31 Jan 2018 16:57:17 +0100 Message-id: <20180131155718.5237-2-a.hajda@samsung.com> X-Mailer: git-send-email 2.15.1 In-reply-to: <20180131155718.5237-1-a.hajda@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrFIsWRmVeSWpSXmKPExsWy7djPc7p5zwujDFa9NrS4te4cq8XGGetZ LY61PWG3uP7lOavF/CNAsebF69ksJt2fwGJx/vwGdovOiUvYLS7vmsNmMeP8PiaLRctamS3W HrnLbrH0+kUmi9a9R9gd+D3WzFvD6DG7Yyarx6ZVnWwe++euYffo27KK0ePzJrkAtigum5TU nMyy1CJ9uwSujB8nL7AXvBSv+HpvAnsD4x7hLkYODgkBE4nG13xdjJxAppjEhXvr2boYuTiE BJYySuw8cZgJwvnMKNG84A8jRJWJxKyX86ESyxgltu+4zQrh/GeUuH3rOxNIFZuApsTfzTfZ QGwRAXeJZcuvgRUxC3xkkWjp+giWEBZwk+h8dIgV5A4WAVWJc3fNQcK8AuYSk/fMZIbYJi8x YUsTC4jNKWAhsbKnHew+CYHLbBKTv/9jgvjBReJRTxJEvbDEq+Nb2CFsGYnOjoNMEPXdjBKf +k+wQzhTGCX+fZgBtcFa4vDxi6wgNrMAn8SkbdOZIYbySnS0CUGYHhJ3d1dAVDtK/J++lR3i YaCZbduOsU5glF7AyLCKUSS1tDg3PbXYSK84Mbe4NC9dLzk/dxMjMAWc/nf84w7G9yesDjEK cDAq8fC+uFQYJcSaWFZcmXuIUYKDWUmEd89FoBBvSmJlVWpRfnxRaU5q8SFGaQ4WJXFe26i2 SCGB9MSS1OzU1ILUIpgsEwenVAOj/XPp1FMbl11kTmYo3hBlaLNuXkdoSdG5st/a3/QannFE B1j4Z6/JSLnlt8rB6VzTO6+8wszAXX/s2DX27I3uednhvohrzY84mTMrFcxeikvtvWB1ZKrV sy+nlDsurY+yDVORSJfbwcx5amLiZNX0MF0vtwPnZtXz8dqays25fOU5+5Ut2q+VWIozEg21 mIuKEwF0acRX/QIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrALMWRmVeSWpSXmKPExsVy+t/xa7p5zwujDLbtFrG4te4cq8XGGetZ LY61PWG3uP7lOavF/CNAsebF69ksJt2fwGJx/vwGdovOiUvYLS7vmsNmMeP8PiaLRctamS3W HrnLbrH0+kUmi9a9R9gd+D3WzFvD6DG7Yyarx6ZVnWwe++euYffo27KK0ePzJrkAtigum5TU nMyy1CJ9uwSujB8nL7AXvBSv+HpvAnsD4x7hLkZODgkBE4lZL+czQdhiEhfurWfrYuTiEBJY wiixeNMcVginkUni2ol2VpAqNgFNib+bb7KB2CIC7hLLll8DK2IW+MoiMen7S3aQhLCAm0Tn o0NACQ4OFgFViXN3zUHCvALmEpP3zGSG2CYvMWFLEwuIzSlgIbGypx1sphBQzZ7NV5kmMPIu YGRYxSiSWlqcm55bbKhXnJhbXJqXrpecn7uJERiu24793LyD8dLG4EOMAhyMSjy8Ly4VRgmx JpYVV+YeYpTgYFYS4d1zESjEm5JYWZValB9fVJqTWnyIUZqDRUmct3fP6kghgfTEktTs1NSC 1CKYLBMHp1QDY1tbw7kHpduXfApjuittJrLDOU71hqQa233jP1uaQ7T9r9hKtnz/InU//PzS J5xdf3Zeic2Rn1Y0vXf+qnCXJLse5h9Od3wDCk4cP27UUDa7XDn2TFW17PprDvv+rO0OM9if c+scs0yM/PLP274LqH+YLll0auaOhMY/+bW9UvlCn5x0vKM3K7EUZyQaajEXFScCAFCobP9T AgAA X-CMS-MailID: 20180131155734eucas1p2b55ad1aab1d5086566dad7a79b25ccf3 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180131155734eucas1p2b55ad1aab1d5086566dad7a79b25ccf3 X-RootMTR: 20180131155734eucas1p2b55ad1aab1d5086566dad7a79b25ccf3 References: <20180131155718.5237-1-a.hajda@samsung.com> Sender: linux-usb-owner@vger.kernel.org X-Mailing-List: linux-usb@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: extcon device is used to detect host/device connection. Since extcon OF property is deprecated, alternative method should be added. This method uses OF graph bindings to locate extcon. Signed-off-by: Andrzej Hajda --- Hi all, This patch implements alternative method to get extcon from DWC3. The code works but is hacky, as DWC3 must traverse different DT nodes to get extcon, in case of TM2 it is USB-PHY and MUIC, but other platforms can have different paths. I would be glad if it can be merged as is for now, but additional work must be done to make it generic. I guess on DT binding side it is OK. So the problem should be addressed in the code. My rough idea is to implement kind of extcon aliases/forwarder mechanism, ie. USB-PHY will expect on its output remote port extcon, and it should register extcon-forwarder pointing to this extcon. This way DWC3 can look for the extcon on its PHY phandle, and it will receive via forwarding mechanism extcon exposed by MUIC. As I said this is rough idea for discussion, other propositions are welcome. Regards Andrzej --- drivers/usb/dwc3/drd.c | 41 ++++++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/drivers/usb/dwc3/drd.c b/drivers/usb/dwc3/drd.c index cc8ab9a8e9d2..eee2eca3d513 100644 --- a/drivers/usb/dwc3/drd.c +++ b/drivers/usb/dwc3/drd.c @@ -8,6 +8,7 @@ */ #include +#include #include "debug.h" #include "core.h" @@ -38,24 +39,38 @@ static int dwc3_drd_notifier(struct notifier_block *nb, return NOTIFY_DONE; } +struct extcon_dev *dwc3_get_extcon(struct dwc3 *dwc) +{ + struct device *dev = dwc->dev; + struct device_node *np_phy, *np_conn; + struct extcon_dev *edev; + + if (of_property_read_bool(dev->of_node, "extcon")) + return extcon_get_edev_by_phandle(dwc->dev, 0); + + np_phy = of_parse_phandle(dev->of_node, "phys", 0); + np_conn = of_graph_get_remote_node(np_phy, -1, -1); + edev = extcon_get_edev_by_of_node(np_conn); + of_node_put(np_conn); + of_node_put(np_phy); + + return edev; +} + int dwc3_drd_init(struct dwc3 *dwc) { int ret; - if (dwc->dev->of_node) { - if (of_property_read_bool(dwc->dev->of_node, "extcon")) - dwc->edev = extcon_get_edev_by_phandle(dwc->dev, 0); - - if (IS_ERR(dwc->edev)) - return PTR_ERR(dwc->edev); + dwc->edev = dwc3_get_extcon(dwc); + if (IS_ERR(dwc->edev)) + return PTR_ERR(dwc->edev); - dwc->edev_nb.notifier_call = dwc3_drd_notifier; - ret = extcon_register_notifier(dwc->edev, EXTCON_USB_HOST, - &dwc->edev_nb); - if (ret < 0) { - dev_err(dwc->dev, "couldn't register cable notifier\n"); - return ret; - } + dwc->edev_nb.notifier_call = dwc3_drd_notifier; + ret = extcon_register_notifier(dwc->edev, EXTCON_USB_HOST, + &dwc->edev_nb); + if (ret < 0) { + dev_err(dwc->dev, "couldn't register cable notifier\n"); + return ret; } dwc3_drd_update(dwc); -- 2.15.1