From patchwork Mon Oct 14 13:58:22 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gregory CLEMENT X-Patchwork-Id: 3036651 Return-Path: X-Original-To: patchwork-linux-pm@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 C8280BF924 for ; Mon, 14 Oct 2013 13:59:19 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 9DBF320253 for ; Mon, 14 Oct 2013 13:59:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F323C2030D for ; Mon, 14 Oct 2013 13:59:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756469Ab3JNN7D (ORCPT ); Mon, 14 Oct 2013 09:59:03 -0400 Received: from top.free-electrons.com ([176.31.233.9]:60834 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756346Ab3JNN65 (ORCPT ); Mon, 14 Oct 2013 09:58:57 -0400 Received: by mail.free-electrons.com (Postfix, from userid 106) id 7C0E7EF2; Mon, 14 Oct 2013 15:59:02 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,KHOP_BIG_TO_CC, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Received: from localhost (tra42-5-83-152-246-54.fbx.proxad.net [83.152.246.54]) by mail.free-electrons.com (Postfix) with ESMTPSA id 9FAF6BA5; Mon, 14 Oct 2013 15:58:59 +0200 (CEST) From: Gregory CLEMENT To: Daniel Lezcano , "Rafael J. Wysocki" , linux-pm@vger.kernel.org, lorenzo.pieralisi@arm.com, Jason Cooper , Andrew Lunn , Gregory CLEMENT Cc: Thomas Petazzoni , Ezequiel Garcia , Sebastian Hesselbarth , linux-arm-kernel@lists.infradead.org, Nicolas Pitre , Lior Amsalem , Maen Suleiman , Tawfik Bayouk , Shadi Ammouri , Eran Ben-Avi , Yehuda Yitschak , Nadav Haklai , Ike Pan , Dan Frazier , Leif Lindholm , Jon Masters , David Marlin Subject: [PATCH v3 10/14] ARM: mvebu: Set the start address of a CPU in a separate function Date: Mon, 14 Oct 2013 15:58:22 +0200 Message-Id: <1381759106-15004-11-git-send-email-gregory.clement@free-electrons.com> X-Mailer: git-send-email 1.8.1.2 In-Reply-To: <1381759106-15004-1-git-send-email-gregory.clement@free-electrons.com> References: <1381759106-15004-1-git-send-email-gregory.clement@free-electrons.com> Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Spam-Level: * X-Virus-Scanned: ClamAV using ClamSMTP Setting the start (or boot) address of A CPU is no more used only during SMP bring up, but will also be used by the CPU idle functions or later by the CPU hot plug ones. This commit moves it in a separate function and exports it. Signed-off-by: Gregory CLEMENT --- arch/arm/mach-mvebu/pmsu.c | 10 ++++++++-- include/linux/armada-370-xp-pmsu.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-mvebu/pmsu.c b/arch/arm/mach-mvebu/pmsu.c index d0a02bc..e394f08 100644 --- a/arch/arm/mach-mvebu/pmsu.c +++ b/arch/arm/mach-mvebu/pmsu.c @@ -56,6 +56,13 @@ static struct of_device_id of_pmsu_table[] = { { /* end of list */ }, }; +void armada_370_xp_pmsu_set_start_addr(void *start_addr, int hw_cpu) +{ + writel(virt_to_phys(start_addr), pmsu_mp_base + + PMSU_BOOT_ADDR_REDIRECT_OFFSET(hw_cpu)); +} +EXPORT_SYMBOL_GPL(armada_370_xp_pmsu_set_start_addr); + #ifdef CONFIG_SMP int armada_xp_boot_cpu(unsigned int cpu_id, void *boot_addr) { @@ -68,8 +75,7 @@ int armada_xp_boot_cpu(unsigned int cpu_id, void *boot_addr) hw_cpu = cpu_logical_map(cpu_id); - writel(virt_to_phys(boot_addr), pmsu_mp_base + - PMSU_BOOT_ADDR_REDIRECT_OFFSET(hw_cpu)); + armada_370_xp_pmsu_set_start_addr(boot_addr, hw_cpu); /* Release CPU from reset by clearing reset bit*/ reg = readl(pmsu_reset_base + PMSU_RESET_CTL_OFFSET(hw_cpu)); diff --git a/include/linux/armada-370-xp-pmsu.h b/include/linux/armada-370-xp-pmsu.h index 235a40c..e09977b 100644 --- a/include/linux/armada-370-xp-pmsu.h +++ b/include/linux/armada-370-xp-pmsu.h @@ -14,5 +14,6 @@ void armada_370_xp_pmsu_enable_l2_powerdown_onidle(void); void armada_370_xp_pmsu_idle_prepare(bool deepidle); void armada_370_xp_pmsu_idle_restore(void); +void armada_370_xp_pmsu_set_start_addr(void *start_addr, int hw_cpu); #endif /* __ARMADA_370_XP__PMSU_H */