All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] MIPS: TXx9: Common Clock Framework Conversion
@ 2016-09-11  8:59 Geert Uytterhoeven
  2016-09-11  8:59 ` [PATCH v2 1/2] watchdog: txx9wdt: Add missing clock (un)prepare calls for CCF Geert Uytterhoeven
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Geert Uytterhoeven @ 2016-09-11  8:59 UTC (permalink / raw)
  To: Ralf Baechle, Atsushi Nemoto, Wim Van Sebroeck
  Cc: Guenter Roeck, linux-clk, linux-mips, linux-watchdog,
	Geert Uytterhoeven

	Hi Ralf, Nemoto-san, Wim,

This patch series converts the Toshiba TXx9 platforms from their own
custom minimal clock implementation to the Common Clock Framework.

  - Patch 1 adds missing clock (un)prepare calls to the TXx9 watchdog
    driver,
  - Patch 2 replaces the custom clock implementation by a CCF-based one,
    providing a minimal set of clocks.

This has been tested with the watchdog on RBTX4927.

Changes since v1:
  - Dropped "spi: spi-txx9: Add missing clock (un)prepare calls for
    CCF", which has been accepted in spi/for-next,
  - Protect the TX4938_REV_PCODE() check by #ifdef CONFIG_CPU_TX49XX,
  - Use new clk_hw-centric clock registration API,
  - Add Reviewed-by.

Dependencies:
  - Patch 1 can be applied independently,
  - Patch 2 depends on patch 1 and on "spi: spi-txx9: Add missing clock
    (un)prepare calls for CCF" in spi/for-next,
  - The error path in patch 2 depends on "clkdev: Detect errors in
    clk_hw_register_clkdev() for mass registration", but this is less
    critical.

Wim: Can you please appply patch 1 directly, so we can get at least the
hard dependencies in v4.9?

Thanks!

Geert Uytterhoeven (2):
  watchdog: txx9wdt: Add missing clock (un)prepare calls for CCF
  MIPS: TXx9: Convert to Common Clock Framework

 arch/mips/txx9/Kconfig         |  2 +-
 arch/mips/txx9/generic/setup.c | 70 +++++++++++++++++++++---------------------
 drivers/watchdog/txx9wdt.c     |  6 ++--
 3 files changed, 39 insertions(+), 39 deletions(-)

-- 
1.9.1

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/2] watchdog: txx9wdt: Add missing clock (un)prepare calls for CCF
  2016-09-11  8:59 [PATCH v2 0/2] MIPS: TXx9: Common Clock Framework Conversion Geert Uytterhoeven
@ 2016-09-11  8:59 ` Geert Uytterhoeven
  2016-10-08 14:13   ` Wim Van Sebroeck
  2016-09-11  8:59 ` [PATCH v2 2/2] MIPS: TXx9: Convert to Common Clock Framework Geert Uytterhoeven
  2016-09-11 14:22 ` [PATCH v2 0/2] MIPS: TXx9: Common Clock Framework Conversion Guenter Roeck
  2 siblings, 1 reply; 7+ messages in thread
From: Geert Uytterhoeven @ 2016-09-11  8:59 UTC (permalink / raw)
  To: Ralf Baechle, Atsushi Nemoto, Wim Van Sebroeck
  Cc: Guenter Roeck, linux-clk, linux-mips, linux-watchdog,
	Geert Uytterhoeven

While the custom minimal TXx9 clock implementation doesn't need or use
clock (un)prepare calls (they are dummies if !CONFIG_HAVE_CLK_PREPARE),
they are mandatory when using the Common Clock Framework.

Hence add them, to prepare for the advent of CCF.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
---
Tested on RBTX4927.

v2:
  - Add Reviewed-by.
---
 drivers/watchdog/txx9wdt.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/watchdog/txx9wdt.c b/drivers/watchdog/txx9wdt.c
index c2da880292bc2f32..6f7a9deb27d05d25 100644
--- a/drivers/watchdog/txx9wdt.c
+++ b/drivers/watchdog/txx9wdt.c
@@ -112,7 +112,7 @@ static int __init txx9wdt_probe(struct platform_device *dev)
 		txx9_imclk = NULL;
 		goto exit;
 	}
-	ret = clk_enable(txx9_imclk);
+	ret = clk_prepare_enable(txx9_imclk);
 	if (ret) {
 		clk_put(txx9_imclk);
 		txx9_imclk = NULL;
@@ -144,7 +144,7 @@ static int __init txx9wdt_probe(struct platform_device *dev)
 	return 0;
 exit:
 	if (txx9_imclk) {
-		clk_disable(txx9_imclk);
+		clk_disable_unprepare(txx9_imclk);
 		clk_put(txx9_imclk);
 	}
 	return ret;
@@ -153,7 +153,7 @@ exit:
 static int __exit txx9wdt_remove(struct platform_device *dev)
 {
 	watchdog_unregister_device(&txx9wdt);
-	clk_disable(txx9_imclk);
+	clk_disable_unprepare(txx9_imclk);
 	clk_put(txx9_imclk);
 	return 0;
 }
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/2] MIPS: TXx9: Convert to Common Clock Framework
  2016-09-11  8:59 [PATCH v2 0/2] MIPS: TXx9: Common Clock Framework Conversion Geert Uytterhoeven
  2016-09-11  8:59 ` [PATCH v2 1/2] watchdog: txx9wdt: Add missing clock (un)prepare calls for CCF Geert Uytterhoeven
