devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Lechner <david@lechnology.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
	<devicetree@vger.kernel.org>,
	"open list:USB SUBSYSTEM" <linux-usb@vger.kernel.org>,
	Russell King <linux@arm.linux.org.uk>,
	David Lechner <david@lechnology.com>,
	Pawel Moll <pawel.moll@arm.com>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Kevin Hilman <khilman@kernel.org>, Sekhar Nori <nsekhar@ti.com>,
	open list <linux-kernel@vger.kernel.org>,
	Kishon Vijay Abraham I <kishon@ti.com>,
	petr@barix.com, Rob Herring <robh+dt@kernel.org>,
	Alan Stern <stern@rowland.harvard.edu>,
	"moderated list:ARM PORT" <linux-arm-kernel@lists.infradead.org>,
	Kumar Gala <galak@codeaurora.org>,
	David.Laight@ACULAB.COM, Lee Jones <lee.jones@linaro.org>,
	sergei.shtylyov@cogentembedded.com, Bin Liu <b-liu@ti.com>
Subject: [PATCH v3 04/16] ARM: davinci: Move clock init after ioremap.
Date: Thu, 24 Mar 2016 18:51:29 -0500	[thread overview]
Message-ID: <1458863503-31121-5-git-send-email-david@lechnology.com> (raw)
In-Reply-To: <1458863503-31121-1-git-send-email-david@lechnology.com>

Some clocks (such as the USB PHY clocks in DA8xx) will need to use iomem.
The davinci_common_init() function must be called before the ioremap, so
the clock init is now split out as separate function.

Signed-off-by: David Lechner <david@lechnology.com>
---

v3 changes: This is a new patch. It takes care of the issue of unwanted ioremap
in clock set_parent functions.


 arch/arm/mach-davinci/clock.c  | 4 ++--
 arch/arm/mach-davinci/clock.h  | 7 ++++++-
 arch/arm/mach-davinci/common.c | 6 ------
 arch/arm/mach-davinci/da830.c  | 2 ++
 arch/arm/mach-davinci/da850.c  | 2 ++
 arch/arm/mach-davinci/dm355.c  | 1 +
 arch/arm/mach-davinci/dm365.c  | 1 +
 arch/arm/mach-davinci/dm644x.c | 1 +
 arch/arm/mach-davinci/dm646x.c | 1 +
 9 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/arch/arm/mach-davinci/clock.c b/arch/arm/mach-davinci/clock.c
index 3424eac6..a5c2629 100644
--- a/arch/arm/mach-davinci/clock.c
+++ b/arch/arm/mach-davinci/clock.c
@@ -560,7 +560,7 @@ EXPORT_SYMBOL(davinci_set_pllrate);
  * than that used by default in <soc>.c file. The reference clock rate
  * should be updated early in the boot process; ideally soon after the
  * clock tree has been initialized once with the default reference clock
- * rate (davinci_common_init()).
+ * rate (davinci_clk_init()).
  *
  * Returns 0 on success, error otherwise.
  */
@@ -581,7 +581,7 @@ int davinci_set_refclk_rate(unsigned long rate)
 	return 0;
 }
 
