ARM: EXYNOS: allow legacy board support to specify xxti and xusbxti clock speed
authorThomas Abraham <thomas.abraham@linaro.org>
Sat, 9 Mar 2013 08:03:33 +0000 (17:03 +0900)
committerKukjin Kim <kgene.kim@samsung.com>
Mon, 25 Mar 2013 09:17:13 +0000 (18:17 +0900)
The clock speed of xxti and xusbxti clocks depends on the oscillator
used on the board to generate these clocks. For non-dt platforms,
allow the board support for those platforms to set the clock frequency
of xxti and xusbxti clocks.

Signed-off-by: Thomas Abraham <thomas.abraham@linaro.org>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
arch/arm/mach-exynos/common.c
arch/arm/mach-exynos/common.h
arch/arm/mach-exynos/mach-nuri.c
arch/arm/mach-exynos/mach-origen.c
arch/arm/mach-exynos/mach-smdkv310.c
arch/arm/mach-exynos/mach-universal_c210.c

index 50331790abc8dce638d3fec7543bea748339814d..64e56492bfde4e5c98668a135ecfa99738719a40 100644 (file)
@@ -69,6 +69,8 @@ static void exynos5440_map_io(void);
 static void exynos4_init_uarts(struct s3c2410_uartcfg *cfg, int no);
 static int exynos_init(void);
 
+unsigned long xxti_f = 0, xusbxti_f = 0;
+
 static struct cpu_table cpu_ids[] __initdata = {
        {
                .idcode         = EXYNOS4210_CPU_ID,
@@ -407,6 +409,7 @@ void __init exynos_init_time(void)
        } else {
                /* todo: remove after migrating legacy E4 platforms to dt */
                exynos4_clk_init(NULL);
+               exynos4_clk_register_fixed_ext(xxti_f, xusbxti_f);
                mct_init();
        }
 }
index ec4098e984b8419830d34744fc04ba49eeaea5b5..cb89ab886950a21bb8d505f465b1a6102006fbe4 100644 (file)
@@ -16,6 +16,7 @@
 
 extern void mct_init(void);
 void exynos_init_time(void);
+extern unsigned long xxti_f, xusbxti_f;
 
 struct map_desc;
 void exynos_init_io(struct map_desc *mach_desc, int size);
index 0555e6d42d5d9d6febfee7f30519f4a8f5692a2f..0c10852423c3533420db18ddb805fd8be67eb169 100644 (file)
@@ -1331,6 +1331,8 @@ static void __init nuri_map_io(void)
 {
        exynos_init_io(NULL, 0);
        s3c24xx_init_uarts(nuri_uartcfgs, ARRAY_SIZE(nuri_uartcfgs));
+       xxti_f = 0;
+       xusbxti_f = 24000000;
 }
 
 static void __init nuri_reserve(void)
index e42e61ae1e1c325bed98cf3a0be3f42cbe3a9a46..a9aa5c034b2303429de31f0ca54d250720eee433 100644 (file)
@@ -755,6 +755,8 @@ static void __init origen_map_io(void)
 {
        exynos_init_io(NULL, 0);
        s3c24xx_init_uarts(origen_uartcfgs, ARRAY_SIZE(origen_uartcfgs));
+       xxti_f = 0;
+       xusbxti_f = 24000000;
 }
 
 static void __init origen_power_init(void)
index 4bf21988d7b33684fa09eefb1c5acc4afd4397ef..75eca7d4e12849a8664253e55c97851857b20035 100644 (file)
@@ -372,6 +372,8 @@ static void __init smdkv310_map_io(void)
 {
        exynos_init_io(NULL, 0);
        s3c24xx_init_uarts(smdkv310_uartcfgs, ARRAY_SIZE(smdkv310_uartcfgs));
+       xxti_f = 12000000;
+       xusbxti_f = 24000000;
 }
 
 static void __init smdkv310_reserve(void)
index 4e6e8cef5cbf8a67c67488570586948d5405c99a..72f08fd7cfa94f657b020c246036eaa6b4b722d5 100644 (file)
@@ -1094,6 +1094,8 @@ static void __init universal_map_io(void)
        exynos_init_io(NULL, 0);
        s3c24xx_init_uarts(universal_uartcfgs, ARRAY_SIZE(universal_uartcfgs));
        samsung_set_timer_source(SAMSUNG_PWM2, SAMSUNG_PWM4);
+       xxti_f = 0;
+       xusbxti_f = 24000000;
 }
 
 static void s5p_tv_setup(void)