@ 2016-09-11  8:59 ` Geert Uytterhoeven
  2016-09-12 22:32   ` Stephen Boyd
  2016-09-13 15:00   ` Atsushi Nemoto
  2016-09-11 14:22 ` [PATCH v2 0/2] MIPS: TXx9: Common Clock Framework Conversion Guenter Roeck
  2 siblings, 2 replies; 7+ messages in thread
From: Geert Uytterhoeven @ 2016-09-11  8:59 UTC (permalink / raw)
  To: Ralf Baechle, Atsushi Nemoto, Wim Van Sebroeck
  Cc: Guenter Roeck, linux-clk, linux-mips, linux-watchdog,
	Geert Uytterhoeven

Replace the custom minimal clock implementation for Toshiba TXx9 by a
basic implementation using the Common Clock Framework.

The only clocks that are provided are those needed by TXx9-specific
drivers ("imbus" and "spi" (TX4938 only)), and their common parent
clock "gbus". Other clocks can be added when needed.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
Tested on RBTX4927.

v2:
  - Protect the TX4938_REV_PCODE() check by #ifdef CONFIG_CPU_TX49XX,
  - Use new clk_hw-centric clock registration API.
---
 arch/mips/txx9/Kconfig         |  2 +-
 arch/mips/txx9/generic/setup.c | 70 +++++++++++++++++++++---------------------
 2 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/arch/mips/txx9/Kconfig b/arch/mips/txx9/Kconfig
index 8c337d60f790db9f..42923478d45ca363 100644
--- a/arch/mips/txx9/Kconfig
+++ b/arch/mips/txx9/Kconfig
@@ -20,7 +20,7 @@ config MACH_TXX9
 	select SYS_SUPPORTS_32BIT_KERNEL
 	select SYS_SUPPORTS_LITTLE_ENDIAN
 	select SYS_SUPPORTS_BIG_ENDIAN
-	select HAVE_CLK
+	select COMMON_CLK
 
 config TOSHIBA_JMR3927
 	bool "Toshiba JMR-TX3927 board"
diff --git a/arch/mips/txx9/generic/setup.c b/arch/mips/txx9/generic/setup.c
index ada92db92f87d91a..a1d98b5c8fd67576 100644
--- a/arch/mips/txx9/generic/setup.c
+++ b/arch/mips/txx9/generic/setup.c
@@ -15,7 +15,8 @@
 #include <linux/interrupt.h>
 #include <linux/string.h>
 #include <linux/module.h>
-#include <linux/clk.h>
+#include <linux/clk-provider.h>
+#include <linux/clkdev.h>
 #include <linux/err.h>
 #include <linux/gpio/driver.h>
 #include <linux/platform_device.h>
@@ -83,40 +84,6 @@ int txx9_ccfg_toeon __initdata;
 int txx9_ccfg_toeon __initdata = 1;
 #endif
 
