On Wednesday, March 18, 2015 02:33:54 PM Krzysztof Kozlowski wrote: > 2015-03-18 13:51 GMT+01:00 Bartlomiej Zolnierkiewicz <b.zolnierkie@xxxxxxxxxxx>: > > This code is needed for cpuidle (W-)AFTR mode support on Exynos3250. > > > > Cc: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> > > Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@xxxxxxxxxxx> > > Acked-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> > > --- > > arch/arm/mach-exynos/common.h | 6 ++++++ > > arch/arm/mach-exynos/exynos.c | 25 +++++++++++++++++++++++++ > > 2 files changed, 31 insertions(+) > > > > diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h > > index f70eca7..87bf1f3 100644 > > --- a/arch/arm/mach-exynos/common.h > > +++ b/arch/arm/mach-exynos/common.h > > @@ -119,6 +119,12 @@ extern void __iomem *sysram_base_addr; > > extern void __iomem *pmu_base_addr; > > void exynos_sysram_init(void); > > > > +/* CPU BOOT mode flag */ > > +#define C2_STATE (1 << 3) > > Is this "C2_STATE" like ACPI C2 state? It looks specific to Exynos3250 > boot loader so maybe describe its real purpose? According to my knowledge it is not like ACPI C2 but my knowledge is limited since this state is not documented anywhere. I can add a comment about it being currently limited to Exynos3250 though. > > + > > +void exynos_set_boot_flag(unsigned int cpu, unsigned int mode); > > +void exynos_clear_boot_flag(unsigned int cpu, unsigned int mode); > > + > > enum { > > FW_DO_IDLE_SLEEP, > > FW_DO_IDLE_AFTR, > > diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c > > index 4031a96..90ed2e5 100644 > > --- a/arch/arm/mach-exynos/exynos.c > > +++ b/arch/arm/mach-exynos/exynos.c > > @@ -117,6 +117,31 @@ static void __init exynos_init_late(void) > > exynos_pm_init(); > > } > > > > +#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); > > +} > > + > > Shouldn't these to functions be put in firmware.c? The > exynos_set_cpu_boot_addr() is there already. It would be consistent to > have them in one place. I can move it to firmware.c if this is desired. Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html