All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris BREZILLON <b.brezillon@overkiz.com>
To: Nicolas Ferre <nicolas.ferre@atmel.com>,
	Ludovic Desroches <ludovic.desroches@atmel.com>,
	Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>,
	Mike Turquette <mturquette@linaro.org>,
	Alan Stern <stern@rowland.harvard.edu>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org,
	Boris BREZILLON <b.brezillon@overkiz.com>
Subject: [PATCH v2 26/42] USB: ohci-at91: add usb_clk for transition to common clk framework
Date: Wed, 17 Jul 2013 17:47:42 +0200	[thread overview]
Message-ID: <1374076062-20293-1-git-send-email-b.brezillon@overkiz.com> (raw)
In-Reply-To: <1374068069-13496-1-git-send-email-b.brezillon@overkiz.com>

The AT91 PMC (Power Management Controller) provides an USB clock used by
USB Full Speed host (ohci) and USB Full Speed device (udc).
The usb drivers (ohci and udc) must configure this clock to 48Mhz.
This configuration was formely done in mach-at91/clock.c, but this
implementation will be removed when moving to common clk framework.

This patch add support for usb clock retrieval and configuration.

Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
---
 drivers/usb/host/ohci-at91.c |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index 9677f68..ca1cdd6 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -31,8 +31,8 @@
 #define at91_for_each_port(index)	\
 		for ((index) = 0; (index) < AT91_MAX_USBH_PORTS; (index)++)
 
-/* interface and function clocks; sometimes also an AHB clock */
-static struct clk *iclk, *fclk, *hclk;
+/* interface, function and usb clocks; sometimes also an AHB clock */
+static struct clk *iclk, *fclk, *uclk, *hclk;
 static int clocked;
 
 extern int usb_disabled(void);
@@ -41,6 +41,8 @@ extern int usb_disabled(void);
 
 static void at91_start_clock(void)
 {
+	clk_set_rate(uclk, 48000000);
+	clk_prepare_enable(uclk);
 	clk_prepare_enable(hclk);
 	clk_prepare_enable(iclk);
 	clk_prepare_enable(fclk);
@@ -52,6 +54,7 @@ static void at91_stop_clock(void)
 	clk_disable_unprepare(fclk);
 	clk_disable_unprepare(iclk);
 	clk_disable_unprepare(hclk);
+	clk_disable_unprepare(uclk);
 	clocked = 0;
 }
 
@@ -162,6 +165,12 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,
 		retval = PTR_ERR(hclk);
 		goto err5;
 	}
+	uclk = clk_get(&pdev->dev, "usb_clk");
+	if (IS_ERR(uclk)) {
+		dev_err(&pdev->dev, "failed to get usb_clk\n");
+		retval = PTR_ERR(uclk);
+		goto err6;
+	}
 
 	at91_start_hc(pdev);
 	ohci_hcd_init(hcd_to_ohci(hcd));
@@ -173,6 +182,8 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,
 	/* Error handling */
 	at91_stop_hc(pdev);
 
+	clk_put(uclk);
+ err6:
 	clk_put(hclk);
  err5:
 	clk_put(fclk);
@@ -212,6 +223,7 @@ static void usb_hcd_at91_remove(struct usb_hcd *hcd,
 	release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
 	usb_put_hcd(hcd);
 
+	clk_put(uclk);
 	clk_put(hclk);
 	clk_put(fclk);
 	clk_put(iclk);
-- 
1.7.9.5


WARNING: multiple messages have this Message-ID (diff)
From: b.brezillon@overkiz.com (Boris BREZILLON)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 26/42] USB: ohci-at91: add usb_clk for transition to common clk framework
Date: Wed, 17 Jul 2013 17:47:42 +0200	[thread overview]
Message-ID: <1374076062-20293-1-git-send-email-b.brezillon@overkiz.com> (raw)
In-Reply-To: <1374068069-13496-1-git-send-email-b.brezillon@overkiz.com>

The AT91 PMC (Power Management Controller) provides an USB clock used by
USB Full Speed host (ohci) and USB Full Speed device (udc).
The usb drivers (ohci and udc) must configure this clock to 48Mhz.
This configuration was formely done in mach-at91/clock.c, but this
implementation will be removed when moving to common clk framework.

