All of lore.kernel.org
 help / color / mirror / Atom feed
From: ahaslam@baylibre.com
To: gregkh@linuxfoundation.org, johan@kernel.org, robh+dt@kernel.org,
	nsekhar@ti.com, stern@rowland.harvard.edu, khilman@baylibre.com,
	sshtylyov@ru.mvista.com, david@lechnology.com,
	manjunath.goudar@linaro.org, broonie@kernel.org,
	abailon@baylibre.com
Cc: linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Axel Haslam <ahaslam@baylibre.com>
Subject: [PATCH/RFT v2 07/17] ARM: davinci: da8xx: Enable the usb20 "per" clk on phy_clk_enable
Date: Mon, 24 Oct 2016 18:46:24 +0200	[thread overview]
Message-ID: <20161024164634.4330-8-ahaslam@baylibre.com> (raw)
In-Reply-To: <20161024164634.4330-1-ahaslam@baylibre.com>

From: Axel Haslam <ahaslam@baylibre.com>

While probing ochi phy with usb20 phy as a parent clock for usb11_phy,
the usb20_phy clock enable would time out. This is because the usb20
module clock needs to enabled while trying to lock the usb20_phy PLL.

Call clk enable and get for the usb20 peripheral before trying to
enable the phy PLL.

Signed-off-by: Axel Haslam <ahaslam@baylibre.com>
---
 arch/arm/mach-davinci/usb-da8xx.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-davinci/usb-da8xx.c b/arch/arm/mach-davinci/usb-da8xx.c
