mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 07:23:14 +00:00
ARM: EXYNOS: add code for setting/clearing boot flag
This code is needed for cpuidle (W-)AFTR mode support on Exynos3250. Cc: Daniel Lezcano <daniel.lezcano@linaro.org> Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Acked-by: Kyungmin Park <kyungmin.park@samsung.com> Tested-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Kukjin Kim <kgene@kernel.org>
This commit is contained in:
parent
497ab3b30c
commit
dc1b9448d2
@ -126,6 +126,12 @@ enum {
|
||||
|
||||
void exynos_firmware_init(void);
|
||||
|
||||
/* CPU BOOT mode flag for Exynos3250 SoC bootloader */
|
||||
#define C2_STATE (1 << 3)
|
||||
|
||||
void exynos_set_boot_flag(unsigned int cpu, unsigned int mode);
|
||||
void exynos_clear_boot_flag(unsigned int cpu, unsigned int mode);
|
||||
|
||||
extern u32 exynos_get_eint_wake_mask(void);
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user