This patch add support for usb clock retrieval and configuration.

Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
---
 drivers/usb/host/ohci-at91.c |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index 9677f68..ca1cdd6 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -31,8 +31,8 @@
 #define at91_for_each_port(index)	\
 		for ((index) = 0; (index) < AT91_MAX_USBH_PORTS; (index)++)
 
-/* interface and function clocks; sometimes also an AHB clock */
-static struct clk *iclk, *fclk, *hclk;
+/* interface, function and usb clocks; sometimes also an AHB clock */
+static struct clk *iclk, *fclk, *uclk, *hclk;
 static int clocked;
 
 extern int usb_disabled(void);
@@ -41,6 +41,8 @@ extern int usb_disabled(void);
 
 static void at91_start_clock(void)
 {
+	clk_set_rate(uclk, 48000000);
+	clk_prepare_enable(uclk);
 	clk_prepare_enable(hclk);
 	clk_prepare_enable(iclk);
 	clk_prepare_enable(fclk);
@@ -52,6 +54,7 @@ static void at91_stop_clock(void)
 	clk_disable_unprepare(fclk);
 	clk_disable_unprepare(iclk);
 	clk_disable_unprepare(hclk);
+	clk_disable_unprepare(uclk);
 	clocked = 0;
 }
 
@@ -162,6 +165,12 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,
 		retval = PTR_ERR(hclk);
 		goto err5;
 	}
+	uclk = clk_get(&pdev->dev, "usb_clk");
+	if (IS_ERR(uclk)) {
+		dev_err(&pdev->dev, "failed to get usb_clk\n");
+		retval = PTR_ERR(uclk);
+		goto err6;
+	}
 
 	at91_start_hc(pdev);
 	ohci_hcd_init(hcd_to_ohci(hcd));
@@ -173,6 +182,8 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver,
 	/* Error handling */
 	at91_stop_hc(pdev);
 
+	clk_put(uclk);
+ err6:
 	clk_put(hclk);
  err5:
 	clk_put(fclk);
