Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1138406imu; Wed, 16 Jan 2019 13:27:03 -0800 (PST) X-Google-Smtp-Source: ALg8bN4NkUNZegeDZZZwZhrhaQkvgD1RaJLulyFiVMcKVtcFkDSk1YdsTa1BpTUN4y+8cP1P64SD X-Received: by 2002:a17:902:227:: with SMTP id 36mr12040178plc.140.1547674023029; Wed, 16 Jan 2019 13:27:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547674023; cv=none; d=google.com; s=arc-20160816; b=YEidVz9XvEd9ukQURNk3oWJIwKgTrJAL1JDIvUXTYWvVGwNGIjBsriziAktbYe/Sww HtR0wwe+UEf/aiOLSvGXLLno8GVNSiPR/UYpa6UvGYLyJYFFH7Hwma+KXwqyeGkCMZYO h5u5vhvSlucZm0iqwcCEacV64QU2omEQfgvCjx9ysniUvxgT69avuobYFgOsE2shayxE 79jcCBjNAku4wt+Tu3PNlXU9pqWY/cXIFtfjkaPncFhT/cB8EGIhKNUEryWsdUtgko+E /u2UTczZSFYkGdRvhoa7zZq+yUebYMQ/yehm6GRfFTwWyj8TPJxXN0z+K2G8V7ULwdOb j3Uw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=/i0vJjxxFV8StBIfDprGl3FSOkt0FfdBmItn5HFo9R0=; b=w5AgF+oQ7J9TjS5Hmzju7fP6j9rmhLWZPxsf/lHBcxdMXJCt6o0GFiUDMV7wudcjiN eMumg1Exp2gw+X1ewuR2i7wnmbvq+3zrgeT2YD/ElsMe4/YSK0lQ6IncvTCLgimfSZbS WI6IqC+glk1Iq6/v+oMVVkA4/R+zpMk2ZJ6PMpM1sQubtyomwSt0OxZ/GshLlmkoY/XV aPqFkOgBkoxUB3rVfsqX4SQeYNOXCqqetw0v8LVmnHUvJS8FQWi/GZMOGLnal9j29kPe 07m8nxmrEUUb5OJVmCcPWncfBRH1b0eXIFOAJua3uSLE6Hw641uJY6D2VrBdwhdCIyki Ms/A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 11si6653389pgd.228.2019.01.16.13.26.47; Wed, 16 Jan 2019 13:27:03 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389306AbfAPKLx (ORCPT + 99 others); Wed, 16 Jan 2019 05:11:53 -0500 Received: from mail.bootlin.com ([62.4.15.54]:52885 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731743AbfAPKLx (ORCPT ); Wed, 16 Jan 2019 05:11:53 -0500 Received: by mail.bootlin.com (Postfix, from userid 110) id E27EB2074E; Wed, 16 Jan 2019 11:11:50 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.2 Received: from localhost.localdomain (aaubervilliers-681-1-37-87.w90-88.abo.wanadoo.fr [90.88.156.87]) by mail.bootlin.com (Postfix) with ESMTPSA id A4BDB206A6; Wed, 16 Jan 2019 11:11:40 +0100 (CET) From: Paul Kocialkowski To: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Peter Chen , Greg Kroah-Hartman , Thomas Petazzoni , Paul Kocialkowski Subject: [PATCH] usb: chipidea: Grab the (legacy) USB PHY by phandle first Date: Wed, 16 Jan 2019 11:10:51 +0100 Message-Id: <20190116101051.21202-1-paul.kocialkowski@bootlin.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org According to the chipidea driver bindings, the USB PHY is specified via the "phys" phandle node. However, this only takes effect for USB PHYs that use the common PHY framework. For legacy USB PHYs, a simple lookup based on the USB PHY type is done instead. This does not play out well when more than USB PHY is registered, since the first registered PHY matching the type will always be returned regardless of what the driver was bound to. Fix this by looking up the PHY based on the "phys" phandle node. Although generic PHYS and rather matched by their "phys-name" and not the "phys" phandle directly, there is no helper for similar lookup on legacy PHYs and it's probably not worth the effort to add it. When no legacy USB PHY is found by phandle, fallback to grabbing any registered USB2 PHY. This ensures backward compatibility if some users were actually relying on this mechanism. Signed-off-by: Paul Kocialkowski --- drivers/usb/chipidea/core.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c index 7bfcbb23c2a4..11d3ee1e3fe5 100644 --- a/drivers/usb/chipidea/core.c +++ b/drivers/usb/chipidea/core.c @@ -954,8 +954,14 @@ static int ci_hdrc_probe(struct platform_device *pdev) } else if (ci->platdata->usb_phy) { ci->usb_phy = ci->platdata->usb_phy; } else { + ci->usb_phy = devm_usb_get_phy_by_phandle(dev->parent, "phys", + 0); ci->phy = devm_phy_get(dev->parent, "usb-phy"); - ci->usb_phy = devm_usb_get_phy(dev->parent, USB_PHY_TYPE_USB2); + + /* Fallback to grabbing any registered USB2 PHY */ + if (IS_ERR(ci->phy) && IS_ERR(ci->usb_phy)) + ci->usb_phy = devm_usb_get_phy(dev->parent, + USB_PHY_TYPE_USB2); /* if both generic PHY and USB PHY layers aren't enabled */ if (PTR_ERR(ci->phy) == -ENOSYS && -- 2.20.1