-/* Minimum CLK support */
-
-struct clk *clk_get(struct device *dev, const char *id)
-{
-	if (!strcmp(id, "spi-baseclk"))
-		return (struct clk *)((unsigned long)txx9_gbus_clock / 2 / 2);
-	if (!strcmp(id, "imbus_clk"))
-		return (struct clk *)((unsigned long)txx9_gbus_clock / 2);
-	return ERR_PTR(-ENOENT);
-}
-EXPORT_SYMBOL(clk_get);
-
-int clk_enable(struct clk *clk)
-{
-	return 0;
-}
-EXPORT_SYMBOL(clk_enable);
-
-void clk_disable(struct clk *clk)
-{
-}
-EXPORT_SYMBOL(clk_disable);
-
-unsigned long clk_get_rate(struct clk *clk)
-{
-	return (unsigned long)clk;
-}
-EXPORT_SYMBOL(clk_get_rate);
-
-void clk_put(struct clk *clk)
-{
-}
-EXPORT_SYMBOL(clk_put);
-
 #define BOARD_VEC(board)	extern struct txx9_board_vec board;
 #include <asm/txx9/boards.h>
 #undef BOARD_VEC
@@ -560,8 +527,41 @@ void __init plat_time_init(void)
 	txx9_board_vec->time_init();
 }
 
+static void txx9_clk_init(void)
+{
+	struct clk_hw *hw;
+	int error;
+
+	hw = clk_hw_register_fixed_rate(NULL, "gbus", NULL, 0, txx9_gbus_clock);
+	if (IS_ERR(hw)) {
+		error = PTR_ERR(hw);
+		goto fail;
+	}
+
+	hw = clk_hw_register_fixed_factor(NULL, "imbus", "gbus", 0, 1, 2);
+	error = clk_hw_register_clkdev(hw, "imbus_clk", NULL);
+	if (error)
+		goto fail;
+
+#ifdef CONFIG_CPU_TX49XX
+	if (TX4938_REV_PCODE() == 0x4938) {
+		hw = clk_hw_register_fixed_factor(NULL, "spi", "gbus", 0, 1, 4);
+		error = clk_hw_register_clkdev(hw, "spi-baseclk", NULL);
+		if (error)
+			goto fail;
+	}
+#endif
+
+	return;
+
+fail:
+	pr_err("Failed to register clocks: %d\n", error);
+}
+
 static int __init _txx9_arch_init(void)
 {
+	txx9_clk_init();
+
 	if (txx9_board_vec->arch_init)
 		txx9_board_vec->arch_init();
 	return 0;
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 0/2] MIPS: TXx9: Common Clock Framework Conversion
  2016-09-11  8:59 [PATCH v2 0/2] MIPS: TXx9: Common Clock Framework Conversion Geert Uytterhoeven
  2016-09-11  8:59 ` [PATCH v2 1/2] watchdog: txx9wdt: Add missing clock (un)prepare calls for CCF Geert Uytterhoeven
  2016-09-11  8:59 ` [PATCH v2 2/2] MIPS: TXx9: Convert to Common Clock Framework Geert Uytterhoeven
@ 2016-09-11 14:22 ` Guenter Roeck
  2 siblings, 0 replies; 7+ messages in thread
From: Guenter Roeck @ 2016-09-11 14:22 UTC (permalink / raw)
  To: Geert Uytterhoeven, Ralf Baechle, Atsushi Nemoto,
	Wim Van Sebroeck
  Cc: linux-clk, linux-mips, linux-watchdog

On 09/11/2016 01:59 AM, Geert Uytterhoeven wrote:
> 	Hi Ralf, Nemoto-san, Wim,
>
> This patch series converts the Toshiba TXx9 platforms from their own
> custom minimal clock implementation to the Common Clock Framework.
>
>   - Patch 1 adds missing clock (un)prepare calls to the TXx9 watchdog
>     driver,
>   - Patch 2 replaces the custom clock implementation by a CCF-based one,
>     providing a minimal set of clocks.
>
> This has been tested with the watchdog on RBTX4927.
>
> Changes since v1:
>   - Dropped "spi: spi-txx9: Add missing clock (un)prepare calls for
>     CCF", which has been accepted in spi/for-next,
>   - Protect the TX4938_REV_PCODE() check by #ifdef CONFIG_CPU_TX49XX,
>   - Use new clk_hw-centric clock registration API,
>   - Add Reviewed-by.
>
> Dependencies:
>   - Patch 1 can be applied independently,
>   - Patch 2 depends on patch 1 and on "spi: spi-txx9: Add missing clock
>     (un)prepare calls for CCF" in spi/for-next,
>   - The error path in patch 2 depends on "clkdev: Detect errors in
>     clk_hw_register_clkdev() for mass registration", but this is less
>     critical.
>
> Wim: Can you please appply patch 1 directly, so we can get at least the
> hard dependencies in v4.9?
>

It is in my watchdog-next branch, and it has my Reviewed-by:, which
normally means that Wim will apply it.

Thanks,
Guenter


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] MIPS: TXx9: Convert to Common Clock Framework
  2016-09-11  8:59 ` [PATCH v2 2/2] MIPS: TXx9: Convert to Common Clock Framework Geert Uytterhoeven
