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

Thomas Abraham thomas.abraham at linaro.org
Thu Nov 15 20:13:21 EST 2012


On 15 November 2012 05:01, Tomasz Figa <tomasz.figa at gmail.com> wrote:
> On Thursday 15 of November 2012 03:37:26 Thomas Abraham wrote:
>> Remove Samsung specific clock support in Exynos4 and migrate to use
>> common clock framework.
>>
>> Cc: Kukjin Kim <kgene.kim at samsung.com>
>> Signed-off-by: Thomas Abraham <thomas.abraham at linaro.org>
>> ---
>>  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]
>> 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.


More information about the devicetree-discuss mailing list