All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ivan T. Ivanov" <iivanov@mm-sol.com>
To: balbi@ti.com
Cc: gregkh@linuxfoundation.org, rob.herring@calxeda.com,
	pawel.moll@arm.com, mark.rutland@arm.com, swarren@wwwdotorg.org,
	ijc+devicetree@hellion.org.uk, davidb@codeaurora.org,
	linux-usb@vger.kernel.org, linux-arm-msm@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	"Ivan T. Ivanov" <iivanov@mm-sol.com>,
	devicetree@vger.kernel.org
Subject: [PATCH v4 11/15] usb: phy: msm: Use reset framework for LINK and PHY resets
Date: Tue, 12 Nov 2013 16:51:46 +0200	[thread overview]
Message-ID: <1384267910-32066-12-git-send-email-iivanov@mm-sol.com> (raw)
In-Reply-To: <1384267910-32066-1-git-send-email-iivanov@mm-sol.com>

From: "Ivan T. Ivanov" <iivanov@mm-sol.com>

Signed-off-by: Ivan T. Ivanov <iivanov@mm-sol.com>
Cc: devicetree@vger.kernel.org
---
 .../devicetree/bindings/usb/msm-hsusb.txt          |    9 ++++++
 drivers/usb/phy/phy-msm-usb.c                      |   30 ++++++++++++++------
 include/linux/usb/msm_hsusb.h                      |    3 ++
 3 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/Documentation/devicetree/bindings/usb/msm-hsusb.txt b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
index f1045e3..3f21204 100644
--- a/Documentation/devicetree/bindings/usb/msm-hsusb.txt
+++ b/Documentation/devicetree/bindings/usb/msm-hsusb.txt
@@ -57,6 +57,12 @@ Required properties:
 - v1p8-supply:	phandle to the regulator for the 1.8V supply
 - v3p3-supply:	phandle to the regulator for the 3.3V supply
 
+- resets:		A list of phandle + reset-specifier pairs for the
+				resets listed in reset-names
+- reset-names:	Should contain the following:
+  "phy"			USB PHY controller reset
+  "link"		USB LINK controller reset
+
 - qcom,otg-control: OTG control (VBUS and ID notifications) can be one of
 				1 - PHY control
 				2 - PMIC control
@@ -83,6 +89,9 @@ Example HSUSB OTG controller device node:
 		v1p8-supply = <&pm8941_l6>;
 		v3p3-supply = <&pm8941_l24>;
 
+		resets = <&gcc GCC_USB2A_PHY_BCR>, <&gcc GCC_USB_HS_BCR>;
+		reset-names = "phy", "link";
+
 		qcom,otg-control = <1>;
 		qcom,phy-init-sequence = <0x01 0x90 0xffffffff>;
 	};
diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c
index cc230c8..53fc645 100644
--- a/drivers/usb/phy/phy-msm-usb.c
+++ b/drivers/usb/phy/phy-msm-usb.c
@@ -32,6 +32,7 @@
 #include <linux/pm_runtime.h>
 #include <linux/of.h>
 #include <linux/of_device.h>
+#include <linux/reset.h>
 
 #include <linux/usb.h>
 #include <linux/usb/otg.h>
