From patchwork Fri Jun 24 10:49:56 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 102093 Delivered-To: patch@linaro.org Received: by 10.140.28.4 with SMTP id 4csp880105qgy; Fri, 24 Jun 2016 03:48:54 -0700 (PDT) X-Received: by 10.98.112.196 with SMTP id l187mr2607541pfc.59.1466765334183; Fri, 24 Jun 2016 03:48:54 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 69si6222650pfr.155.2016.06.24.03.48.53; Fri, 24 Jun 2016 03:48:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751231AbcFXKsw (ORCPT + 30 others); Fri, 24 Jun 2016 06:48:52 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:56206 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750951AbcFXKsu (ORCPT ); Fri, 24 Jun 2016 06:48:50 -0400 Received: from wuerfel.lan. ([78.42.132.4]) by mrelayeu.kundenserver.de (mreue104) with ESMTPA (Nemesis) id 0M0iAY-1bVR6D2DZm-00ur72; Fri, 24 Jun 2016 12:48:11 +0200 From: Arnd Bergmann To: Shawn Guo Cc: linux-arm-kernel@lists.infradead.org, Sascha Hauer , Fabio Estevam , linux-kernel@vger.kernel.org, Arnd Bergmann Subject: [PATCH 1/6] ARM: imx: remove cpu_is_mx1 check Date: Fri, 24 Jun 2016 12:49:56 +0200 Message-Id: <20160624105001.3166287-2-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160624105001.3166287-1-arnd@arndb.de> References: <20160624105001.3166287-1-arnd@arndb.de> X-Provags-ID: V03:K0:YIpZNbjzRhtX0RbC06qNJTiuRKUJI+QREQNC2DjfY8YBiUTOyex 1/3tUwJ6VfoR22uzqVklTXPwx+VLQPtt0adM6Fdzx5rpV82tEgLwZqc/i18lzsPex75vNMl tn6YAC6SNusB8LpyHIhiJ7dX4bd/ZsGvK6zMElWc1ubphE7NgSo4wYc34xnmJ1+8v5Zvb1p d52+lwfzr156ZEsGrtZkw== X-UI-Out-Filterresults: notjunk:1; V01:K0:iP0vggEP1xU=:JYgUT1GgZHTI64htyKqNeS lHpjrvEbjeLHzW5WjJCaZXJxPuvo8q2TKo/Y7Mi3IVw2fKvveCpneuv76cFIc0mMpAJzla9e4 rVqNtLUbkQIut0K0168YJTLnyF1s7joDA7eiqDdF4ab8DzmV6TLm8jhvGKE4/MWsoi79Ftuuq XiQco4JG9Lrw8xmcfFsRqzfaEOJDwKwgBNHOKWjF3pGScdZajdIGC2yUQvX0NKJ9zqC7s9sXy ARF1LcOpxtuw02+gTNP3TnFaAohNJ6UqcM+QxVU+fi4zfCgZoMyu1KlGCrs/hzrN/sTI/CpPi XUkt0SlZUwmCORfgjpwnzKmv/kpBIkvu/5tZ2DQHeOl6UtAJ8zFlu6mRpa3f1jTFhmOdQ4ylt Ss3U6q0vwTNCMrKK/f3iUVMyJTqWzMYILPktizIMaUzrecnxfsiSMHWEcKLnsonfDoRFk3HFD yDYEhVgR97ZuKMpnUdBrXJ/k3Fi/a24D4+Y7uQrm6I2SeC8iUNCdCKAdUOtCYBnMvcaUafAmb uHQaM9+/UWfTnpbaYr5+9D9u2RPMD2nnn0oICOB6IOhzmm2zfcUUkEi0OB+2qCKdWcjYNSqA+ 0Ec3o3r7VBZQZyvbprUR2JKxTJCq5tklJRb1PipdJfv921KxEaIvwnkzTHeDafpFOreuDdY5/ W+KVd/EnbiRzX1vjYkbKbFUedVYCSewytc3gy4VkUQrvo5q1lSgj+XUYs25jTbpeoClg= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There is only one call site for this, and it's easily replaced by initializing the reset value at boot time. Signed-off-by: Arnd Bergmann --- arch/arm/mach-imx/common.h | 1 + arch/arm/mach-imx/mm-imx1.c | 2 +- arch/arm/mach-imx/system.c | 16 +++++++++------- 3 files changed, 11 insertions(+), 8 deletions(-) -- 2.9.0 diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h index 60d9ae63f76e..0a1d1f175b7a 100644 --- a/arch/arm/mach-imx/common.h +++ b/arch/arm/mach-imx/common.h @@ -54,6 +54,7 @@ struct platform_device *mxc_register_gpio(char *name, int id, void mxc_set_cpu_type(unsigned int type); void mxc_restart(enum reboot_mode, const char *); void mxc_arch_reset_init(void __iomem *); +void imx1_reset_init(void __iomem *); void imx_set_aips(void __iomem *); void imx_aips_allow_unprivileged_access(const char *compat); int mxc_device_init(void); diff --git a/arch/arm/mach-imx/mm-imx1.c b/arch/arm/mach-imx/mm-imx1.c index e065fedb3ad4..9a42f19be81e 100644 --- a/arch/arm/mach-imx/mm-imx1.c +++ b/arch/arm/mach-imx/mm-imx1.c @@ -50,7 +50,7 @@ void __init mx1_init_irq(void) void __init imx1_soc_init(void) { - mxc_arch_reset_init(MX1_IO_ADDRESS(MX1_WDT_BASE_ADDR)); + imx1_reset_init(MX1_IO_ADDRESS(MX1_WDT_BASE_ADDR)); mxc_device_init(); mxc_register_gpio("imx1-gpio", 0, MX1_GPIO1_BASE_ADDR, SZ_256, diff --git a/arch/arm/mach-imx/system.c b/arch/arm/mach-imx/system.c index e442ed7f7ff5..c06af650e6b1 100644 --- a/arch/arm/mach-imx/system.c +++ b/arch/arm/mach-imx/system.c @@ -34,25 +34,19 @@ static void __iomem *wdog_base; static struct clk *wdog_clk; +static int wcr_enable = (1 << 2); /* * Reset the system. It is called by machine_restart(). */ void mxc_restart(enum reboot_mode mode, const char *cmd) { - unsigned int wcr_enable; - if (!wdog_base) goto reset_fallback; if (!IS_ERR(wdog_clk)) clk_enable(wdog_clk); - if (cpu_is_mx1()) - wcr_enable = (1 << 0); - else - wcr_enable = (1 << 2); - /* Assert SRS signal */ imx_writew(wcr_enable, wdog_base); /* @@ -89,6 +83,14 @@ void __init mxc_arch_reset_init(void __iomem *base) clk_prepare(wdog_clk); } +#ifdef CONFIG_SOC_IMX1 +void __init imx1_reset_init(void __iomem *base) +{ + wcr_enable = (1 << 0); + mxc_arch_reset_init(base); +} +#endif + #ifdef CONFIG_CACHE_L2X0 void __init imx_init_l2cache(void) { From patchwork Fri Jun 24 10:49:57 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 102089 Delivered-To: patch@linaro.org Received: by 10.140.28.4 with SMTP id 4csp880403qgy; Fri, 24 Jun 2016 03:49:45 -0700 (PDT) X-Received: by 10.66.157.8 with SMTP id wi8mr6299274pab.21.1466765385008; Fri, 24 Jun 2016 03:49:45 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id qz3si6240012pab.82.2016.06.24.03.49.44; Fri, 24 Jun 2016 03:49:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751438AbcFXKt0 (ORCPT + 30 others); Fri, 24 Jun 2016 06:49:26 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:61400 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751211AbcFXKsx (ORCPT ); Fri, 24 Jun 2016 06:48:53 -0400 Received: from wuerfel.lan. ([78.42.132.4]) by mrelayeu.kundenserver.de (mreue104) with ESMTPA (Nemesis) id 0M89Tt-1bcLG63ERd-00vhvb; Fri, 24 Jun 2016 12:48:11 +0200 From: Arnd Bergmann To: Shawn Guo Cc: linux-arm-kernel@lists.infradead.org, Sascha Hauer , Fabio Estevam , linux-kernel@vger.kernel.org, Arnd Bergmann Subject: [PATCH 2/6] ARM: imx: deconstruct mxc_rnga initialization Date: Fri, 24 Jun 2016 12:49:57 +0200 Message-Id: <20160624105001.3166287-3-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160624105001.3166287-1-arnd@arndb.de> References: <20160624105001.3166287-1-arnd@arndb.de> X-Provags-ID: V03:K0:rSHOXFDYvlac9oxuUWp3vYHWLxIGVcjijNPQCIrn6F1/tLaNEXn Sv29nY4Lx7vvXzD0C2MstpyFbvnfCmxIsh58lehIRn2QyCNPRdlI6xAECO65Ei/b4e7qjPq C8S7Vb9hMR+ksNepBfaYnCMv3/BhuppWzvr0LJLVibp5mMyCxa3v5bUvjaJAOdNhoeAv+5S z3qRWN4jeupga5UNDSEbA== X-UI-Out-Filterresults: notjunk:1; V01:K0:N4BVVfDOTto=:nizmBYychkJ7VuTUa6+NY/ e6gjPaFF9oWZOhyzwdlmxOceeHSoQ6om21gxv8sfgRllQAV14/GPwB/sKuUnteaEP4Q2nU5fu jg5kc4sGsIDc65zf8poFlr2gNPI32p7dxJ+rEutwaJzPDhNDbxp5OjsUhfzXqLi/e9oZyKq4y vi8oshmgwpZc+midr+I7xMVGQu7rzHNwlaJT4tc1V2LHsRPxnKBlp4fztHi1a51eWgUq5JGFJ cMccTnCugtQOA+mvE9Zyzi7tlWBmMn1mzkJdq0fDEGI+u0ekwYBnHDIQbd1MGVCh1VcZkkoHa jf4UVTBbUOrY2UtmKFxW83mtza+Mrp5aGyFjU93FKTPc2+a4PVrrZ0xSTXqBiCLGZ1jFxmeCf hf5WCwYxN+Ehl9xz3B31lxAr5HHy7HIxcHNdfpAlk3j0caqFtisWnT5JBcvqO/CaUWhNCDTth kRYVV5CRTx1ueUDqrK5tyTKFc0kIZpKMNXZEp7tMNq8LcgtG2AG/zK+/Ic68pAlKazSjx713Q X8UbVcoQGLBf+0U5gMJwKidSctYGV6vx1rZ+WlNAynvgVXZR1UFr1rjx9Pa6UoVKYNuOM2g+0 P5A/LuPj4moa0AMxiLNPM1Gl/0C+hFdcbzAWfysBHKsUzxF2nIVfCOr0c/xiQeTX4PD3HO4D8 PJnhs9lvEtVjg8x2XSHvqldSg/ABnDR1m58S4tve5ryO1jkI6nic5X8xBTOCiFdXlyPE= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The rnga platform device is initialized for all imx31 machines from its own initcall, but is never initialized anywhere else. This moves the platform device creation into both the imx31 dt and non-dt machine init sequences, which has basically the exact same effect as before, but makes it more obvious what is going on, while reducing the amount of code and removing the last user of cpu_is_mx31(). Signed-off-by: Arnd Bergmann --- arch/arm/mach-imx/Kconfig | 4 -- arch/arm/mach-imx/devices/Kconfig | 4 -- arch/arm/mach-imx/devices/platform-mxc_rnga.c | 53 --------------------------- arch/arm/mach-imx/imx31-dt.c | 12 ++++++ arch/arm/mach-imx/mm-imx3.c | 6 +++ 5 files changed, 18 insertions(+), 61 deletions(-) delete mode 100644 arch/arm/mach-imx/devices/platform-mxc_rnga.c -- 2.9.0 diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 7bc459f72985..4f4caa9c4637 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -44,9 +44,6 @@ config MXC_USE_EPIT uses the same clocks as the GPT. Anyway, on some systems the GPT may be in use for other purposes. -config ARCH_HAS_RNGA - bool - config HAVE_IMX_ANATOP bool @@ -90,7 +87,6 @@ config SOC_IMX27 config SOC_IMX31 bool select CPU_V6 - select IMX_HAVE_PLATFORM_MXC_RNGA select MXC_AVIC select SMP_ON_UP if SMP diff --git a/arch/arm/mach-imx/devices/Kconfig b/arch/arm/mach-imx/devices/Kconfig index 3a552989248e..6ffe57267233 100644 --- a/arch/arm/mach-imx/devices/Kconfig +++ b/arch/arm/mach-imx/devices/Kconfig @@ -57,10 +57,6 @@ config IMX_HAVE_PLATFORM_MXC_MMC config IMX_HAVE_PLATFORM_MXC_NAND bool -config IMX_HAVE_PLATFORM_MXC_RNGA - bool - select ARCH_HAS_RNGA - config IMX_HAVE_PLATFORM_MXC_RTC bool diff --git a/arch/arm/mach-imx/devices/platform-mxc_rnga.c b/arch/arm/mach-imx/devices/platform-mxc_rnga.c deleted file mode 100644 index 851fbc8af7a9..000000000000 --- a/arch/arm/mach-imx/devices/platform-mxc_rnga.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2010 Pengutronix - * Uwe Kleine-Koenig - * - * This program is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License version 2 as published by the - * Free Software Foundation. - */ -#include "../hardware.h" -#include "devices-common.h" - -struct imx_mxc_rnga_data { - resource_size_t iobase; -}; - -#define imx_mxc_rnga_data_entry_single(soc) \ - { \ - .iobase = soc ## _RNGA_BASE_ADDR, \ - } - -#ifdef CONFIG_SOC_IMX31 -static const struct imx_mxc_rnga_data imx31_mxc_rnga_data __initconst = - imx_mxc_rnga_data_entry_single(MX31); -#endif /* ifdef CONFIG_SOC_IMX31 */ - -static struct platform_device *__init imx_add_mxc_rnga( - const struct imx_mxc_rnga_data *data) -{ - struct resource res[] = { - { - .start = data->iobase, - .end = data->iobase + SZ_16K - 1, - .flags = IORESOURCE_MEM, - }, - }; - return imx_add_platform_device("mxc_rnga", -1, - res, ARRAY_SIZE(res), NULL, 0); -} - -static int __init imxXX_add_mxc_rnga(void) -{ - struct platform_device *ret; - -#if defined(CONFIG_SOC_IMX31) - if (cpu_is_mx31()) - ret = imx_add_mxc_rnga(&imx31_mxc_rnga_data); - else -#endif /* if defined(CONFIG_SOC_IMX31) */ - ret = ERR_PTR(-ENODEV); - - return PTR_ERR_OR_ZERO(ret); -} -arch_initcall(imxXX_add_mxc_rnga); diff --git a/arch/arm/mach-imx/imx31-dt.c b/arch/arm/mach-imx/imx31-dt.c index 32100222a017..62e6b4fb5370 100644 --- a/arch/arm/mach-imx/imx31-dt.c +++ b/arch/arm/mach-imx/imx31-dt.c @@ -28,10 +28,22 @@ static void __init imx31_dt_timer_init(void) mx31_clocks_init_dt(); } +/* FIXME: replace with DT binding */ +static const struct resource imx31_rnga_res[] __initconst = { + DEFINE_RES_MEM(MX31_RNGA_BASE_ADDR, SZ_16K), +}; + +static void __init imx31_dt_mach_init(void) +{ + platform_device_register_simple("mxc_rnga", -1, imx31_rnga_res, + ARRAY_SIZE(imx31_rnga_res)); +} + DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)") .map_io = mx31_map_io, .init_early = imx31_init_early, .init_irq = mx31_init_irq, .init_time = imx31_dt_timer_init, + .init_machine = imx31_dt_mach_init, .dt_compat = imx31_dt_board_compat, MACHINE_END diff --git a/arch/arm/mach-imx/mm-imx3.c b/arch/arm/mach-imx/mm-imx3.c index 0884ca90d15a..3b135cd4b043 100644 --- a/arch/arm/mach-imx/mm-imx3.c +++ b/arch/arm/mach-imx/mm-imx3.c @@ -167,6 +167,10 @@ static const struct resource imx31_audmux_res[] __initconst = { DEFINE_RES_MEM(MX31_AUDMUX_BASE_ADDR, SZ_16K), }; +static const struct resource imx31_rnga_res[] __initconst = { + DEFINE_RES_MEM(MX31_RNGA_BASE_ADDR, SZ_16K), +}; + void __init imx31_soc_init(void) { int to_version = mx31_revision() >> 4; @@ -195,6 +199,8 @@ void __init imx31_soc_init(void) platform_device_register_simple("imx31-audmux", 0, imx31_audmux_res, ARRAY_SIZE(imx31_audmux_res)); + platform_device_register_simple("mxc_rnga", -1, imx31_rnga_res, + ARRAY_SIZE(imx31_rnga_res)); } #endif /* ifdef CONFIG_SOC_IMX31 */ From patchwork Fri Jun 24 10:49:58 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 102092 Delivered-To: patch@linaro.org Received: by 10.140.28.4 with SMTP id 4csp880220qgy; Fri, 24 Jun 2016 03:49:12 -0700 (PDT) X-Received: by 10.67.15.72 with SMTP id fm8mr6415257pad.50.1466765352285; Fri, 24 Jun 2016 03:49:12 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l190si6240928pfc.53.2016.06.24.03.49.12; Fri, 24 Jun 2016 03:49:12 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751340AbcFXKsz (ORCPT + 30 others); Fri, 24 Jun 2016 06:48:55 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:57770 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751109AbcFXKsw (ORCPT ); Fri, 24 Jun 2016 06:48:52 -0400 Received: from wuerfel.lan. ([78.42.132.4]) by mrelayeu.kundenserver.de (mreue104) with ESMTPA (Nemesis) id 0MXH2D-1at8bR06tB-00WIk7; Fri, 24 Jun 2016 12:48:12 +0200 From: Arnd Bergmann To: Shawn Guo Cc: linux-arm-kernel@lists.infradead.org, Sascha Hauer , Fabio Estevam , linux-kernel@vger.kernel.org, Arnd Bergmann Subject: [PATCH 3/6] ARM: imx: deconstruct mx3_idle Date: Fri, 24 Jun 2016 12:49:58 +0200 Message-Id: <20160624105001.3166287-4-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160624105001.3166287-1-arnd@arndb.de> References: <20160624105001.3166287-1-arnd@arndb.de> X-Provags-ID: V03:K0:Sn3gyh0sN+HkfDgrTpvhJYoIUCo/hkY+LCfahn3GTz+3YIG0agZ +45CODdIXdp7+HsjmvlPm5Xa7k85khhfJIIJTQs6NV6WMYOSiCiOO+2mA7gBiq16Ui8EegV YS8v6MZVQyg/JHqKUu5m37nlDneUoOJuf57TjLWn9CLV9XBWhEveNkGviGRAf17qRA158yf rjARKukHxZMM6RH0z8HgQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:THi4wjZXt6w=:Pyc2m4KjHAHapbnlmLJZQP UM+xYP8HjS5sP89bYcl9kv+M66gsbc4CRCJqScxvq3oMajtQlMsBDzLR/db3k488Oib8+GUkV YKn1w+w+ZlTuCqkwBITC8wQUey6MNfBLmd7gFjIDMt5Ktczo03Nu2qqGuqcg6OvBOGKGY59q6 y9mu3EvIPY1ATauID3dqZ19TwbdXmDLE6uNZn9uei8CmaOkjlngwfCI822B2GnLvFjKlWpgJm QjMgVd6+3tb8aMilZ+hfo+VwB3JnI2ZeCKeJZjvFQm8xKzAH14ioMaLCCNzujoMqFTApQm9Qb S1fTJ5ej348u074Dwrx+ZuUhw7D7heRrTAAtGgTAeuVJr8V1wHNNeUNsisTq7rWjSC6twsH3K 55D3F4XAcLCW5kjVfJkSQXn2vcqIN4S8xxkhHcrof9FQXGC9qqz3FrSYh7y42MarYQzx+QErX eTOvl3ysYkH8hJ5HoPByVnCSIBWa5gjjKuQfUqDqVoc8CazkNnGzE5DBbnxytt5oslRecuR55 kLY/RVZqWS8U5B0nmcP7Ihk/YK6twKuL5wEXmw/Vs5PN0fM/CsRR6oCasQoRkKe4MEsxFZdc3 5xJSL1WE9RSUIRykT2IrwVxM6kLdZWhzjC9rtEYl+g+Y6A/0Xs/88AgGo+2uz8aWPsq8RLDEB NtEDQed+PW/Krr+TUVgbnU/R3SRme1BKuE4sMQd+yLqmM3rFSrnRe3mXTwOTfPV4S7bw= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The imx31 and imx35 idle functions are almost the same, but we currently have to check the cpu type every time. This can be simplified by moving the logic from mx3_cpu_lp_set() into two separate idle functions, removing the last user of cpu_is_mx35. Signed-off-by: Arnd Bergmann --- arch/arm/mach-imx/Makefile | 4 ++-- arch/arm/mach-imx/mm-imx3.c | 26 ++++++++++++++++++++++---- arch/arm/mach-imx/pm-imx3.c | 38 -------------------------------------- 3 files changed, 24 insertions(+), 44 deletions(-) delete mode 100644 arch/arm/mach-imx/pm-imx3.c -- 2.9.0 diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index 9fbe624a5ef9..9f5fffd62702 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -8,8 +8,8 @@ obj-$(CONFIG_SOC_IMX25) += cpu-imx25.o mach-imx25.o pm-imx25.o obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o obj-$(CONFIG_SOC_IMX27) += mm-imx27.o ehci-imx27.o -obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o iomux-imx31.o ehci-imx31.o pm-imx3.o -obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o ehci-imx35.o pm-imx3.o +obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o iomux-imx31.o ehci-imx31.o +obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o ehci-imx35.o imx5-pm-$(CONFIG_PM) += pm-imx5.o obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o $(imx5-pm-y) diff --git a/arch/arm/mach-imx/mm-imx3.c b/arch/arm/mach-imx/mm-imx3.c index 3b135cd4b043..7638a35b3b36 100644 --- a/arch/arm/mach-imx/mm-imx3.c +++ b/arch/arm/mach-imx/mm-imx3.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -38,8 +39,6 @@ static void imx3_idle(void) { unsigned long reg = 0; - mx3_cpu_lp_set(MX3_WAIT); - __asm__ __volatile__( /* disable I and D cache */ "mrc p15, 0, %0, c1, c0, 0\n" @@ -135,11 +134,20 @@ void __init mx31_map_io(void) iotable_init(mx31_io_desc, ARRAY_SIZE(mx31_io_desc)); } +static void imx31_idle(void) +{ + int reg = imx_readl(mx3_ccm_base + MXC_CCM_CCMR); + reg &= ~MXC_CCM_CCMR_LPM_MASK; + imx_writel(reg, mx3_ccm_base + MXC_CCM_CCMR); + + imx3_idle(); +} + void __init imx31_init_early(void) { mxc_set_cpu_type(MXC_CPU_MX31); arch_ioremap_caller = imx3_ioremap_caller; - arm_pm_idle = imx3_idle; + arm_pm_idle = imx31_idle; mx3_ccm_base = MX31_IO_ADDRESS(MX31_CCM_BASE_ADDR); } @@ -218,11 +226,21 @@ void __init mx35_map_io(void) iotable_init(mx35_io_desc, ARRAY_SIZE(mx35_io_desc)); } +static void imx35_idle(void) +{ + int reg = imx_readl(mx3_ccm_base + MXC_CCM_CCMR); + reg &= ~MXC_CCM_CCMR_LPM_MASK; + reg |= MXC_CCM_CCMR_LPM_WAIT_MX35; + imx_writel(reg, mx3_ccm_base + MXC_CCM_CCMR); + + imx3_idle(); +} + void __init imx35_init_early(void) { mxc_set_cpu_type(MXC_CPU_MX35); mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR)); - arm_pm_idle = imx3_idle; + arm_pm_idle = imx35_idle; arch_ioremap_caller = imx3_ioremap_caller; mx3_ccm_base = MX35_IO_ADDRESS(MX35_CCM_BASE_ADDR); } diff --git a/arch/arm/mach-imx/pm-imx3.c b/arch/arm/mach-imx/pm-imx3.c deleted file mode 100644 index 94c0898751d8..000000000000 --- a/arch/arm/mach-imx/pm-imx3.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2012 Freescale Semiconductor, Inc. All Rights Reserved. - * - * The code contained herein is licensed under the GNU General Public - * License. You may obtain a copy of the GNU General Public License - * Version 2 or later at the following locations: - * - * http://www.opensource.org/licenses/gpl-license.html - * http://www.gnu.org/copyleft/gpl.html - */ -#include - -#include "common.h" -#include "crmregs-imx3.h" -#include "devices/devices-common.h" -#include "hardware.h" - -/* - * Set cpu low power mode before WFI instruction. This function is called - * mx3 because it can be used for mx31 and mx35. - * Currently only WAIT_MODE is supported. - */ -void mx3_cpu_lp_set(enum mx3_cpu_pwr_mode mode) -{ - int reg = imx_readl(mx3_ccm_base + MXC_CCM_CCMR); - reg &= ~MXC_CCM_CCMR_LPM_MASK; - - switch (mode) { - case MX3_WAIT: - if (cpu_is_mx35()) - reg |= MXC_CCM_CCMR_LPM_WAIT_MX35; - imx_writel(reg, mx3_ccm_base + MXC_CCM_CCMR); - break; - default: - pr_err("Unknown cpu power mode: %d\n", mode); - return; - } -} From patchwork Fri Jun 24 10:49:59 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 102091 Delivered-To: patch@linaro.org Received: by 10.140.28.4 with SMTP id 4csp880227qgy; Fri, 24 Jun 2016 03:49:13 -0700 (PDT) X-Received: by 10.98.106.133 with SMTP id f127mr5978020pfc.139.1466765352672; Fri, 24 Jun 2016 03:49:12 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l190si6240928pfc.53.2016.06.24.03.49.12; Fri, 24 Jun 2016 03:49:12 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751400AbcFXKs4 (ORCPT + 30 others); Fri, 24 Jun 2016 06:48:56 -0400 Received: from mout.kundenserver.de ([217.72.192.74]:50208 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751138AbcFXKsw (ORCPT ); Fri, 24 Jun 2016 06:48:52 -0400 Received: from wuerfel.lan. ([78.42.132.4]) by mrelayeu.kundenserver.de (mreue104) with ESMTPA (Nemesis) id 0Lr24R-1buQ6p18AF-00eakX; Fri, 24 Jun 2016 12:48:12 +0200 From: Arnd Bergmann To: Shawn Guo Cc: linux-arm-kernel@lists.infradead.org, Sascha Hauer , Fabio Estevam , linux-kernel@vger.kernel.org, Arnd Bergmann Subject: [PATCH 4/6] ARM: imx: rework mx27_pm_init() call Date: Fri, 24 Jun 2016 12:49:59 +0200 Message-Id: <20160624105001.3166287-5-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160624105001.3166287-1-arnd@arndb.de> References: <20160624105001.3166287-1-arnd@arndb.de> X-Provags-ID: V03:K0:QvrD/g6vHHQDfG3xxxUqBJSyhuDqPYtf8ekMnZuhf0k8ckNpocz FigR24tH7TjnGoX/RPKjtMz6ujEJHrQHxd1wIMnT165+GxcmXZuUcDm3Ou+MeUrRp94Vh0u axqTdEHofaUA+FmkiHocogtzq4l7NpPjebLurrH8OPq40csZN1IqSBkLge5tz05hjX3jJaS qCqXLeC8jphdyzxuSGJhQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:U+0+XBc8Des=:D/KWLIH55yL0VcKSPqWgw/ 4mX9PKHK48caAXlIRXOBOQZeYeaxkM4yFrENOwA6ySbnMSpL33ipRN3gV3qvbEuWBhBsIf9y0 2jtsku6AJ0W+ZyB7vOOutFryVWI/QprrKRLO1QM9nfaNyt+K3vdduQ/5aKEQBke3uSIaTHH02 t2i/U9+1TpHgM7rsUmgzCVwT00Js1/3x5LFW6c4b/TrwtYjGESqKqW0/ZlZUdnfjWLvWn2Ptt ilfK7xr4dcY5N4HPYRlV1uBYdgZYphB2SIBMN30qKmR0NFWJnMj019pwGUNq5b9boK4hNDMfd WxWRF59AQ8xmEfAAcaBYDdwG+lYFRZboarhuaCeIUArPH+41dJc1PMXgkAcI8qezhhamKNqyy 46/9cSy0uK8p9YAHrDGnyMbOLMsLBxj0umU37gxKEoieCb1egDg7xK1xY1nPYMdUhX/gHX4Gd I1gCqt/jyyTf5zAS4XnQmp1lSRZU+zvKTjh5HBmrUTkoh0eRHP2YddVb1qB6Rl/TsMjLUYzq1 GkDTYiPWiQo/Oys/CH+VsX+FaE3FoTNnG+N381yf1o1TtitvDsCA95AzkXnNxJp2FsL1fFOtQ r8TyZ5rmqzG+aRICjfHcb3VNkcd+2gWE6Yxff3OgC/m5LICtCTDtVvKd+XKsjwh+/CHJcclnA 0KGVC8N20QJ78z/DgJN6gQxdO9SFYspv/ShacxNnQGwxl+VYobZUU/nW5QvBM8EUXxb0= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org mx27_pm_init() uses its own initcall, unlike all of the other functions like it. Replacing the initcall with a .init_late() callback makes imx27 more like the others and lets us remove the last caller of cpu_is_mx27(). Signed-off-by: Arnd Bergmann --- arch/arm/mach-imx/common.h | 1 + arch/arm/mach-imx/imx27-dt.c | 1 + arch/arm/mach-imx/mm-imx27.c | 2 ++ arch/arm/mach-imx/pm-imx27.c | 8 +------- 4 files changed, 5 insertions(+), 7 deletions(-) -- 2.9.0 diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h index 0a1d1f175b7a..a8f469333027 100644 --- a/arch/arm/mach-imx/common.h +++ b/arch/arm/mach-imx/common.h @@ -67,6 +67,7 @@ void imx_gpc_set_arm_power_in_lpm(bool power_off); void imx_gpc_set_arm_power_up_timing(u32 sw2iso, u32 sw); void imx_gpc_set_arm_power_down_timing(u32 sw2iso, u32 sw); void imx25_pm_init(void); +void imx27_pm_init(void); enum mxc_cpu_pwr_mode { WAIT_CLOCKED, /* wfi only */ diff --git a/arch/arm/mach-imx/imx27-dt.c b/arch/arm/mach-imx/imx27-dt.c index 26490de9c038..6a94553dc13d 100644 --- a/arch/arm/mach-imx/imx27-dt.c +++ b/arch/arm/mach-imx/imx27-dt.c @@ -26,5 +26,6 @@ static const char * const imx27_dt_board_compat[] __initconst = { DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)") .map_io = mx27_map_io, .init_irq = mx27_init_irq, + .init_late = imx27_pm_init, .dt_compat = imx27_dt_board_compat, MACHINE_END diff --git a/arch/arm/mach-imx/mm-imx27.c b/arch/arm/mach-imx/mm-imx27.c index 7d82a5a5b16b..862b9b7762c7 100644 --- a/arch/arm/mach-imx/mm-imx27.c +++ b/arch/arm/mach-imx/mm-imx27.c @@ -98,4 +98,6 @@ void __init imx27_soc_init(void) /* imx27 has the imx21 type audmux */ platform_device_register_simple("imx21-audmux", 0, imx27_audmux_res, ARRAY_SIZE(imx27_audmux_res)); + + imx27_pm_init(); } diff --git a/arch/arm/mach-imx/pm-imx27.c b/arch/arm/mach-imx/pm-imx27.c index 43096c8990d4..d943535566c8 100644 --- a/arch/arm/mach-imx/pm-imx27.c +++ b/arch/arm/mach-imx/pm-imx27.c @@ -37,13 +37,7 @@ static const struct platform_suspend_ops mx27_suspend_ops = { .valid = suspend_valid_only_mem, }; -static int __init mx27_pm_init(void) +void __init imx27_pm_init(void) { - if (!cpu_is_mx27()) - return 0; - suspend_set_ops(&mx27_suspend_ops); - return 0; } - -device_initcall(mx27_pm_init); From patchwork Fri Jun 24 10:50:00 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 102090 Delivered-To: patch@linaro.org Received: by 10.140.28.4 with SMTP id 4csp880318qgy; Fri, 24 Jun 2016 03:49:30 -0700 (PDT) X-Received: by 10.98.93.65 with SMTP id r62mr6011550pfb.114.1466765370155; Fri, 24 Jun 2016 03:49:30 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g3si6229668pfg.118.2016.06.24.03.49.29; Fri, 24 Jun 2016 03:49:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751465AbcFXKt1 (ORCPT + 30 others); Fri, 24 Jun 2016 06:49:27 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:50848 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751014AbcFXKsv (ORCPT ); Fri, 24 Jun 2016 06:48:51 -0400 Received: from wuerfel.lan. ([78.42.132.4]) by mrelayeu.kundenserver.de (mreue104) with ESMTPA (Nemesis) id 0Lecww-1bicOQ2Am6-00qRGC; Fri, 24 Jun 2016 12:48:12 +0200 From: Arnd Bergmann To: Shawn Guo Cc: linux-arm-kernel@lists.infradead.org, Sascha Hauer , Fabio Estevam , linux-kernel@vger.kernel.org, Arnd Bergmann Subject: [PATCH 5/6] ARM: imx: remove last call to cpu_is_mx5* Date: Fri, 24 Jun 2016 12:50:00 +0200 Message-Id: <20160624105001.3166287-6-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20160624105001.3166287-1-arnd@arndb.de> References: <20160624105001.3166287-1-arnd@arndb.de> X-Provags-ID: V03:K0:E39brtvrp/kEcJ5JxcKmvKxkXS6e9DlWoBNtVTYJOdDpX6sB8rS Ak+TlAbZPDS5KxfhacG8lScBIL5xw7CTUsBa7RiGq/enX7BTbacLNkI7De8IIw/tSWeaoOV WhfQaHUz71SULej+Gm0EpBoBLaoQBHaqGwqCuJUN9xtiE+DHhEHN2EcV9HLr5ymZ8p9BxAQ W4ax4F5vbjKhqtyAy2Fyw== X-UI-Out-Filterresults: notjunk:1; V01:K0:8cLHWv9G2v8=:HseDjSQzmODtjip/1Us3y2 umA2KJWUHLqWcWIZGqymlhpMXxdP2tutOi5fXMPlMGSB5sMkEGKXrvBJsygEZXggTNjIY7APg DDKEF4W2yl2/Jz8Adake4n4xVL6MBVL/20Z4Bdf09T8p7gA2hI+0K55Sb2F7Cht4dk/bMBjv4 QY9rZKrImDXjsIbW4XeMlLWFVQFi71o0wMbb/aui+ng9FmqIemT9LRWVUzBg0y/kZNVF3FioB +sr590o8vwiHg20BHzJCjUUAjVhHGIG9DlB3e3sq6pBsstCFf6AaIvysKIrhs36em2dgJ6Uz8 YSqEkxe5I4xtUKCcCFGSsjwW50bLTKxXBWb0zd8lRPUiO4aRi8/tJYzoIYwUbn2VF52e50Ub8 jK1dFdd/Ohm9pctwt6nyniy6OivHcN8AXgAYKvh9pAhM0qJYdM8qC+FRIrQeiL0hfSsBrB2MF hloMumR87BsJ1c3XA+MchoWnSU6w1UJE3OuaVNpGYCBorvK6bg9ixX3X5ISkVIPAVZZkIbD+Y NZ8lyf2ue87oYSPiIJFryIm/10pN0LVDwivxkj1mmCFhO0jYVNSr8Z9XbaA4tpRAsnIgev8Hb cpE2OQ42fmtawqEb0hHY3lMqV3ZKxZMgR3GgFrakM0PYiZTR/O6XWVKowcr99ar3LR0Raa0S2 poITUa3kLiZ2WYodsOUeO0LDBwOGZULA9V/PiB20upVgKlo3paw0UKFhllUzJOtI2xm0= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The check for cpu_is_mx51/cpu_is_mx53() in mx51_revision()/mx53_revision() is just a safety precaution, but there are only two callers of this are using it only on the correct CPUs, and none of the other respective functions have this extra check. Removing these lets us kill off the cpu_is_* functions. Signed-off-by: Arnd Bergmann --- arch/arm/mach-imx/cpu-imx5.c | 8 -------- 1 file changed, 8 deletions(-) -- 2.9.0 diff --git a/arch/arm/mach-imx/cpu-imx5.c b/arch/arm/mach-imx/cpu-imx5.c index 3403bac94a31..4f2d1c772f85 100644 --- a/arch/arm/mach-imx/cpu-imx5.c +++ b/arch/arm/mach-imx/cpu-imx5.c @@ -60,13 +60,9 @@ static int get_mx51_srev(void) /* * Returns: * the silicon revision of the cpu - * -EINVAL - not a mx51 */ int mx51_revision(void) { - if (!cpu_is_mx51()) - return -EINVAL; - if (mx5_cpu_rev == -1) mx5_cpu_rev = get_mx51_srev(); @@ -112,13 +108,9 @@ static int get_mx53_srev(void) /* * Returns: * the silicon revision of the cpu - * -EINVAL - not a mx53 */ int mx53_revision(void) { - if (!cpu_is_mx53()) - return -EINVAL; - if (mx5_cpu_rev == -1) mx5_cpu_rev = get_mx53_srev();