From patchwork Wed Oct 1 11:36:08 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pankaj Dubey X-Patchwork-Id: 5011361 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id DB7F69F327 for ; Wed, 1 Oct 2014 11:44:55 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id F061D2014A for ; Wed, 1 Oct 2014 11:44:54 +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 194062012F for ; Wed, 1 Oct 2014 11:44:54 +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 1XZIIy-0008PD-Qj; Wed, 01 Oct 2014 11:42:48 +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 1XZIIw-0008GH-2O for linux-arm-kernel@lists.infradead.org; Wed, 01 Oct 2014 11:42:46 +0000 Received: from epcpsbgr1.samsung.com (u141.gpu120.samsung.co.kr [203.254.230.141]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NCR00BYZKIMNRC0@mailout2.samsung.com> for linux-arm-kernel@lists.infradead.org; Wed, 01 Oct 2014 20:42:22 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.126]) by epcpsbgr1.samsung.com (EPCPMTA) with SMTP id B6.11.17016.E98EB245; Wed, 01 Oct 2014 20:42:22 +0900 (KST) X-AuditID: cbfee68d-f79296d000004278-37-542be89ebcf0 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id AC.4F.09430.E98EB245; Wed, 01 Oct 2014 20:42:22 +0900 (KST) Received: from chromebld-server.sisodomain.com ([107.108.73.106]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0NCR00J54KG4ZXN0@mmp2.samsung.com>; Wed, 01 Oct 2014 20:42:22 +0900 (KST) From: Pankaj Dubey To: linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org Subject: [PATCH v2 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver Date: Wed, 01 Oct 2014 17:06:08 +0530 Message-id: <1412163368-13496-3-git-send-email-pankaj.dubey@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1412163368-13496-1-git-send-email-pankaj.dubey@samsung.com> References: <1412163368-13496-1-git-send-email-pankaj.dubey@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrNLMWRmVeSWpSXmKPExsWyRsSkTnfeC+0Qg5dTNS16F1xls9j0+Bqr xYzz+5gsbl/mtXiy8AyTxaej/1ktFm39wm7RsYzRYtWuP4wWN59tZ3Lg8mhp7mHz2DnrLrvH 5iX1Hju/N7B79G1ZxejxeZNcAFsUl01Kak5mWWqRvl0CV8aHn8eZCr5KV/zpmMbawLhavIuR k0NCwESi7/ZWVghbTOLCvfVsILaQwFJGiQenE2FqtrXfY+xi5AKKT2eUmLL8FDuEM4FJ4tKy vUwgVWwCuhJP3s9l7mLk4BAR8JZYfk0RpIZZ4DyjxPIpU8E2CAPFL0z8BlbPIqAqMfX/djCb V8BDYvW6PewgvRICChJzJtmAhDkFPCVe7GhkhDjIQ6L1xhJWkJkSAtvYJda3nGWFmCMg8W3y IRaIXlmJTQeYIY6WlDi44gbLBEbhBYwMqxhFUwuSC4qT0osM9YoTc4tL89L1kvNzNzEC4+D0 v2e9OxhvH7A+xCjAwajEw6uQoB0ixJpYVlyZe4jRFGjDRGYp0eR8YLTllcQbGpsZWZiamBob mVuaKYnzKkr9DBYSSE8sSc1OTS1ILYovKs1JLT7EyMTBKdXAeDUioPpt3YEviqo7cyeVMgZo JtydEb/3N/O1lSHpTFXmuywCwkuOPJmwbIWVmUr8XNWt23jXxq5bp5Bkf8v0hFatkZQy8/+d BurLvqWL6H5T/bn+8iXmW42JyS/yLkz2yf116O+3gIaLAtZHD7tJBKqfXiexZEuRQraYVh7H qw8XJ6t/XX+lTomlOCPRUIu5qDgRAOdRfYZ+AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGIsWRmVeSWpSXmKPExsVy+t9jQd15L7RDDDZ+krfoXXCVzWLT42us FjPO72OyuH2Z1+LJwjNMFp+O/me1WLT1C7tFxzJGi1W7/jBa3Hy2ncmBy6OluYfNY+esu+we m5fUe+z83sDu0bdlFaPH501yAWxRDYw2GamJKalFCql5yfkpmXnptkrewfHO8aZmBoa6hpYW 5koKeYm5qbZKLj4Bum6ZOUCHKSmUJeaUAoUCEouLlfTtME0IDXHTtYBpjND1DQmC6zEyQAMJ axgzPvw8zlTwVbriT8c01gbG1eJdjJwcEgImEtva7zFC2GISF+6tZ+ti5OIQEpjOKDFl+Sl2 CGcCk8SlZXuZQKrYBHQlnryfy9zFyMEhIuAtsfyaIkgNs8B5RonlU6aygtQIA8UvTPwGVs8i oCox9f92MJtXwENi9bo97CC9EgIKEnMm2YCEOQU8JV7saAQ7QgiopPXGEtYJjLwLGBlWMYqm FiQXFCel5xrpFSfmFpfmpesl5+duYgTH2TPpHYyrGiwOMQpwMCrx8FYkaYcIsSaWFVfmHmKU 4GBWEuHNPgAU4k1JrKxKLcqPLyrNSS0+xGgKdNREZinR5HxgCsgriTc0NjE3NTa1NLEwMbNU Euc92GodKCSQnliSmp2aWpBaBNPHxMEp1cBYMuF0GfOB3H+bbpl4X7+Tsa2z2sD6x43kPwWX ma18ovStWpIOi8i9OdD/eG/wWdd/D4s+T73E7+D55uSdpvWzNUR1Vrw79+7O1RmSAntbRW/0 /ds/V8tI+n9wwu76lQEPJP663BFbs31pTtPPU9ser14bcn/HjbjAbJWz87fdsgxmO37yQ/Ox PCWW4oxEQy3mouJEABMeUCrJAgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20141001_044246_256541_AD98ECF8 X-CRM114-Status: GOOD ( 14.33 ) X-Spam-Score: -5.7 (-----) Cc: kgene.kim@samsung.com, linux@arm.linux.org.uk, naushad@samsung.com, Pankaj Dubey , tomasz.figa@gmail.com, thomas.ab@samsung.com, vikas.sajjan@samsung.com, linux@roeck-us.net X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.18-1 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, RCVD_IN_DNSWL_NONE, 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 Let's register reboot_notifier from PMU driver for reboot functionality. So that we can remove restart hooks from machine specific file, and thus moving ahead when PMU moved to driver folder, this functionality can be reused for ARM64 based Exynos SoC's. Signed-off-by: Pankaj Dubey --- arch/arm/mach-exynos/common.h | 1 - arch/arm/mach-exynos/exynos.c | 6 ------ arch/arm/mach-exynos/pmu.c | 25 +++++++++++++++++++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h index 431be1b..865f878 100644 --- a/arch/arm/mach-exynos/common.h +++ b/arch/arm/mach-exynos/common.h @@ -12,7 +12,6 @@ #ifndef __ARCH_ARM_MACH_EXYNOS_COMMON_H #define __ARCH_ARM_MACH_EXYNOS_COMMON_H -#include #include #define EXYNOS3250_SOC_ID 0xE3472000 diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c index aa394cb..3aa75b8e 100644 --- a/arch/arm/mach-exynos/exynos.c +++ b/arch/arm/mach-exynos/exynos.c @@ -137,11 +137,6 @@ static struct map_desc exynos5_iodesc[] __initdata = { }, }; -static void exynos_restart(enum reboot_mode mode, const char *cmd) -{ - __raw_writel(0x1, pmu_base_addr + EXYNOS_SWRESET); -} - static struct platform_device exynos_cpuidle = { .name = "exynos_cpuidle", #ifdef CONFIG_ARM_EXYNOS_CPUIDLE @@ -365,7 +360,6 @@ DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EXYNOS (Flattened Device Tree)") .init_machine = exynos_dt_machine_init, .init_late = exynos_init_late, .dt_compat = exynos_dt_compat, - .restart = exynos_restart, .reserve = exynos_reserve, .dt_fixup = exynos_dt_fixup, MACHINE_END diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c index 1993e08..c0855a5 100644 --- a/arch/arm/mach-exynos/pmu.c +++ b/arch/arm/mach-exynos/pmu.c @@ -11,7 +11,10 @@ #include #include +#include #include +#include +#include #include "exynos-pmu.h" #include "regs-pmu.h" @@ -439,6 +442,15 @@ static void exynos5250_pmu_init(void) pmu_raw_writel(value, EXYNOS5_MASK_WDTRESET_REQUEST); } +static int pmu_reboot_notify_handler(struct notifier_block *this, + unsigned long code, void *unused) +{ + if (code == SYS_RESTART) + pmu_raw_writel(0x1, EXYNOS_SWRESET); + + return NOTIFY_DONE; +} + static const struct exynos_pmu_data exynos4210_pmu_data = { .pmu_config = exynos4210_pmu_config, }; @@ -478,11 +490,20 @@ static const struct of_device_id exynos_pmu_of_device_ids[] = { { /*sentinel*/ }, }; +/* + * Exynos PMU reboot notifier, handles reboot functionality + */ +static struct notifier_block pmu_reboot_notifier = { + .notifier_call = pmu_reboot_notify_handler, + .priority = 128, +}; + static int exynos_pmu_probe(struct platform_device *pdev) { const struct of_device_id *match; struct device *dev = &pdev->dev; struct resource *res; + int ret; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); pmu_base_addr = devm_ioremap_resource(dev, res); @@ -507,6 +528,10 @@ static int exynos_pmu_probe(struct platform_device *pdev) platform_set_drvdata(pdev, pmu_context); + ret = register_reboot_notifier(&pmu_reboot_notifier); + if (ret) + dev_err(dev, "can't register reboot notifier err=%d\n", ret); + dev_dbg(dev, "Exynos PMU Driver probe done\n"); return 0; }