@@ -260,12 +261,16 @@ static void ulpi_init(struct msm_otg *motg)
 
 static int msm_otg_link_clk_reset(struct msm_otg *motg, bool assert)
 {
-	int ret = 0;
+	int ret;
 
-	if (!motg->pdata->link_clk_reset)
-		return ret;
+	if (motg->pdata->link_clk_reset)
+		ret = motg->pdata->link_clk_reset(motg->clk, assert);
+	else
+		if (assert)
+			ret = reset_control_assert(motg->link_rst);
+		else
+			ret = reset_control_deassert(motg->link_rst);
 
-	ret = motg->pdata->link_clk_reset(motg->clk, assert);
 	if (ret)
 		dev_err(motg->phy.dev, "usb link clk reset %s failed\n",
 			assert ? "assert" : "deassert");
@@ -275,12 +280,13 @@ static int msm_otg_link_clk_reset(struct msm_otg *motg, bool assert)
 
 static int msm_otg_phy_clk_reset(struct msm_otg *motg)
 {
-	int ret = 0;
+	int ret;
 
-	if (!motg->pdata->phy_clk_reset)
-		return ret;
+	if (motg->pdata->phy_clk_reset)
+		ret = motg->pdata->phy_clk_reset(motg->phy_reset_clk);
+	else
+		ret = reset_control_reset(motg->phy_rst);
 
-	ret = motg->pdata->phy_clk_reset(motg->phy_reset_clk);
 	if (ret)
 		dev_err(motg->phy.dev, "usb phy clk reset failed\n");
 
@@ -1373,6 +1379,14 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
 	id = of_match_device(msm_otg_dt_match, &pdev->dev);
 	pdata->phy_type = (int) id->data;
 
+	motg->link_rst = devm_reset_control_get(&pdev->dev, "link");
+	if (IS_ERR(motg->link_rst))
+		return PTR_ERR(motg->link_rst);
+
+	motg->phy_rst = devm_reset_control_get(&pdev->dev, "phy");
+	if (IS_ERR(motg->phy_rst))
+		return PTR_ERR(motg->phy_rst);
+
 	pdata->mode = of_usb_get_dr_mode(node);
 	if (pdata->mode == USB_DR_MODE_UNKNOWN)
 		pdata->mode = USB_DR_MODE_OTG;
diff --git a/include/linux/usb/msm_hsusb.h b/include/linux/usb/msm_hsusb.h
index 262ed80..9bf8943 100644
--- a/include/linux/usb/msm_hsusb.h
+++ b/include/linux/usb/msm_hsusb.h
@@ -163,6 +163,9 @@ struct msm_otg {
 	struct regulator *v3p3;
 	struct regulator *v1p8;
 	struct regulator *vddcx;
+
+	struct reset_control *phy_rst;
+	struct reset_control *link_rst;
 };
 
 #endif
-- 
1.7.9.5

  parent reply	other threads:[~2013-11-12 14:51 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-12 14:51 [PATCH v4 00/15] usb: phy: msm: Fixes, cleanups and DT support Ivan T. Ivanov
2013-11-12 14:51 ` [PATCH v4 01/15] usb: phy: msm: Move mach dependent code to platform data Ivan T. Ivanov
     [not found]   ` <1384267910-32066-2-git-send-email-iivanov-NEYub+7Iv8PQT0dZR+AlfA@public.gmane.org>
2013-11-12 18:27     ` Christopher Covington
2013-11-12 18:27       ` Christopher Covington
2013-11-12 19:11       ` Ivan T. Ivanov
2013-12-11 10:11     ` Ivan T. Ivanov
2013-12-11 10:11       ` Ivan T. Ivanov
2013-12-27 18:10   ` Felipe Balbi
2013-12-27 18:10     ` Felipe Balbi
2013-12-27 18:23     ` Stephen Boyd
2013-12-27 18:44       ` Felipe Balbi
2013-12-27 18:44         ` Felipe Balbi
2013-11-12 14:51 ` [PATCH v4 02/15] usb: phy: msm: Move global regulators variables to driver state Ivan T. Ivanov
2013-11-12 14:51 ` [PATCH v4 03/15] usb: phy: msm: Migrate to Managed Device Resource allocation Ivan T. Ivanov
2013-11-12 14:51 ` [PATCH v4 04/15] usb: phy: msm: Remove unnecessarily check for valid regulators Ivan T. Ivanov
2013-11-12 14:51 ` [PATCH v4 05/15] usb: phy: msm: Fix checkpatch.pl warnings Ivan T. Ivanov
2013-11-12 14:51 ` [PATCH v4 06/15] usb: phy: msm: Replace custom enum usb_mode_type with enum usb_dr_mode Ivan T. Ivanov
     [not found]   ` <1384267910-32066-7-git-send-email-iivanov-NEYub+7Iv8PQT0dZR+AlfA@public.gmane.org>
2013-12-19 23:03     ` David Brown
2013-12-19 23:03       ` David Brown
2013-11-12 14:51 ` [PATCH v4 07/15] usb: phy: msm: Remove unused pclk_src_name Ivan T. Ivanov
2013-11-12 14:51 ` [PATCH v4 08/15] usb: phy: msm: Remove HSUSB prefix from regulator names Ivan T. Ivanov
     [not found] ` <1384267910-32066-1-git-send-email-iivanov-NEYub+7Iv8PQT0dZR+AlfA@public.gmane.org>
2013-11-12 14:51   ` [PATCH v4 09/15] usb: phy: msm: Properly check result from platform_get_irq() Ivan T. Ivanov
2013-11-12 14:51     ` Ivan T. Ivanov
2013-11-12 14:51   ` [PATCH v4 12/15] usb: phy: msm: Add support for secondary PHY control Ivan T. Ivanov
2013-11-12 14:51     ` Ivan T. Ivanov
2013-11-15 16:42     ` Mark Rutland
2013-11-18 12:57       ` Ivan T. Ivanov
2013-12-05 10:42         ` Mark Rutland
2013-12-11  8:23           ` Ivan T. Ivanov
2013-11-12 14:51   ` [PATCH v4 13/15] usb: phy: msm: Correct USB PHY Reset sequence for newer platform Ivan T. Ivanov
2013-11-12 14:51     ` Ivan T. Ivanov
2013-11-12 14:51 ` [PATCH v4 10/15] usb: phy: msm: Add device tree support and binding information Ivan T. Ivanov
2013-11-15 16:38   ` Mark Rutland
2013-11-18 12:54     ` Ivan T. Ivanov
     [not found]       ` <1384779277.13631.13.camel-yvhxILDKWb8ylMT5ByZ5bDRGLm/uyL/D0E9HWUfgJXw@public.gmane.org>
2013-12-05 10:41         ` Mark Rutland
2013-12-05 10:41           ` Mark Rutland
2013-12-11  9:45           ` Ivan T. Ivanov
2013-11-12 14:51 ` Ivan T. Ivanov [this message]
2013-11-12 14:51 ` [PATCH v4 14/15] usb: phy: msm: Handle disconnect events Ivan T. Ivanov
2013-11-12 14:51 ` [PATCH v4 15/15] usb: phy: msm: Vote for corner of VDD CX instead of voltage of VDD CX Ivan T. Ivanov
2013-11-26 16:38 ` [PATCH v4 00/15] usb: phy: msm: Fixes, cleanups and DT support Felipe Balbi
2013-11-26 16:38   ` Felipe Balbi
2013-12-19 23:03   ` David Brown
2013-12-19 23:26     ` Felipe Balbi
2013-12-19 23:26       ` Felipe Balbi
2013-12-20 19:59       ` David Brown
2013-12-27  0:26         ` Stephen Boyd

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=1384267910-32066-12-git-send-email-iivanov@mm-sol.com \
    --to=iivanov@mm-sol.com \
    --cc=balbi@ti.com \
    --cc=davidb@codeaurora.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=pawel.moll@arm.com \
    --cc=rob.herring@calxeda.com \
    --cc=swarren@wwwdotorg.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.