Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[sfrench/cifs-2.6.git] / arch / arm / mach-exynos / exynos.c
index 36c37444485a88e9487878c281f31ac646a5aba3..700763e07083d547296461c26293f8469573509d 100644 (file)
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
 
-#include <mach/map.h>
-#include <plat/cpu.h>
-
 #include "common.h"
 
+#define S3C_ADDR_BASE  0xF6000000
+#define S3C_ADDR(x)    ((void __iomem __force *)S3C_ADDR_BASE + (x))
+#define S5P_VA_CHIPID  S3C_ADDR(0x02000000)
+
 static struct platform_device exynos_cpuidle = {
        .name              = "exynos_cpuidle",
 #ifdef CONFIG_ARM_EXYNOS_CPUIDLE
@@ -36,6 +37,14 @@ void __iomem *sysram_base_addr __ro_after_init;
 phys_addr_t sysram_base_phys __ro_after_init;
 void __iomem *sysram_ns_base_addr __ro_after_init;
 
+unsigned long exynos_cpu_id;
+static unsigned int exynos_cpu_rev;
+
+unsigned int exynos_rev(void)
+{
+       return exynos_cpu_rev;
+}
+
 void __init exynos_sysram_init(void)
 {
        struct device_node *node;
@@ -86,7 +95,11 @@ static void __init exynos_init_io(void)
        of_scan_flat_dt(exynos_fdt_map_chipid, NULL);
 
        /* detect cpu id and rev. */
-       s5p_init_cpu(S5P_VA_CHIPID);
+       exynos_cpu_id = readl_relaxed(S5P_VA_CHIPID);
+       exynos_cpu_rev = exynos_cpu_id & 0xFF;
+
+       pr_info("Samsung CPU ID: 0x%08lx\n", exynos_cpu_id);
+
 }
 
 /*
@@ -193,8 +206,8 @@ static void __init exynos_dt_fixup(void)
 }
 
 DT_MACHINE_START(EXYNOS_DT, "Samsung Exynos (Flattened Device Tree)")
-       .l2c_aux_val    = 0x3c400000,
-       .l2c_aux_mask   = 0xc20fffff,
+       .l2c_aux_val    = 0x38400000,
+       .l2c_aux_mask   = 0xc60fffff,
        .smp            = smp_ops(exynos_smp_ops),
        .map_io         = exynos_init_io,
        .init_early     = exynos_firmware_init,