-int __init davinci_clk_init(struct clk_lookup *clocks)
+int __init _davinci_clk_init(struct clk_lookup *clocks)
 {
 	struct clk_lookup *c;
 	struct clk *clk;
diff --git a/arch/arm/mach-davinci/clock.h b/arch/arm/mach-davinci/clock.h
index 1e4e836..8b0fbbe 100644
--- a/arch/arm/mach-davinci/clock.h
+++ b/arch/arm/mach-davinci/clock.h
@@ -124,7 +124,12 @@ struct clk {
 		.clk = ck,	\
 	}			\
 
-int davinci_clk_init(struct clk_lookup *clocks);
+int _davinci_clk_init(struct clk_lookup *clocks);
+static inline void davinci_clk_init(struct davinci_soc_info *soc_info)
+{
+	if (soc_info->cpu_clks && _davinci_clk_init(soc_info->cpu_clks))
+		panic("davinci_clk_init: Failed to init clocks.\n");
+}
 int davinci_set_pllrate(struct pll_data *pll, unsigned int prediv,
 				unsigned int mult, unsigned int postdiv);
 int davinci_set_sysclk_rate(struct clk *clk, unsigned long rate);
diff --git a/arch/arm/mach-davinci/common.c b/arch/arm/mach-davinci/common.c
index f55ef2e..6bc8c22 100644
--- a/arch/arm/mach-davinci/common.c
+++ b/arch/arm/mach-davinci/common.c
@@ -103,12 +103,6 @@ void __init davinci_common_init(struct davinci_soc_info *soc_info)
 	if (ret < 0)
 		goto err;
 
-	if (davinci_soc_info.cpu_clks) {
-		ret = davinci_clk_init(davinci_soc_info.cpu_clks);
-
-		if (ret != 0)
-			goto err;
-	}
 
 	return;
 
diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c
index 7187e7f..79d5fc3 100644
--- a/arch/arm/mach-davinci/da830.c
+++ b/arch/arm/mach-davinci/da830.c
@@ -1214,4 +1214,6 @@ void __init da830_init(void)
 
 	da8xx_syscfg0_base = ioremap(DA8XX_SYSCFG0_BASE, SZ_4K);
 	WARN(!da8xx_syscfg0_base, "Unable to map syscfg0 module");
+
+	davinci_clk_init(&davinci_soc_info_da830);
 }
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index 97d8779..9f46706 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -1346,4 +1346,6 @@ void __init da850_init(void)
 	v = __raw_readl(DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG));
 	v &= ~CFGCHIP3_PLL1_MASTER_LOCK;
 	__raw_writel(v, DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP3_REG));
