LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: David Lechner <david@lechnology.com>
To: linux-clk@vger.kernel.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Cc: Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@codeaurora.org>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>, Sekhar Nori <nsekhar@ti.com>,
	Kevin Hilman <khilman@kernel.org>,
	Bartosz Golaszewski <bgolaszewski@baylibre.com>,
	Adam Ford <aford173@gmail.com>,
	linux-kernel@vger.kernel.org,
	David Lechner <david@lechnology.com>
Subject: [PATCH v9 05/27] ARM: davinci: da830: add new clock init using common clock framework
Date: Thu, 26 Apr 2018 19:17:23 -0500	[thread overview]
Message-ID: <20180427001745.4116-6-david@lechnology.com> (raw)
In-Reply-To: <20180427001745.4116-1-david@lechnology.com>

This adds the new board-specific clock init in mach-davinci/da830.c
using the new common clock framework drivers.

The #ifdefs are needed to prevent compile errors until the entire
ARCH_DAVINCI is converted.

Also clean up the #includes since we are adding some here.

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

v9 changes:
- register PLL in da830_init_time() instead of as platform device so that we
  get the correct timer0 clock for davinci_timer_init()

v8 changes:
- none

v7 changes:
- add clock platform device declarations
- register platform devices instead of registering clocks directly
- clkdev lookup is moved to drivers/clk
- add davinci prefix to commit description

v6 changes:
- add blank lines between function calls
- include da8xx_register_cfgchip()


 arch/arm/mach-davinci/board-da830-evm.c    |  2 +
 arch/arm/mach-davinci/da830.c              | 70 ++++++++++++++++++++--
 arch/arm/mach-davinci/include/mach/da8xx.h |  1 +
 3 files changed, 67 insertions(+), 6 deletions(-)

diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
index 004f9c8de032..3973124e5f1d 100644
--- a/arch/arm/mach-davinci/board-da830-evm.c
+++ b/arch/arm/mach-davinci/board-da830-evm.c
@@ -551,6 +551,8 @@ static __init void da830_evm_init(void)
 	struct davinci_soc_info *soc_info = &davinci_soc_info;
 	int ret;
 
+	da830_register_clocks();
+
 	ret = da830_register_gpio();
 	if (ret)
 		pr_warn("%s: GPIO init failed: %d\n", __func__, ret);
diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c
index 0b17e5a22e5e..8a79e245db1f 100644
--- a/arch/arm/mach-davinci/da830.c
+++ b/arch/arm/mach-davinci/da830.c
@@ -8,23 +8,27 @@
  * is licensed "as is" without any warranty of any kind, whether express
  * or implied.
  */
+#include <linux/clk-provider.h>
+#include <linux/clk/davinci.h>
 #include <linux/gpio.h>
 #include <linux/init.h>
-#include <linux/clk.h>
 #include <linux/platform_data/gpio-davinci.h>
 
 #include <asm/mach/map.h>
 
-#include "psc.h"
-#include <mach/irqs.h>
-#include <mach/cputype.h>
 #include <mach/common.h>
-#include <mach/time.h>
+#include <mach/cputype.h>
 #include <mach/da8xx.h>
+#include <mach/irqs.h>
+#include <mach/time.h>
 
-#include "clock.h"
 #include "mux.h"
 
+#ifndef CONFIG_COMMON_CLK
+#include "clock.h"
+#include "psc.h"
+#endif
+
 /* Offsets of the 8 compare registers on the da830 */
 #define DA830_CMP12_0		0x60
 #define DA830_CMP12_1		0x64
@@ -37,6 +41,7 @@
 
 #define DA830_REF_FREQ		24000000
 