@ 2016-09-12 22:32   ` Stephen Boyd
  2016-09-13 15:00   ` Atsushi Nemoto
  1 sibling, 0 replies; 7+ messages in thread
From: Stephen Boyd @ 2016-09-12 22:32 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Ralf Baechle, Atsushi Nemoto, Wim Van Sebroeck, Guenter Roeck,
	linux-clk, linux-mips, linux-watchdog

On 09/11, Geert Uytterhoeven wrote:
> Replace the custom minimal clock implementation for Toshiba TXx9 by a
> basic implementation using the Common Clock Framework.
> 
> The only clocks that are provided are those needed by TXx9-specific
> drivers ("imbus" and "spi" (TX4938 only)), and their common parent
> clock "gbus". Other clocks can be added when needed.
> 
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---

Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] MIPS: TXx9: Convert to Common Clock Framework
  2016-09-11  8:59 ` [PATCH v2 2/2] MIPS: TXx9: Convert to Common Clock Framework Geert Uytterhoeven
  2016-09-12 22:32   ` Stephen Boyd
@ 2016-09-13 15:00   ` Atsushi Nemoto
  1 sibling, 0 replies; 7+ messages in thread
From: Atsushi Nemoto @ 2016-09-13 15:00 UTC (permalink / raw)
  To: geert; +Cc: ralf, wim, linux, linux-clk, linux-mips, linux-watchdog

On Sun, 11 Sep 2016 10:59:58 +0200, Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> Replace the custom minimal clock implementation for Toshiba TXx9 by a
> basic implementation using the Common Clock Framework.
> 
> The only clocks that are provided are those needed by TXx9-specific
> drivers ("imbus" and "spi" (TX4938 only)), and their common parent
> clock "gbus". Other clocks can be added when needed.
> 
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
> Tested on RBTX4927.
> 
> v2:
>   - Protect the TX4938_REV_PCODE() check by #ifdef CONFIG_CPU_TX49XX,
>   - Use new clk_hw-centric clock registration API.

Thank you for updated patch.

Reviewed-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>

---
Atsushi Nemoto

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/2] watchdog: txx9wdt: Add missing clock (un)prepare calls for CCF
  2016-09-11  8:59 ` [PATCH v2 1/2] watchdog: txx9wdt: Add missing clock (un)prepare calls for CCF Geert Uytterhoeven
@ 2016-10-08 14:13   ` Wim Van Sebroeck
  0 siblings, 0 replies; 7+ messages in thread
From: Wim Van Sebroeck @ 2016-10-08 14:13 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Ralf Baechle, Atsushi Nemoto, Guenter Roeck, linux-clk,
	linux-mips, linux-watchdog

Hi Geert,

> While the custom minimal TXx9 clock implementation doesn't need or use
> clock (un)prepare calls (they are dummies if !CONFIG_HAVE_CLK_PREPARE),
> they are mandatory when using the Common Clock Framework.
> 
> Hence add them, to prepare for the advent of CCF.
> 
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> Reviewed-by: Guenter Roeck <linux@roeck-us.net>

This patch was added to linux-watchdog-next almost 2 weeks ago.

Kind regards,
Wim.


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-10-08 14:29 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-11  8:59 [PATCH v2 0/2] MIPS: TXx9: Common Clock Framework Conversion Geert Uytterhoeven
2016-09-11  8:59 ` [PATCH v2 1/2] watchdog: txx9wdt: Add missing clock (un)prepare calls for CCF Geert Uytterhoeven
2016-10-08 14:13   ` Wim Van Sebroeck
2016-09-11  8:59 ` [PATCH v2 2/2] MIPS: TXx9: Convert to Common Clock Framework Geert Uytterhoeven
2016-09-12 22:32   ` Stephen Boyd
2016-09-13 15:00   ` Atsushi Nemoto
2016-09-11 14:22 ` [PATCH v2 0/2] MIPS: TXx9: Common Clock Framework Conversion Guenter Roeck

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.