+
+	davinci_clk_init(&davinci_soc_info_da850);
 }
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
index a0ecf49..b311b84 100644
--- a/arch/arm/mach-davinci/dm355.c
+++ b/arch/arm/mach-davinci/dm355.c
@@ -1052,6 +1052,7 @@ void __init dm355_init(void)
 {
 	davinci_common_init(&davinci_soc_info_dm355);
 	davinci_map_sysmod();
+	davinci_clk_init(&davinci_soc_info_dm355);
 }
 
 int __init dm355_init_video(struct vpfe_config *vpfe_cfg,
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 384d367..2338875 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -1176,6 +1176,7 @@ void __init dm365_init(void)
 {
 	davinci_common_init(&davinci_soc_info_dm365);
 	davinci_map_sysmod();
+	davinci_clk_init(&davinci_soc_info_dm365);
 }
 
 static struct resource dm365_vpss_resources[] = {
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
index b4b3a8b..5e672ed 100644
--- a/arch/arm/mach-davinci/dm644x.c
+++ b/arch/arm/mach-davinci/dm644x.c
@@ -932,6 +932,7 @@ void __init dm644x_init(void)
 {
 	davinci_common_init(&davinci_soc_info_dm644x);
 	davinci_map_sysmod();
+	davinci_clk_init(&davinci_soc_info_dm644x);
 }
 
 int __init dm644x_init_video(struct vpfe_config *vpfe_cfg,
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
index a43db0f..2840263 100644
--- a/arch/arm/mach-davinci/dm646x.c
+++ b/arch/arm/mach-davinci/dm646x.c
@@ -956,6 +956,7 @@ void __init dm646x_init(void)
 {
 	davinci_common_init(&davinci_soc_info_dm646x);
 	davinci_map_sysmod();
+	davinci_clk_init(&davinci_soc_info_dm646x);
 }
 
 static int __init dm646x_init_devices(void)
-- 
1.9.1

  parent reply	other threads:[~2016-03-24 23:51 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-24 23:51 [PATCH v3 00/16] da8xx USB clocks David Lechner
2016-03-24 23:51 ` [PATCH v3 01/16] dt: davinci: use proper address after @ David Lechner
     [not found]   ` <1458863503-31121-2-git-send-email-david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org>
2016-03-25 13:29     ` Sergei Shtylyov
2016-03-25 15:13       ` Rob Herring
     [not found]         ` <CAL_JsqKdVsJaWhKt6tSJNd+oev5qC+7_u=CFCgO980NZk-tdOA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-03-25 16:36           ` Sergei Shtylyov
2016-03-25 15:14     ` Rob Herring
2016-04-11  8:19     ` Sekhar Nori
2016-03-24 23:51 ` [PATCH v3 02/16] mfd: da8xx-cfgchip: New header file for CFGCHIP registers David Lechner
     [not found]   ` <1458863503-31121-3-git-send-email-david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org>
2016-03-25 17:22     ` Sergei Shtylyov
     [not found]       ` <56F573F3.90500-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2016-03-28 15:02         ` David Lechner
2016-03-28 16:42           ` Sergei Shtylyov
     [not found]             ` <56F95EE6.1010403-M4DtvfQ/ZS1MRgGoP+s0PdBPR1lH4CV8@public.gmane.org>
2016-04-11  8:23               ` Sekhar Nori
2016-03-24 23:51 ` [PATCH v3 03/16] ARM: davinici: da8xx: move usb code to new file David Lechner
     [not found]   ` <1458863503-31121-4-git-send-email-david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org>
2016-04-11  8:55     ` Sekhar Nori
2016-03-24 23:51 ` David Lechner [this message]
2016-04-11  9:14   ` [PATCH v3 04/16] ARM: davinci: Move clock init after ioremap Sekhar Nori
2016-03-24 23:51 ` [PATCH v3 07/16] ARM: davinci: da8xx: add usb phy clocks David Lechner
2016-03-24 23:51 ` [PATCH v3 08/16] dt-bindings: Add bindings for phy-da8xx-usb David Lechner
2016-03-25 15:04   ` Rob Herring
2016-03-24 23:51 ` [PATCH v3 09/16] phy: da8xx-usb: new driver for DA8xx SoC USB PHY David Lechner
2016-03-25  1:57   ` [PATCH] " David Lechner
2016-03-26 14:10     ` Sergei Shtylyov
2016-04-13 13:20   ` [PATCH v3 09/16] " Kishon Vijay Abraham I
2016-04-13 20:07     ` David Lechner
2016-04-14 12:38       ` Kishon Vijay Abraham I
2016-03-24 23:51 ` [PATCH v3 11/16] ARM: davinci: da8xx: Add USB PHY platform declaration David Lechner
     [not found] ` <1458863503-31121-1-git-send-email-david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org>
2016-03-24 23:51   ` [PATCH v3 05/16] ARM: davinci: add set_parent callback for mux clocks David Lechner
2016-04-11 10:40     ` Sekhar Nori
2016-03-24 23:51   ` [PATCH v3 06/16] ARM: davinci: da850: use clk->set_parent for async3 David Lechner
     [not found]     ` <1458863503-31121-7-git-send-email-david-nq/r/kbU++upp/zk7JDF2g@public.gmane.org>
2016-04-11 10:49       ` Sekhar Nori
2016-03-24 23:51   ` [PATCH v3 10/16] ARM: davinci: da8xx: Add CFGCHIPn syscon platform declaration David Lechner
2016-03-24 23:51   ` [PATCH v3 12/16] ARM: dt: da850: Add cfgchip syscon node David Lechner
2016-03-24 23:51   ` [PATCH v3 13/16] ARM: dt: da850: Add usb phy node David Lechner
2016-03-24 23:51   ` [PATCH v3 16/16] usb: musb: da8xx: Remove mach code David Lechner
2016-04-07 16:29   ` [PATCH v3 00/16] da8xx USB clocks David Lechner
     [not found]     ` <57068AF1.8050909-nq/r/kbU++upp/zk7JDF2g@public.gmane.org>
2016-04-11 11:28       ` Sekhar Nori
2016-03-24 23:51 ` [PATCH v3 14/16] usb: ohci-da8xx: Remove code that references mach David Lechner
2016-03-24 23:51 ` [PATCH v3 15/16] usb: musb: da8xx: Use devm in probe David Lechner
2016-03-31 22:21   ` Bin Liu
2016-03-31 22:28     ` David Lechner
     [not found]       ` <56FDA4A0.6080106-nq/r/kbU++upp/zk7JDF2g@public.gmane.org>
2016-04-01 14:56         ` Bin Liu
2016-04-01 10:36     ` Sergei Shtylyov

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=1458863503-31121-5-git-send-email-david@lechnology.com \
    --to=david@lechnology.com \
    --cc=David.Laight@ACULAB.COM \
    --cc=b-liu@ti.com \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=khilman@kernel.org \
    --cc=kishon@ti.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=nsekhar@ti.com \
    --cc=pawel.moll@arm.com \
    --cc=petr@barix.com \
    --cc=robh+dt@kernel.org \
    --cc=sergei.shtylyov@cogentembedded.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).