From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934240AbbCROYI (ORCPT ); Wed, 18 Mar 2015 10:24:08 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:30463 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933348AbbCROYE (ORCPT ); Wed, 18 Mar 2015 10:24:04 -0400 X-AuditID: cbfee61a-f79c06d000004e71-a2-55098a8232c5 From: Bartlomiej Zolnierkiewicz To: Krzysztof Kozlowski Cc: Kukjin Kim , Kukjin Kim , Daniel Lezcano , Tomasz Figa , Kyungmin Park , linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 2/4] ARM: EXYNOS: add code for setting/clearing boot flag Date: Wed, 18 Mar 2015 15:23:59 +0100 Message-id: <3757903.ojJ3AYU7Ml@amdc1032> User-Agent: KMail/4.8.4 (Linux/3.2.0-70-generic-pae; KDE/4.8.5; i686; ; ) In-reply-to: References: <1426683113-31209-1-git-send-email-b.zolnierkie@samsung.com> <1426683113-31209-3-git-send-email-b.zolnierkie@samsung.com> MIME-version: 1.0 Content-transfer-encoding: 7Bit Content-type: text/plain; charset=UTF-8 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrLLMWRmVeSWpSXmKPExsVy+t9jQd2mLs5Qg2m/xCzmfZa1eP3C0KJ3 wVU2i/7Hr5ktzja9YbfY9Pgaq8XlXXPYLD73HmG0mHF+H5PFql1/GB24PHbOusvusWlVJ5vH nWt72Dw2L6n36NuyitHj8ya5ALYoLpuU1JzMstQifbsEroyGC5NZCiaLV5x7/ImtgbFVqIuR g0NCwETi7dfELkZOIFNM4sK99WxdjFwcQgLTGSUmXPzEBOG0MEm8XfOGCaSKTcBKYmL7KkYQ W0TAUOLg7u1gRcwCZ5gkrjafYQNJCAsESFzq7WIFsVkEVCU+33zFDmLzCmhKTNt8A8wWFfCU 2Dn9ACPIFZwCwRLnnjtCLDvHKHHjwXKoekGJH5PvsYDYzALyEvv2T2WFsNUlJs1bxDyBUWAW krJZSMpmISlbwMi8ilE0tSC5oDgpPddQrzgxt7g0L10vOT93EyM4Ep5J7WBc2WBxiFGAg1GJ h1fiKkeoEGtiWXFl7iFGCQ5mJRHe6kbOUCHelMTKqtSi/Pii0pzU4kOM0hwsSuK8SvZtIUIC 6YklqdmpqQWpRTBZJg5OqQbGs2xtcYX1izsMnizm9xP96zdtcWNJy8Z4LfN72pH62c3BrlvY gq6IXzf8+VHzzZ2aCVOecr/8PfeVbFvJcleX30xzEyKjefT8mjfIKWnP4Pp5w15WUtft7Ptj wgk5q1fOZPTKfqK60jTm9dqHcq0L2cquWjL2dKy4cEO2Km+bn+yHZyzzhbYosRRnJBpqMRcV JwIASNRXBYACAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wednesday, March 18, 2015 02:33:54 PM Krzysztof Kozlowski wrote: > 2015-03-18 13:51 GMT+01:00 Bartlomiej Zolnierkiewicz : > > This code is needed for cpuidle (W-)AFTR mode support on Exynos3250. > > > > Cc: Daniel Lezcano > > Signed-off-by: Bartlomiej Zolnierkiewicz > > Acked-by: Kyungmin Park > > --- > > 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