Thread (24 messages) 24 messages, 3 authors, 2012-11-15

[PATCH v3 04/11] ARM: Exynos4: Migrate clock support to common clock framework

From: Thomas Abraham <hidden>
Date: 2012-11-15 09:13:21
Also in: linux-devicetree, linux-samsung-soc

On 15 November 2012 05:01, Tomasz Figa [off-list ref] wrote:
On Thursday 15 of November 2012 03:37:26 Thomas Abraham wrote:
quoted
Remove Samsung specific clock support in Exynos4 and migrate to use
common clock framework.

Cc: Kukjin Kim <redacted>
Signed-off-by: Thomas Abraham <redacted>
---
 arch/arm/mach-exynos/Kconfig               |    1 +
 arch/arm/mach-exynos/Makefile              |    3 -
 arch/arm/mach-exynos/clock-exynos4.c       | 1602
---------------------------- arch/arm/mach-exynos/clock-exynos4.h
|   35 -
 arch/arm/mach-exynos/clock-exynos4210.c    |  188 ----
 arch/arm/mach-exynos/clock-exynos4212.c    |  192 ----
 arch/arm/mach-exynos/common.c              |   22 +-
 arch/arm/mach-exynos/common.h              |    3 +
 arch/arm/mach-exynos/mach-armlex4210.c     |    1 -
 arch/arm/mach-exynos/mach-exynos4-dt.c     |    1 -
 arch/arm/mach-exynos/mach-nuri.c           |    1 -
 arch/arm/mach-exynos/mach-origen.c         |    1 -
 arch/arm/mach-exynos/mach-smdk4x12.c       |    1 -
 arch/arm/mach-exynos/mach-smdkv310.c       |    1 -
 arch/arm/mach-exynos/mach-universal_c210.c |    1 -
 arch/arm/mach-exynos/mct.c                 |   19 +
 arch/arm/plat-samsung/Kconfig              |    4 +-
 17 files changed, 27 insertions(+), 2049 deletions(-)
 delete mode 100644 arch/arm/mach-exynos/clock-exynos4.c
 delete mode 100644 arch/arm/mach-exynos/clock-exynos4.h
 delete mode 100644 arch/arm/mach-exynos/clock-exynos4210.c
 delete mode 100644 arch/arm/mach-exynos/clock-exynos4212.c
[snip]
quoted
diff --git a/arch/arm/mach-exynos/mct.c b/arch/arm/mach-exynos/mct.c
index f7792b8..c2e806c 100644
--- a/arch/arm/mach-exynos/mct.c
+++ b/arch/arm/mach-exynos/mct.c
@@ -31,6 +31,7 @@
 #include <mach/map.h>
 #include <mach/irqs.h>
 #include <asm/mach/time.h>
+#include "common.h"

 #define EXYNOS4_MCTREG(x)            (x)
 #define EXYNOS4_MCT_G_CNT_L          EXYNOS4_MCTREG(0x100)
@@ -517,6 +518,24 @@ static void __init exynos4_timer_init(void)
      struct device_node *np;
      u32 nr_irqs, i;

+#ifdef CONFIG_COMMON_CLK
+     /*
+      * Clock lookup should be functional now since the MCT controller
driver +       * looks up clocks. So the clock initialization is initiated
here. +        */
+     if (of_have_populated_dt()) {
+             if (of_machine_is_compatible("samsung,exynos4210") ||
+                      of_machine_is_compatible("samsung,exynos4212") ||
+                      of_machine_is_compatible("samsung,exynos4412"))
+                     exynos4_clk_init();
+     } else {
+             if (soc_is_exynos4210() || soc_is_exynos4212() ||
+                             soc_is_exynos4412()) {
+                     exynos4_clk_init();
+             }
+     }
+#endif
+
I don't like the idea of initializing the clocks from timer
initialization. What about some platforms where MCT isn't used? It is also
far from being elegant.
Very true, I did also prefer not do this. But, clock lookup should be
functional atleast by the time mct initialization begins. So I tried
few options such as adding .early_init_call callback in MACHINE_DESC
which then can call exynos4_clk_init, but that did not help since
mem_init isn't complete by then and memory allocation failed during
clock registration. Other methods also did not help much. If you know
of a solution to get around this, could you please let me know.

Thanks,
Thomas.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help