+#ifndef CONFIG_COMMON_CLK
 static struct pll_data pll0_data = {
 	.num		= 1,
 	.phys_base	= DA8XX_PLL0_BASE,
@@ -432,6 +437,7 @@ static struct clk_lookup da830_clks[] = {
 	CLK(NULL,		"rmii",		&rmii_clk),
 	CLK(NULL,		NULL,		NULL),
 };
+#endif
 
 /*
  * Device specific mux setup
@@ -1223,6 +1229,58 @@ void __init da830_init(void)
 
 void __init da830_init_time(void)
 {
+#ifdef CONFIG_COMMON_CLK
+	void __iomem *pll;
+	struct clk *clk;
+
+	clk_register_fixed_rate(NULL, "ref_clk", NULL, 0, DA830_REF_FREQ);
+
+	pll = ioremap(DA8XX_PLL0_BASE, SZ_4K);
+
+	da830_pll_init(NULL, pll, NULL);
+
+	clk = clk_get(NULL, "timer0");
+
+	davinci_timer_init(clk);
+#else
 	davinci_clk_init(da830_clks);
 	davinci_timer_init(&timerp64_0_clk);
+#endif
+}
+
+static struct resource da830_psc0_resources[] = {
+	{
+		.start	= DA8XX_PSC0_BASE,
+		.end	= DA8XX_PSC0_BASE + SZ_4K - 1,
+		.flags	= IORESOURCE_MEM,
+	},
+};
+
+static struct platform_device da830_psc0_device = {
+	.name		= "da830-psc0",
+	.id		= -1,
+	.resource	= da830_psc0_resources,
+	.num_resources	= ARRAY_SIZE(da830_psc0_resources),
+};
+
+static struct resource da830_psc1_resources[] = {
+	{
+		.start	= DA8XX_PSC1_BASE,
+		.end	= DA8XX_PSC1_BASE + SZ_4K - 1,
+		.flags	= IORESOURCE_MEM,
+	},
+};
+
+static struct platform_device da830_psc1_device = {
+	.name		= "da830-psc1",
+	.id		= -1,
+	.resource	= da830_psc1_resources,
+	.num_resources	= ARRAY_SIZE(da830_psc1_resources),
+};
+
+void __init da830_register_clocks(void)
+{
+	/* PLL is registered in da830_init_time() */
+	platform_device_register(&da830_psc0_device);
+	platform_device_register(&da830_psc1_device);
 }
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h
index 9fd6d0125762..64861ac6a9d4 100644
--- a/arch/arm/mach-davinci/include/mach/da8xx.h
+++ b/arch/arm/mach-davinci/include/mach/da8xx.h
@@ -89,6 +89,7 @@ extern unsigned int da850_max_speed;
 
 void da830_init(void);
 void da830_init_time(void);
+void da830_register_clocks(void);
 
 void da850_init(void);
 void da850_init_time(void);