index 9e41a7f..982e105 100644
--- a/arch/arm/mach-davinci/usb-da8xx.c
+++ b/arch/arm/mach-davinci/usb-da8xx.c
@@ -53,11 +53,19 @@ int __init da8xx_register_usb_refclkin(int rate)
 
 static void usb20_phy_clk_enable(struct clk *clk)
 {
+	struct clk *usb20_clk;
 	u32 val;
 	u32 timeout = 500000; /* 500 msec */
 
 	val = readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
 
+	usb20_clk = clk_get(NULL, "usb20");
+	if (IS_ERR(usb20_clk)) {
+		pr_err("could not get usb20 clk\n");
+		return;
+	}
+
+	clk_prepare_enable(usb20_clk);
 	/*
 	 * Turn on the USB 2.0 PHY, but just the PLL, and not OTG. The USB 1.1
 	 * host may use the PLL clock without USB 2.0 OTG being used.
@@ -70,11 +78,14 @@ static void usb20_phy_clk_enable(struct clk *clk)
 	while (--timeout) {
 		val = readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
 		if (val & CFGCHIP2_PHYCLKGD)
-			return;
+			goto done;
 		udelay(1);
 	}
 
 	pr_err("Timeout waiting for USB 2.0 PHY clock good.\n");
+done:
+	clk_disable_unprepare(usb20_clk);
+	clk_put(usb20_clk);
 }
 
 static void usb20_phy_clk_disable(struct clk *clk)
-- 
1.9.1

WARNING: multiple messages have this Message-ID (diff)
From: ahaslam@baylibre.com
To: gregkh@linuxfoundation.org, johan@kernel.org, robh+dt@kernel.org,
	nsekhar@ti.com, stern@rowland.harvard.edu, khilman@baylibre.com,
	sshtylyov@ru.mvista.com, david@lechnology.com,
	manjunath.goudar@linaro.org, broonie@kernel.org,
	abailon@baylibre.com
Cc: devicetree@vger.kernel.org, Axel Haslam <ahaslam@baylibre.com>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH/RFT v2 07/17] ARM: davinci: da8xx: Enable the usb20 "per" clk on phy_clk_enable
Date: Mon, 24 Oct 2016 18:46:24 +0200	[thread overview]
Message-ID: <20161024164634.4330-8-ahaslam@baylibre.com> (raw)
In-Reply-To: <20161024164634.4330-1-ahaslam@baylibre.com>

From: Axel Haslam <ahaslam@baylibre.com>

While probing ochi phy with usb20 phy as a parent clock for usb11_phy,
the usb20_phy clock enable would time out. This is because the usb20
module clock needs to enabled while trying to lock the usb20_phy PLL.

Call clk enable and get for the usb20 peripheral before trying to
enable the phy PLL.

Signed-off-by: Axel Haslam <ahaslam@baylibre.com>
---
 arch/arm/mach-davinci/usb-da8xx.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-davinci/usb-da8xx.c b/arch/arm/mach-davinci/usb-da8xx.c
index 9e41a7f..982e105 100644
--- a/arch/arm/mach-davinci/usb-da8xx.c
+++ b/arch/arm/mach-davinci/usb-da8xx.c
@@ -53,11 +53,19 @@ int __init da8xx_register_usb_refclkin(int rate)
 
 static void usb20_phy_clk_enable(struct clk *clk)
 {
+	struct clk *usb20_clk;
 	u32 val;
 	u32 timeout = 500000; /* 500 msec */
 
 	val = readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
 
+	usb20_clk = clk_get(NULL, "usb20");
+	if (IS_ERR(usb20_clk)) {
+		pr_err("could not get usb20 clk\n");
+		return;
+	}
+
+	clk_prepare_enable(usb20_clk);
 	/*
 	 * Turn on the USB 2.0 PHY, but just the PLL, and not OTG. The USB 1.1
 	 * host may use the PLL clock without USB 2.0 OTG being used.
@@ -70,11 +78,14 @@ static void usb20_phy_clk_enable(struct clk *clk)
 	while (--timeout) {
 		val = readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
 		if (val & CFGCHIP2_PHYCLKGD)
-			return;
+			goto done;
 		udelay(1);
 	}
 
 	pr_err("Timeout waiting for USB 2.0 PHY clock good.\n");
+done:
+	clk_disable_unprepare(usb20_clk);
+	clk_put(usb20_clk);
 }
 
 static void usb20_phy_clk_disable(struct clk *clk)
-- 
1.9.1

WARNING: multiple messages have this Message-ID (diff)
From: ahaslam@baylibre.com (ahaslam at baylibre.com)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH/RFT v2 07/17] ARM: davinci: da8xx: Enable the usb20 "per" clk on phy_clk_enable
Date: Mon, 24 Oct 2016 18:46:24 +0200	[thread overview]
Message-ID: <20161024164634.4330-8-ahaslam@baylibre.com> (raw)
In-Reply-To: <20161024164634.4330-1-ahaslam@baylibre.com>

From: Axel Haslam <ahaslam@baylibre.com>

While probing ochi phy with usb20 phy as a parent clock for usb11_phy,
the usb20_phy clock enable would time out. This is because the usb20
module clock needs to enabled while trying to lock the usb20_phy PLL.

Call clk enable and get for the usb20 peripheral before trying to
enable the phy PLL.

Signed-off-by: Axel Haslam <ahaslam@baylibre.com>
---
 arch/arm/mach-davinci/usb-da8xx.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-davinci/usb-da8xx.c b/arch/arm/mach-davinci/usb-da8xx.c
index 9e41a7f..982e105 100644
--- a/arch/arm/mach-davinci/usb-da8xx.c
+++ b/arch/arm/mach-davinci/usb-da8xx.c
@@ -53,11 +53,19 @@ int __init da8xx_register_usb_refclkin(int rate)
 
 static void usb20_phy_clk_enable(struct clk *clk)
 {
+	struct clk *usb20_clk;
 	u32 val;
 	u32 timeout = 500000; /* 500 msec */
 
 	val = readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
 
+	usb20_clk = clk_get(NULL, "usb20");
+	if (IS_ERR(usb20_clk)) {
+		pr_err("could not get usb20 clk\n");
+		return;
+	}
+
+	clk_prepare_enable(usb20_clk);
 	/*
 	 * Turn on the USB 2.0 PHY, but just the PLL, and not OTG. The USB 1.1
 	 * host may use the PLL clock without USB 2.0 OTG being used.
@@ -70,11 +78,14 @@ static void usb20_phy_clk_enable(struct clk *clk)
 	while (--timeout) {
 		val = readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP2_REG));
 		if (val & CFGCHIP2_PHYCLKGD)
-			return;
+			goto done;
 		udelay(1);
 	}
 
 	pr_err("Timeout waiting for USB 2.0 PHY clock good.\n");
+done:
+	clk_disable_unprepare(usb20_clk);
+	clk_put(usb20_clk);
 }
 
 static void usb20_phy_clk_disable(struct clk *clk)
-- 
1.9.1

  parent reply	other threads:[~2016-10-24 16:49 UTC|newest]

Thread overview: 176+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-24 16:46 [PATCH/RFT v2 00/17] Add DT support for ohci-da8xx ahaslam
2016-10-24 16:46 ` ahaslam at baylibre.com
2016-10-24 16:46 ` [PATCH/RFT v2 01/17] ARM: davinci: da8xx: add usb phy clocks ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46 ` [PATCH/RFT v2 02/17] ARM: davinci: da8xx: Add CFGCHIP syscon platform declaration ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  8:10   ` Sekhar Nori
2016-10-25  8:10     ` Sekhar Nori
2016-10-25  8:10     ` Sekhar Nori
2016-10-25  9:37     ` Axel Haslam
2016-10-25  9:37       ` Axel Haslam
2016-10-25  9:37       ` Axel Haslam
2016-10-25 10:17       ` Sekhar Nori
2016-10-25 10:17         ` Sekhar Nori
2016-10-25 10:17         ` Sekhar Nori
2016-10-25 15:53         ` David Lechner
2016-10-25 15:53           ` David Lechner
2016-10-25 15:53           ` David Lechner
2016-10-26  8:56           ` Sekhar Nori
2016-10-26  8:56             ` Sekhar Nori
2016-10-26  8:56             ` Sekhar Nori
2016-10-24 16:46 ` [PATCH/RFT v2 03/17] ARM: davinci: da8xx: Add USB PHY " ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  9:18   ` Sekhar Nori
2016-10-25  9:18     ` Sekhar Nori
2016-10-25  9:18     ` Sekhar Nori
2016-10-25  9:37     ` Axel Haslam
2016-10-25  9:37       ` Axel Haslam
2016-10-25  9:37       ` Axel Haslam
2016-10-24 16:46 ` [PATCH/RFT v2 04/17] ARM: DTS: da850: Add cfgchip syscon node ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam
2016-10-24 16:46 ` [PATCH/RFT v2 05/17] ARM: DTS: da850: Add usb phy node ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam
2016-10-24 16:46 ` [PATCH/RFT v2 06/17] ARM: davinci: da8xx: Fix some redefined symbol warnings ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25 10:03   ` Sekhar Nori
2016-10-25 10:03     ` Sekhar Nori
2016-10-25 10:03     ` Sekhar Nori
2016-10-25 12:14     ` Alexandre Bailon
2016-10-25 12:14       ` Alexandre Bailon
2016-10-25 12:14       ` Alexandre Bailon
2016-10-24 16:46 ` ahaslam [this message]
2016-10-24 16:46   ` [PATCH/RFT v2 07/17] ARM: davinci: da8xx: Enable the usb20 "per" clk on phy_clk_enable ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam
2016-10-25  2:53   ` David Lechner
2016-10-25  2:53     ` David Lechner
2016-10-25 10:01     ` Axel Haslam
2016-10-25 10:01       ` Axel Haslam
2016-10-25 10:12   ` Sekhar Nori
2016-10-25 10:12     ` Sekhar Nori
2016-10-25 10:12     ` Sekhar Nori
2016-10-25 16:05     ` David Lechner
2016-10-25 16:05       ` David Lechner
2016-10-25 16:05       ` David Lechner
2016-10-26  9:30       ` Sekhar Nori
2016-10-26  9:30         ` Sekhar Nori
2016-10-26  9:30         ` Sekhar Nori
2016-10-24 16:46 ` [PATCH/RFT v2 08/17] ARM: davinci: hawk: add full constraints for ohci plat boot ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-25 10:28   ` Sekhar Nori
2016-10-25 10:28     ` Sekhar Nori
2016-10-25 10:28     ` Sekhar Nori
2016-10-25 10:31     ` Axel Haslam
2016-10-25 10:31       ` Axel Haslam
2016-10-25 10:31       ` Axel Haslam
2016-10-24 16:46 ` [PATCH/RFT v2 09/17] regulator: fixed: Add over current event ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-24 17:43   ` Mark Brown
2016-10-24 17:43     ` Mark Brown
2016-10-24 17:43     ` Mark Brown
2016-10-24 17:53     ` Axel Haslam
2016-10-24 17:53       ` Axel Haslam
2016-10-24 17:53   ` Mark Brown
2016-10-24 17:53     ` Mark Brown
2016-10-24 17:53     ` Mark Brown
2016-10-24 18:11     ` Axel Haslam
2016-10-24 18:11       ` Axel Haslam
2016-10-24 18:11       ` Axel Haslam
2016-10-24 18:19       ` Mark Brown
2016-10-24 18:19         ` Mark Brown
2016-10-25 12:55         ` Axel Haslam
2016-10-25 12:55           ` Axel Haslam
2016-10-25 14:33           ` Mark Brown
2016-10-25 14:33             ` Mark Brown
2016-10-25 14:57             ` Axel Haslam
2016-10-25 14:57               ` Axel Haslam
2016-10-25 15:07               ` Axel Haslam
2016-10-25 15:07                 ` Axel Haslam
2016-10-30 20:42   ` Rob Herring
2016-10-30 20:42     ` Rob Herring
2016-10-24 16:46 ` [PATCH/RFT v2 10/17] USB: da8xx: use flag instead of bitmask for over current change ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-24 16:46 ` [PATCH/RFT v2 11/17] USB: OHCI: make ohci-da8xx a separate driver ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  0:38   ` David Lechner
2016-10-25  0:38     ` David Lechner
2016-10-25  0:38     ` David Lechner
2016-10-25  7:39     ` Axel Haslam
2016-10-25  7:39       ` Axel Haslam
2016-10-25  7:39       ` Axel Haslam
2016-10-25 16:12       ` David Lechner
2016-10-25 16:12         ` David Lechner
2016-10-25 16:12         ` David Lechner
2016-10-25 16:21         ` Axel Haslam
2016-10-25 16:21           ` Axel Haslam
2016-10-25 16:21           ` Axel Haslam
2016-10-25 16:24           ` David Lechner
2016-10-25 16:24             ` David Lechner
2016-10-25 16:24             ` David Lechner
2016-10-24 16:46 ` [PATCH/RFT v2 12/17] USB: ochi-da8xx: Use a regulator for vbus/overcurrent ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  1:39   ` David Lechner
2016-10-25  1:39     ` David Lechner
2016-10-25  1:39     ` David Lechner
2016-10-25  8:24     ` Axel Haslam
2016-10-25  8:24       ` Axel Haslam
2016-10-25  8:24       ` Axel Haslam
2016-10-25 16:53       ` David Lechner
2016-10-25 16:53         ` David Lechner
2016-10-25 16:53         ` David Lechner
2016-10-25 17:32         ` Axel Haslam
2016-10-25 17:32           ` Axel Haslam
2016-10-25 10:43   ` Sekhar Nori
2016-10-25 10:43     ` Sekhar Nori
2016-10-25 10:43     ` Sekhar Nori
2016-10-25 10:52     ` Axel Haslam
2016-10-25 10:52       ` Axel Haslam
2016-10-25 10:52       ` Axel Haslam
2016-10-24 16:46 ` [PATCH/RFT v2 13/17] USB: da8xx: use ohci priv data instead of globals ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  1:12   ` David Lechner
2016-10-25  1:12     ` David Lechner
2016-10-25  1:12     ` David Lechner
2016-10-25  9:56     ` Axel Haslam
2016-10-25  9:56       ` Axel Haslam
2016-10-24 16:46 ` [PATCH/RFT v2 14/17] ARM: davinci: register the usb20_phy clock on the DT file ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-24 16:46 ` [PATCH/RFT v2 15/17] usb: host: ohci-da8xx: Add devicetree bindings documentation ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  1:02   ` David Lechner
2016-10-25  1:02     ` David Lechner
2016-10-25  1:02     ` David Lechner
2016-10-25  9:56     ` Axel Haslam
2016-10-25  9:56       ` Axel Haslam
2016-10-25  9:56       ` Axel Haslam
2016-10-24 16:46 ` [PATCH/RFT v2 16/17] USB: ohci-da8xx: Allow probing from DT ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-24 16:46   ` ahaslam-rdvid1DuHRBWk0Htik3J/w
2016-10-25  0:53   ` David Lechner
2016-10-25  0:53     ` David Lechner
2016-10-25  0:53     ` David Lechner
2016-10-25  8:10     ` Axel Haslam
2016-10-25  8:10       ` Axel Haslam
2016-10-24 16:46 ` [PATCH/RFT v2 17/17] ARM: dts: da850: add usb device node ahaslam
2016-10-24 16:46   ` ahaslam at baylibre.com
2016-10-25  0:48   ` David Lechner
2016-10-25  0:48     ` David Lechner
2016-10-25  0:48     ` David Lechner
2016-10-25  8:03     ` Axel Haslam
2016-10-25  8:03       ` Axel Haslam
2016-10-25  8:03       ` Axel Haslam
2016-10-25 10:55 ` [PATCH/RFT v2 00/17] Add DT support for ohci-da8xx Sekhar Nori
2016-10-25 10:55   ` Sekhar Nori
2016-10-25 10:55   ` Sekhar Nori

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=20161024164634.4330-8-ahaslam@baylibre.com \
    --to=ahaslam@baylibre.com \
    --cc=abailon@baylibre.com \
    --cc=broonie@kernel.org \
    --cc=david@lechnology.com \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=johan@kernel.org \
    --cc=khilman@baylibre.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=manjunath.goudar@linaro.org \
    --cc=nsekhar@ti.com \
    --cc=robh+dt@kernel.org \
    --cc=sshtylyov@ru.mvista.com \
    --cc=stern@rowland.harvard.edu \
    /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.