From patchwork Mon Sep 26 11:06:34 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sascha Hauer X-Patchwork-Id: 116404 Return-Path: X-Original-To: incoming-imx@patchwork.ozlabs.org Delivered-To: patchwork-incoming-imx@bilbo.ozlabs.org Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:4978:20e::2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 75BAAB6F72 for ; Mon, 26 Sep 2011 21:09:36 +1000 (EST) Received: from canuck.infradead.org ([2001:4978:20e::1]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1R893G-0005Tb-Fa; Mon, 26 Sep 2011 11:08:47 +0000 Received: from localhost ([127.0.0.1] helo=canuck.infradead.org) by canuck.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1R892n-0006lh-C7; Mon, 26 Sep 2011 11:08:17 +0000 Received: from metis.ext.pengutronix.de ([2001:6f8:1178:4:290:27ff:fe1d:cc33]) by canuck.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1R891C-0006Iw-0w for linux-arm-kernel@lists.infradead.org; Mon, 26 Sep 2011 11:06:40 +0000 Received: from octopus.hi.pengutronix.de ([2001:6f8:1178:2:215:17ff:fe12:23b0]) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1R8919-0008KK-1P; Mon, 26 Sep 2011 13:06:35 +0200 Received: from sha by octopus.hi.pengutronix.de with local (Exim 4.76) (envelope-from ) id 1R8918-0005Il-Oc; Mon, 26 Sep 2011 13:06:34 +0200 Date: Mon, 26 Sep 2011 13:06:34 +0200 From: Sascha Hauer To: Shawn Guo Subject: Re: [PATCH v3 4/6] arm/imx6q: add smp and cpu hotplug support Message-ID: <20110926110634.GR31404@pengutronix.de> References: <1317021651-17359-1-git-send-email-shawn.guo@linaro.org> <1317021651-17359-5-git-send-email-shawn.guo@linaro.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1317021651-17359-5-git-send-email-shawn.guo@linaro.org> X-Sent-From: Pengutronix Hildesheim X-URL: http://www.pengutronix.de/ X-IRC: #ptxdist @freenode X-Accept-Language: de,en X-Accept-Content-Type: text/plain X-Uptime: 12:53:40 up 96 days, 16:40, 45 users, load average: 3.80, 3.98, 3.19 User-Agent: Mutt/1.5.21 (2010-09-15) X-SA-Exim-Connect-IP: 2001:6f8:1178:2:215:17ff:fe12:23b0 X-SA-Exim-Mail-From: sha@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20090807-BlameThorstenAndJenny ( TRE 0.7.6 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20110926_070638_808753_6348BD6A X-CRM114-Status: GOOD ( 41.81 ) X-Spam-Score: -0.5 (/) X-Spam-Report: SpamAssassin version 3.3.1 on canuck.infradead.org summary: Content analysis details: (-0.5 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.5 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain Cc: linux-arm-kernel@lists.infradead.org, Arnd Bergmann , patches@linaro.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.12 Precedence: list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org List-Id: linux-imx-kernel.lists.patchwork.ozlabs.org On Mon, Sep 26, 2011 at 03:20:49PM +0800, Shawn Guo wrote: > It adds smp and cpu hotplug support for imx6q. > > Signed-off-by: Shawn Guo > --- > arch/arm/mach-imx/Kconfig | 1 + > arch/arm/mach-imx/Makefile | 4 ++ > arch/arm/mach-imx/head-v7.S | 71 ++++++++++++++++++++++++++ > arch/arm/mach-imx/hotplug.c | 44 ++++++++++++++++ > arch/arm/mach-imx/localtimer.c | 35 +++++++++++++ > arch/arm/mach-imx/platsmp.c | 85 +++++++++++++++++++++++++++++++ > arch/arm/plat-mxc/include/mach/common.h | 5 ++ > 7 files changed, 245 insertions(+), 0 deletions(-) > create mode 100644 arch/arm/mach-imx/head-v7.S > create mode 100644 arch/arm/mach-imx/hotplug.c > create mode 100644 arch/arm/mach-imx/localtimer.c > create mode 100644 arch/arm/mach-imx/platsmp.c > > diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig > index af73b3e..6ec758d 100644 > --- a/arch/arm/mach-imx/Kconfig > +++ b/arch/arm/mach-imx/Kconfig > @@ -623,6 +623,7 @@ config SOC_IMX6Q > bool "i.MX6 Quad support" > select ARM_GIC > select CPU_V7 > + select HAVE_ARM_SCU > select HAVE_IMX_GPC > select HAVE_IMX_MMDC > select HAVE_IMX_SRC > diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile > index 8c21fda..d46b2e7 100644 > --- a/arch/arm/mach-imx/Makefile > +++ b/arch/arm/mach-imx/Makefile > @@ -66,4 +66,8 @@ obj-$(CONFIG_DEBUG_LL) += lluart.o > obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o > obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o > obj-$(CONFIG_HAVE_IMX_SRC) += src.o > +obj-$(CONFIG_CPU_V7) += head-v7.o Can we have a AFLAGS_head-v7.o :=-Wa,-march=armv7-a here? Then you only have to adjust some Kconfig variables and can compile i.MX3 and i.MX6 together. I just gave it a test and it works on i.MX3, I don't have a i.MX6 platform to test on though. The following patch could be a starting point. I merged the imx-features branch into it so it probably won't apply cleanly on your series. 8<---------------------------------------- >From 010a61373355e6cba6856272e3fd8e22e8ee3ccd Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Mon, 26 Sep 2011 13:04:08 +0200 Subject: [PATCH] merge i.MX3 and i.MX6 Signed-off-by: Sascha Hauer --- arch/arm/Makefile | 3 +-- arch/arm/mach-imx/Kconfig | 7 +++---- arch/arm/mach-imx/Makefile | 1 + arch/arm/mm/Kconfig | 4 ++-- arch/arm/plat-mxc/Kconfig | 14 ++++++-------- 5 files changed, 13 insertions(+), 16 deletions(-) diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 89be85d..42ab385 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -155,9 +155,8 @@ machine-$(CONFIG_ARCH_MMP) := mmp machine-$(CONFIG_ARCH_MSM) := msm machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0 machine-$(CONFIG_ARCH_IMX_V4_V5) := imx -machine-$(CONFIG_ARCH_MX3) := imx +machine-$(CONFIG_ARCH_IMX_V6_V7) := imx machine-$(CONFIG_ARCH_MX5) := mx5 -machine-$(CONFIG_ARCH_MX6) := imx machine-$(CONFIG_ARCH_MXS) := mxs machine-$(CONFIG_ARCH_NETX) := netx machine-$(CONFIG_ARCH_NOMADIK) := nomadik diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 3852f45..27355cb 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -74,6 +74,7 @@ config SOC_IMX31 select ARCH_MXC_AUDMUX_V2 select ARCH_MX31 select MXC_AVIC + select SMP_ON_UP if SMP config SOC_IMX35 bool @@ -83,6 +84,7 @@ config SOC_IMX35 select HAVE_EPIT select ARCH_MX35 select MXC_AVIC + select SMP_ON_UP if SMP if ARCH_IMX_V4_V5 @@ -351,7 +353,7 @@ config MACH_IMX27IPCAM endif -if ARCH_MX3 +if ARCH_IMX_V6_V7 comment "MX31 platforms:" @@ -601,9 +603,6 @@ config MACH_VPR200 Include support for VPR200 platform. This includes specific configurations for the board and its peripherals. -endif - -if ARCH_MX6 comment "i.MX6 family:" config SOC_IMX6Q diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index aa1cf0c..b9dffe5 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -66,6 +66,7 @@ obj-$(CONFIG_DEBUG_LL) += lluart.o obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o obj-$(CONFIG_HAVE_IMX_SRC) += src.o +AFLAGS_head-v7.o :=-Wa,-march=armv7-a obj-$(CONFIG_CPU_V7) += head-v7.o obj-$(CONFIG_SMP) += platsmp.o obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index c3ce146..9ab5be0 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig @@ -819,10 +819,10 @@ config CACHE_FEROCEON_L2_WRITETHROUGH config CACHE_L2X0 bool "Enable the L2x0 outer cache controller" depends on REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || MACH_REALVIEW_PB1176 || \ - REALVIEW_EB_A9MP || SOC_IMX35 || SOC_IMX31 || MACH_REALVIEW_PBX || \ + REALVIEW_EB_A9MP || ARCH_IMX_V6_V7 || MACH_REALVIEW_PBX || \ ARCH_NOMADIK || ARCH_OMAP4 || ARCH_EXYNOS4 || ARCH_TEGRA || \ ARCH_U8500 || ARCH_VEXPRESS_CA9X4 || ARCH_SHMOBILE || \ - ARCH_PRIMA2 || ARCH_ZYNQ || ARCH_CNS3XXX || ARCH_MX6 + ARCH_PRIMA2 || ARCH_ZYNQ || ARCH_CNS3XXX default y select OUTER_CACHE select OUTER_CACHE_SYNC diff --git a/arch/arm/plat-mxc/Kconfig b/arch/arm/plat-mxc/Kconfig index 82b0d92..43efc3c 100644 --- a/arch/arm/plat-mxc/Kconfig +++ b/arch/arm/plat-mxc/Kconfig @@ -16,10 +16,13 @@ config ARCH_IMX_V4_V5 This enables support for systems based on the Freescale i.MX ARMv4 and ARMv5 SoCs -config ARCH_MX3 - bool "MX3-based" +config ARCH_IMX_V6_V7 + bool "i.MX3, i.MX6" + select AUTO_ZRELADDR + select ARM_PATCH_PHYS_VIRT help - This enables support for systems based on the Freescale i.MX3 family + This enables support for systems based on the Freescale i.MX3 and i.MX6 + family. config ARCH_MX5 bool "i.MX50, i.MX51, i.MX53" @@ -29,11 +32,6 @@ config ARCH_MX5 This enables support for machines using Freescale's i.MX50 and i.MX51 processors. -config ARCH_MX6 - bool "i.MX6" - help - This enables support for systems based on the Freescale i.MX6 family - endchoice source "arch/arm/mach-imx/Kconfig"