From patchwork Mon May 5 10:57:19 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartlomiej Zolnierkiewicz X-Patchwork-Id: 4113781 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 5E0F2BFF02 for ; Mon, 5 May 2014 11:02:49 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 850F82010C for ; Mon, 5 May 2014 11:02:48 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id ACF6D20254 for ; Mon, 5 May 2014 11:02:47 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1WhGdo-000639-Ll; Mon, 05 May 2014 11:01:00 +0000 Received: from mailout2.samsung.com ([203.254.224.25]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1WhGdl-0005gv-Oo for linux-arm-kernel@lists.infradead.org; Mon, 05 May 2014 11:00:58 +0000 Received: from epcpsbgm2.samsung.com (epcpsbgm2 [203.254.230.27]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N5300D5TL906J00@mailout2.samsung.com> for linux-arm-kernel@lists.infradead.org; Mon, 05 May 2014 20:00:36 +0900 (KST) X-AuditID: cbfee61b-b7f766d00000646c-10-53676f54f13e Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 33.B8.25708.45F67635; Mon, 05 May 2014 20:00:36 +0900 (KST) Received: from mcdsrvbld02.digital.local ([106.116.37.23]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0N5300CW5L3PC1B0@mmp1.samsung.com>; Mon, 05 May 2014 20:00:36 +0900 (KST) From: Bartlomiej Zolnierkiewicz To: Kukjin Kim Subject: [PATCH 7/7] ARM: EXYNOS: cpuidle: add secure firmware support to AFTR mode code Date: Mon, 05 May 2014 12:57:19 +0200 Message-id: <1399287439-31376-8-git-send-email-b.zolnierkie@samsung.com> X-Mailer: git-send-email 1.7.10.4 In-reply-to: <1399287439-31376-1-git-send-email-b.zolnierkie@samsung.com> References: <1399287439-31376-1-git-send-email-b.zolnierkie@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrCLMWRmVeSWpSXmKPExsVy+t9jAd2Q/PRgg59PuCw2zljPajHvs6xF 74KrbBZnm96wW7w/9IzZYtPja6wWl3fNYbP43HuE0WLG+X1MFmdOX2K1OPmnl9Fi/YzXLBYb v3o48HrcubaHzWPzknqP2/8eM3tsudrO4tG3ZRWjx+dNcgFsUVw2Kak5mWWpRfp2CVwZzcuv shdcEKp4/7GDsYHxIH8XIyeHhICJxL93y5ggbDGJC/fWs3UxcnEICSxilFg19xczSEJIoItJ oukuJ4jNJmAlMbF9FSOILSKgJtGzeCsjSAOzwF5miaXdm9hBEsICURKHzrezgdgsAqoSbW9P gMV5BTwkHjdOgtqmKNH9bAJYDaeAp8TSzY+hlnlIbHjbzjaBkXcBI8MqRtHUguSC4qT0XCO9 4sTc4tK8dL3k/NxNjOCwfCa9g3FVg8UhRgEORiUe3gTm9GAh1sSy4srcQ4wSHMxKIrzZiUAh 3pTEyqrUovz4otKc1OJDjNIcLErivAdbrQOFBNITS1KzU1MLUotgskwcnFINjD65Jzk0zAzj 81NsTv527Oy9M0+ZZ5pqW0tLyLmKwuoo3td64oUvlZld1q+5cLunb8ZXp5jfKetsmJesu8bZ ZqihW+rKnnjImVVRK7JhyoGdiTVx/+oyBZxnHfRlktl6eP0005UlfiJGd/ieTjgzV8B356yX q+eyrlHgdnP1K/Y7u1Z7bjCjEktxRqKhFnNRcSIAGcP24UcCAAA= X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20140505_040058_016068_6A41C142 X-CRM114-Status: GOOD ( 13.29 ) X-Spam-Score: -5.7 (-----) Cc: linux-samsung-soc@vger.kernel.org, linux-pm@vger.kernel.org, Sachin Kamat , Viresh Kumar , Tomasz Figa , Daniel Lezcano , "Rafael J. Wysocki" , linux-kernel@vger.kernel.org, Kyungmin Park , linaro-kernel@lists.linaro.org, linux-arm-kernel@lists.infradead.org, b.zolnierkie@samsung.com X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP * Use do_idle firmware method instead of cpu_do_idle() on boards with secure firmware enabled. * Use S5P_VA_SYSRAM_NS + 0x24 address for exynos_boot_vector_addr() and S5P_VA_SYSRAM_NS + 0x20 one for exynos_boot_vector_flag() on boards with secure firmware enabled. This patch fixes hang on an attempt to enter AFTR mode for TRATS2 board (which uses EXYNOS4412 SoC with secure firmware enabled). This patch shouldn't cause any functionality changes on boards that don't use secure firmware. Signed-off-by: Bartlomiej Zolnierkiewicz --- arch/arm/mach-exynos/pm.c | 8 ++++++-- drivers/cpuidle/cpuidle-exynos.c | 7 ++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c index 3922968..ba4cd05 100644 --- a/arch/arm/mach-exynos/pm.c +++ b/arch/arm/mach-exynos/pm.c @@ -104,7 +104,9 @@ static int exynos_irq_set_wake(struct irq_data *data, unsigned int state) static inline void __iomem *exynos_boot_vector_addr(void) { - if (samsung_rev() == EXYNOS4210_REV_1_1) + if (firmware_run()) + return S5P_VA_SYSRAM_NS + 0x24; + else if (samsung_rev() == EXYNOS4210_REV_1_1) return S5P_INFORM7; else if (samsung_rev() == EXYNOS4210_REV_1_0) return S5P_VA_SYSRAM + 0x24; @@ -113,7 +115,9 @@ static inline void __iomem *exynos_boot_vector_addr(void) static inline void __iomem *exynos_boot_vector_flag(void) { - if (samsung_rev() == EXYNOS4210_REV_1_1) + if (firmware_run()) + return S5P_VA_SYSRAM_NS + 0x20; + else if (samsung_rev() == EXYNOS4210_REV_1_1) return S5P_INFORM6; else if (samsung_rev() == EXYNOS4210_REV_1_0) return S5P_VA_SYSRAM + 0x20; diff --git a/drivers/cpuidle/cpuidle-exynos.c b/drivers/cpuidle/cpuidle-exynos.c index 7c01512..f90a4a0 100644 --- a/drivers/cpuidle/cpuidle-exynos.c +++ b/drivers/cpuidle/cpuidle-exynos.c @@ -17,13 +17,18 @@ #include #include #include +#include static void (*exynos_enter_aftr)(void); static int idle_finisher(unsigned long flags) { exynos_enter_aftr(); - cpu_do_idle(); + if (firmware_run()) + /* no need to check the return value on EXYNOS SoCs */ + call_firmware_op(do_idle, FW_DO_IDLE_AFTR); + else + cpu_do_idle(); return 1; }