[PATCH 1/2] ARM: EXYNOS: Support Suspend-to-RAM on EXYNOS5420

sunil joshi
2013-12-20T10:26:38Z

Hi Abhilash,
I saw another patch in chrome tree ..by Andrew Bresticker
which may be relevant here ..

Just wondering if you missed adding this ? or this is not needed ?
You did not face any issue in getting core to suspend ?

------------------------------------------------------------------------------------------
commit 95402d816b9f1a05ce633f7ff64b4c939c142482
Author: Andrew Bresticker <abrestic@chromium.org>
Date: Mon Jul 15 13:14:36 2013 -0700

arm: exynos: disable all interrupts on Exynos5420 before suspend

Disable all interrupts from the GIC before entering suspend on
Exynos5420 as is done on Exynos5250. If interrupts are enabled, we
may receive an interrupt after entering WFI but before the PMU has
suspended the system, causing suspend to fail.

BUG=chrome-os-partner:20523
TEST=Run suspend_stress_test on Pit and observe that entering suspend
no longer occasionally fails with the "Failed to suspend the system"
error in exynos_cpu_suspend().

Change-Id: Ia2d963191f4e5485beb295b28f128f2ce256f987
Signed-off-by: Andrew Bresticker <abrestic@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61948
Reviewed-by: Simon Glass <sjg@chromium.org>

diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c
index 537051d..9fdb8bc 100644
--- a/arch/arm/mach-exynos/pm.c
+++ b/arch/arm/mach-exynos/pm.c
@@ -126,7 +126,7 @@ static int exynos_cpu_suspend(unsigned long arg)
* Disable all interrupts. eints will still be active during
* suspend so its ok to mask everything here
*/
- if (soc_is_exynos5250())
+ if (soc_is_exynos5250() || soc_is_exynos5420())
__raw_writel(0x0, S5P_VA_GIC_DIST + GIC_DIST_CTRL);

On Tue, Dec 17, 2013 at 8:40 AM, Abhilash Kesavan
<kesavan.abhilash@gmail.com> wrote:
> Hi Bartlomiej,
>
> On Mon, Dec 16, 2013 at 6:18 PM, Bartlomiej Zolnierkiewicz
> <b.zolnierkie@samsung.com> wrote:
>>
>> Hi,
>>
>> On Monday, December 16, 2013 05:31:10 PM Abhilash Kesavan wrote:
>>> Add PMU configuration table for various low power modes - AFTR/LPA/SLEEP.
>>> Also, add core s2r support for Exynos5420.
>>>
>>> Signed-off-by: Abhilash Kesavan <a.kesavan@samsung.com>
>>> ---
>>> This patch depends on "ARM: EXYNOS5: Add PMU settings for exynos5420"
>>> http://www.spinics.net/lists/linux-samsung-soc/msg24902.html
>>
>> [...]
>>
>>> @@ -253,10 +316,20 @@ static int exynos_pm_suspend(void)
>>>
>>> /* Setting SEQ_OPTION register */
>>>
>>> - tmp = (S5P_USE_STANDBY_WFI0 | S5P_USE_STANDBY_WFE0);
>>> - __raw_writel(tmp, S5P_CENTRAL_SEQ_OPTION);
>>> + if (soc_is_exynos5420()) {
>>> + cluster_id = (read_cpuid(CPUID_MPIDR) >> 8) & 0xf;
>>> + if (!cluster_id)
>>> + __raw_writel(EXYNOS5420_ARM_USE_STANDBY_WFI0,
>>> + S5P_CENTRAL_SEQ_OPTION);
>>> + else
>>> + __raw_writel(EXYNOS5420_KFC_USE_STANDBY_WFI0,
>>> + S5P_CENTRAL_SEQ_OPTION);
>>> + } else if (soc_is_exynos5250()) {
>>
>> Adding a check here for EXYNOS5250 doesn't look correct
>> (the old code behavior for older EXYNOYS SoCs should be
>> preserved).
>
> Yes, will fix this in the next version.
>
>>
>>> + tmp = (S5P_USE_STANDBY_WFI0 | S5P_USE_STANDBY_WFE0);
>>> + __raw_writel(tmp, S5P_CENTRAL_SEQ_OPTION);
>>> + }
>>
>> Best regards,
>> --
>> Bartlomiej Zolnierkiewicz
>> Samsung R&D Institute Poland
>> Samsung Electronics
>>
>>
>
> Thanks,
> Abhilash
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html