@@ -212,6 +223,7 @@ static void usb_hcd_at91_remove(struct usb_hcd *hcd,
 	release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
 	usb_put_hcd(hcd);
 
+	clk_put(uclk);
 	clk_put(hclk);
 	clk_put(fclk);
 	clk_put(iclk);
-- 
1.7.9.5

  parent reply	other threads:[~2013-07-17 15:48 UTC|newest]

Thread overview: 129+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-17 13:34 [PATCH v2 00/42] ARM: at91: move to common clk framework Boris BREZILLON
2013-07-17 13:34 ` Boris BREZILLON
2013-07-17 13:37 ` [PATCH v2 01/42] ARM: at91: move at91_pmc.h to include/linux/clk/at91.h Boris BREZILLON
2013-07-17 13:37   ` Boris BREZILLON
2013-07-23 18:03   ` Jean-Christophe PLAGNIOL-VILLARD
2013-07-23 18:03     ` Jean-Christophe PLAGNIOL-VILLARD
2013-07-23 22:24     ` boris brezillon
2013-07-23 22:24       ` boris brezillon
2013-07-17 13:40 ` [PATCH v2 02/42] ARM: at91: add PMC main clock Boris BREZILLON
2013-07-17 13:40   ` Boris BREZILLON
2013-07-17 16:39   ` boris brezillon
2013-07-17 16:39     ` boris brezillon
2013-07-26 16:41   ` boris brezillon
2013-07-26 16:41     ` boris brezillon
2013-07-17 13:42 ` [PATCH v2 03/42] ARM: at91: add PMC pll clocks Boris BREZILLON
2013-07-17 13:42   ` Boris BREZILLON
2013-07-17 13:42   ` Boris BREZILLON
2013-07-17 13:44 ` [PATCH v2 04/42] ARM: at91: add PMC master clock Boris BREZILLON
2013-07-17 13:44   ` Boris BREZILLON
2013-07-17 13:45 ` [PATCH v2 05/42] ARM: at91: add PMC system clocks Boris BREZILLON
2013-07-17 13:45   ` Boris BREZILLON
2013-07-17 13:46 ` [PATCH v2 06/42] ARM: at91: add PMC peripheral clocks Boris BREZILLON
2013-07-17 13:46   ` Boris BREZILLON
2013-07-17 13:47 ` [PATCH v2 07/42] ARM: at91: add PMC programmable clocks Boris BREZILLON
2013-07-17 13:47   ` Boris BREZILLON
2013-07-17 13:50 ` [PATCH v2 08/42] ARM: at91: add PMC utmi clock Boris BREZILLON
2013-07-17 13:50   ` Boris BREZILLON
2013-07-17 13:52 ` [PATCH v2 09/42] ARM: at91: add PMC usb clock Boris BREZILLON
2013-07-17 13:52   ` Boris BREZILLON
2013-07-17 13:53 ` [PATCH v2 10/42] ARM: at91: add PMC smd clock Boris BREZILLON
2013-07-17 13:53   ` Boris BREZILLON
2013-07-17 13:55 ` [PATCH v2 11/42] ARM: at91: add PMC clk device tree binding doc Boris BREZILLON
2013-07-17 13:55   ` Boris BREZILLON
2013-07-17 14:35 ` [PATCH v2 12/42] ARM: at91: move to common clk framework Boris BREZILLON
2013-07-17 14:35   ` Boris BREZILLON
2013-07-17 14:41 ` [PATCH v2 13/42] ARM: at91: move at91rm9200 SoC to new at91 clk implem Boris BREZILLON
2013-07-17 14:41   ` Boris BREZILLON
2013-07-17 14:42 ` [PATCH v2 14/42] ARM: at91: move at91sam9260 " Boris BREZILLON
2013-07-17 14:42   ` Boris BREZILLON
2013-07-17 14:44 ` [PATCH v2 15/42] ARM: at91: move at91sam9261 " Boris BREZILLON
2013-07-17 14:44   ` Boris BREZILLON
2013-07-17 14:45 ` [PATCH v2 16/42] ARM: at91: move at91sam9263 " Boris BREZILLON
2013-07-17 14:45   ` Boris BREZILLON
2013-07-17 14:49 ` [PATCH v2 17/42] ARM: at91: move at91sam9g45 " Boris BREZILLON
2013-07-17 14:49   ` Boris BREZILLON
2013-07-23 22:29   ` boris brezillon
2013-07-23 22:29     ` boris brezillon
2013-07-17 14:49 ` [PATCH v2 18/42] ARM: at91: move at91sam9n12 " Boris BREZILLON
2013-07-17 14:49   ` Boris BREZILLON
2013-07-17 14:52 ` [PATCH v2 19/42] ARM: at91: move at91sam9rl " Boris BREZILLON
2013-07-17 14:52   ` Boris BREZILLON
2013-07-17 14:53 ` [PATCH v2 20/42] ARM: at91: move at91sam9x5 SoCs " Boris BREZILLON
2013-07-17 14:53   ` Boris BREZILLON
2013-07-17 14:59 ` [PATCH v2 21/42] ARM: at91: move at91sam9 " Boris BREZILLON
2013-07-17 14:59   ` Boris BREZILLON
2013-07-17 14:59 ` [PATCH v2 22/42] ARM: at91: move sama5d3 " Boris BREZILLON
2013-07-17 14:59   ` Boris BREZILLON
2013-07-17 15:00 ` [PATCH v2 23/42] ARM: at91: move at91rm9200 boards " Boris BREZILLON
2013-07-17 15:00   ` Boris BREZILLON
2013-07-17 15:37 ` [PATCH v2 24/42] ARM: at91: move at91sam9 " Boris BREZILLON
2013-07-17 15:37   ` Boris BREZILLON
2013-07-17 17:13   ` Russell King - ARM Linux
2013-07-17 17:13     ` Russell King - ARM Linux
2013-07-17 20:32     ` boris brezillon
2013-07-17 20:32       ` boris brezillon
2013-07-17 15:46 ` [PATCH v2 25/42] ARM: at91: move pit timer to common clk framework Boris BREZILLON
2013-07-17 15:46   ` Boris BREZILLON
2013-07-17 15:47 ` Boris BREZILLON [this message]
2013-07-17 15:47   ` [PATCH v2 26/42] USB: ohci-at91: add usb_clk for transition " Boris BREZILLON
2013-07-31  7:56   ` boris brezillon
2013-07-31  7:56     ` boris brezillon
2013-07-31 14:32     ` Alan Stern
2013-07-31 14:32       ` Alan Stern
2013-07-17 15:49 ` [PATCH v2 27/42] usb: gadget: at91_udc: " Boris BREZILLON
2013-07-17 15:49   ` Boris BREZILLON
2013-07-17 15:51 ` [PATCH v2 28/42] ARM: at91/dt: move at91rm9200 SoC to new at91 clk implem Boris BREZILLON
2013-07-17 15:51   ` Boris BREZILLON
2013-07-17 15:53 ` [PATCH v2 29/42] ARM: at91/dt: move at91sam9260 " Boris BREZILLON
2013-07-17 15:53   ` Boris BREZILLON
2013-07-17 15:55 ` [PATCH v2 30/42] ARM: at91/dt: move at91sam9263 " Boris BREZILLON
2013-07-17 15:55   ` Boris BREZILLON
2013-07-17 16:00 ` [PATCH v2 31/42] ARM: at91/dt: move at91sam9g45 " Boris BREZILLON
2013-07-17 16:00   ` Boris BREZILLON
2013-07-17 16:02 ` [PATCH v2 32/42] ARM: at91/dt: move at91sam9n12 " Boris BREZILLON
2013-07-17 16:02   ` Boris BREZILLON
2013-07-17 16:05 ` [PATCH v2 33/42] ARM: at91/dt: move at91sam9x5 SoCs " Boris BREZILLON
2013-07-17 16:05   ` Boris BREZILLON
2013-07-17 16:45 ` [PATCH v2 34/42] ARM: at91/dt: move at91sam9g20 SoC " Boris BREZILLON
2013-07-17 16:45   ` Boris BREZILLON
2013-07-17 16:50 ` [PATCH v2 35/42] ARM: at91/dt: move sama5d3 SoCs " Boris BREZILLON
2013-07-17 16:50   ` Boris BREZILLON
2013-07-17 20:06 ` [PATCH v2 36/42] ARM: at91/dt: move sam9260/sam9g20 " Boris BREZILLON
2013-07-17 20:06   ` Boris BREZILLON
2013-07-17 20:08 ` [PATCH v2 37/42] ARM: at91/dt: move rm9200 boards " Boris BREZILLON
2013-07-17 20:08   ` Boris BREZILLON
2013-07-17 20:09 ` [PATCH v2 38/42] ARM: at91/dt: move sam9263 " Boris BREZILLON
2013-07-17 20:09   ` Boris BREZILLON
2013-07-17 20:17 ` [PATCH v2 39/42] ARM: at91/dt: move sam9g45 " Boris BREZILLON
2013-07-17 20:17   ` Boris BREZILLON
2013-07-17 20:19 ` [PATCH v2 40/42] ARM: at91/dt: move sam9n12 " Boris BREZILLON
2013-07-17 20:19   ` Boris BREZILLON
2013-07-17 20:21 ` [PATCH v2 41/42] ARM: at91/dt: move sam9x5 " Boris BREZILLON
2013-07-17 20:21   ` Boris BREZILLON
2013-07-17 20:32 ` [PATCH v2 42/42] ARM: at91/dt: move sama5d3 " Boris BREZILLON
2013-07-17 20:32   ` Boris BREZILLON
2013-07-18  8:51 ` [PATCH v2 00/42] ARM: at91: move to common clk framework boris brezillon
2013-07-18  8:51   ` boris brezillon
2013-07-26 14:10 ` Richard Genoud
2013-07-26 14:10   ` Richard Genoud
2013-07-26 15:44   ` boris brezillon
2013-07-26 15:44     ` boris brezillon
2013-07-26 16:35     ` boris brezillon
2013-07-26 16:35       ` boris brezillon
2013-07-29  8:00       ` Richard Genoud
2013-07-29  8:00         ` Richard Genoud
2013-07-29  9:25         ` boris brezillon
2013-07-29  9:25           ` boris brezillon
2013-07-29 14:18           ` Richard Genoud
2013-07-29 14:18             ` Richard Genoud
2013-07-29 14:34             ` boris brezillon
2013-07-29 14:34               ` boris brezillon
2013-07-29 15:09               ` Richard Genoud
2013-07-29 15:09                 ` Richard Genoud
2013-07-29 15:14                 ` boris brezillon
2013-07-29 15:14                   ` boris brezillon
2013-07-29 16:44                 ` boris brezillon
2013-07-29 16:44                   ` boris brezillon
2013-07-27  4:41 ` boris brezillon
2013-07-27  4:41   ` boris brezillon

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=1374076062-20293-1-git-send-email-b.brezillon@overkiz.com \
    --to=b.brezillon@overkiz.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=ludovic.desroches@atmel.com \
    --cc=mturquette@linaro.org \
    --cc=nicolas.ferre@atmel.com \
    --cc=plagnioj@jcrosoft.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.