|
|
@@ -206,3 +206,28 @@ void __init exynos_firmware_init(void)
|
|
|
outer_cache.configure = exynos_l2_configure;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+#define REG_CPU_STATE_ADDR (sysram_ns_base_addr + 0x28)
|
|
|
+#define BOOT_MODE_MASK 0x1f
|
|
|
+
|
|
|
+void exynos_set_boot_flag(unsigned int cpu, unsigned int mode)
|
|
|
+{
|
|
|
+ unsigned int tmp;
|
|
|
+
|
|
|
+ tmp = __raw_readl(REG_CPU_STATE_ADDR + cpu * 4);
|
|
|
+
|
|
|
+ if (mode & BOOT_MODE_MASK)
|
|
|
+ tmp &= ~BOOT_MODE_MASK;
|
|
|
+
|
|
|
+ tmp |= mode;
|
|
|
+ __raw_writel(tmp, REG_CPU_STATE_ADDR + cpu * 4);
|
|
|
+}
|
|
|
+
|
|
|
+void exynos_clear_boot_flag(unsigned int cpu, unsigned int mode)
|
|
|
+{
|
|
|
+ unsigned int tmp;
|
|
|
+
|
|
|
+ tmp = __raw_readl(REG_CPU_STATE_ADDR + cpu * 4);
|
|
|
+ tmp &= ~mode;
|
|
|
+ __raw_writel(tmp, REG_CPU_STATE_ADDR + cpu * 4);
|
|
|
+}
|