-- 
2.17.0

  parent reply	other threads:[~2018-04-27  0:25 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-27  0:17 [PATCH v9 00/27] ARM: davinci: convert to common clock framework​ David Lechner
2018-04-27  0:17 ` [PATCH v9 01/27] clk: davinci: pll: allow dev == NULL David Lechner
2018-05-01 13:27   ` Sekhar Nori
2018-05-02  1:44     ` David Lechner
2018-04-27  0:17 ` [PATCH v9 02/27] clk: davinci: da850-pll: change PLL0 to CLK_OF_DECLARE David Lechner
2018-05-01 13:46   ` Sekhar Nori
2018-05-02  1:46     ` David Lechner
2018-04-27  0:17 ` [PATCH v9 03/27] clk: davinci: psc: allow for dev == NULL David Lechner
2018-05-01 14:02   ` Sekhar Nori
2018-05-02  1:49     ` David Lechner
2018-05-02 15:08       ` Sekhar Nori
2018-04-27  0:17 ` [PATCH v9 04/27] ARM: davinci: pass clock as parameter to davinci_timer_init() David Lechner
2018-05-01 14:09   ` Sekhar Nori
2018-04-27  0:17 ` David Lechner [this message]
2018-05-01 14:13   ` [PATCH v9 05/27] ARM: davinci: da830: add new clock init using common clock framework Sekhar Nori
2018-04-27  0:17 ` [PATCH v9 06/27] ARM: davinci: da850: " David Lechner
2018-05-01 14:17   ` Sekhar Nori
2018-04-27  0:17 ` [PATCH v9 07/27] ARM: davinci: dm355: " David Lechner
2018-05-03 15:34   ` Sekhar Nori
2018-05-03 15:44     ` David Lechner
2018-05-04 10:01       ` Sekhar Nori
2018-05-04 14:26         ` David Lechner
2018-04-27  0:17 ` [PATCH v9 08/27] ARM: davinci: dm365: " David Lechner
2018-04-27  0:17 ` [PATCH v9 09/27] ARM: davinci: dm644x: " David Lechner
2018-05-03 13:18   ` Sekhar Nori
2018-04-27  0:17 ` [PATCH v9 10/27] ARM: davinci: dm646x: " David Lechner
2018-04-27  0:17 ` [PATCH v9 11/27] ARM: davinci: da8xx: add new USB PHY " David Lechner
2018-04-27  0:17 ` [PATCH v9 12/27] ARM: davinci: da8xx: add new sata_refclk " David Lechner
2018-04-27  0:17 ` [PATCH v9 13/27] ARM: davinci: remove CONFIG_DAVINCI_RESET_CLOCKS David Lechner
2018-04-27  0:17 ` [PATCH v9 14/27] ARM: davinci_all_defconfig: " David Lechner
2018-04-27  0:17 ` [PATCH v9 15/27] ARM: davinci: switch to common clock framework David Lechner
2018-04-27  0:17 ` [PATCH v9 16/27] ARM: davinci: da830: Remove legacy clock init David Lechner
2018-04-27  0:17 ` [PATCH v9 17/27] ARM: davinci: da850: " David Lechner
2018-04-27  0:17 ` [PATCH v9 18/27] ARM: davinci: dm355: " David Lechner
2018-04-27  0:17 ` [PATCH v9 19/27] ARM: davinci: dm365: " David Lechner
2018-04-27  0:17 ` [PATCH v9 20/27] ARM: davinci: dm644x: " David Lechner
2018-04-27  0:17 ` [PATCH v9 21/27] ARM: davinci: dm646x: " David Lechner
2018-04-27  0:17 ` [PATCH v9 22/27] ARM: davinci: da8xx: Remove legacy USB and SATA " David Lechner
2018-04-27  0:17 ` [PATCH v9 23/27] ARM: davinci: remove legacy clocks David Lechner
2018-04-27  0:17 ` [PATCH v9 24/27] dt-bindings: timer: new bindings for TI DaVinci timer David Lechner
2018-04-27 14:05   ` Rob Herring
2018-05-02  1:52     ` David Lechner
2018-05-02  5:03       ` Sekhar Nori
2018-04-27  0:17 ` [PATCH v9 25/27] ARM: davinci: add device tree support to timer David Lechner
2018-04-27  0:17 ` [PATCH v9 26/27] ARM: davinci: da8xx-dt: switch to device tree clocks David Lechner
2018-04-27  9:53   ` Bartosz Golaszewski
2018-04-27  0:17 ` [PATCH v9 27/27] ARM: dts: da850: Add clocks David Lechner
2018-04-27 12:04 ` [PATCH v9 00/27] ARM: davinci: convert to common clock framework​ Bartosz Golaszewski
2018-04-30 20:35 ` Bartosz Golaszewski
2018-05-01 14:45 ` 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=20180427001745.4116-6-david@lechnology.com \
    --to=david@lechnology.com \
    --cc=aford173@gmail.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=devicetree@vger.kernel.org \
    --cc=khilman@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mturquette@baylibre.com \
    --cc=nsekhar@ti.com \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@codeaurora.org \
    --subject='Re: [PATCH v9 05/27] ARM: davinci: da830: add new clock init using common clock framework' \
    /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

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).