From patchwork Thu Nov 27 05:24:06 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lina Iyer X-Patchwork-Id: 41595 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ee0-f72.google.com (mail-ee0-f72.google.com [74.125.83.72]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 5843925E18 for ; Thu, 27 Nov 2014 05:25:03 +0000 (UTC) Received: by mail-ee0-f72.google.com with SMTP id e53sf2720839eek.3 for ; Wed, 26 Nov 2014 21:25:02 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:cc:subject :date:message-id:in-reply-to:references:sender:precedence:list-id :x-original-sender:x-original-authentication-results:mailing-list :list-post:list-help:list-archive:list-unsubscribe; bh=XkTEkTcLoGaPpGGnfGcCRiw1KLrKOiOmdYa8HcPo64w=; b=lVuzq+u1keU7GI3IZB0pSNGNLv+XETnUgqioBbV4dXAkJJyvgHX0muo733/g9ADdOV JYncXqwY313nvfgEy2mP4QGDG7+ZH6vF3tm8LFI/Yq+zAlImUMaY/jppGXZv9bV9Nmig YgwUVloex/y9m2C/Qyx0/d43Fv92+D8GMUaNKpsO+YE1jsX9NE7ALGwL35Do4E6aP592 hPdnm1NDjz+sLw3fE7jkDKvfpst/EEVnXDZuXsDXi2pVlmwONZP/t0Ui9v9304a3zjsh //wdk0bFrpmWWXsAwDvtWxRot4wPsdnH3FlPJ6LSQVNzdocvAAQvkpQRsgywq4/2J3jz X5Pg== X-Gm-Message-State: ALoCoQkgPfCIlL5gQIb5Y2NRQkRgq/kU8KeHTWrgZzxb8WrjM38D2RVHCB9ZNkzZ7ceQR6bNe+83 X-Received: by 10.181.13.147 with SMTP id ey19mr8004378wid.2.1417065902537; Wed, 26 Nov 2014 21:25:02 -0800 (PST) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.2.7 with SMTP id 7ls710456laq.88.gmail; Wed, 26 Nov 2014 21:25:02 -0800 (PST) X-Received: by 10.152.2.41 with SMTP id 9mr36464252lar.47.1417065902051; Wed, 26 Nov 2014 21:25:02 -0800 (PST) Received: from mail-lb0-f181.google.com (mail-lb0-f181.google.com. [209.85.217.181]) by mx.google.com with ESMTPS id e1si6209691lab.66.2014.11.26.21.25.02 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 26 Nov 2014 21:25:02 -0800 (PST) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.217.181 as permitted sender) client-ip=209.85.217.181; Received: by mail-lb0-f181.google.com with SMTP id 10so3532231lbg.26 for ; Wed, 26 Nov 2014 21:25:02 -0800 (PST) X-Received: by 10.112.38.4 with SMTP id c4mr21532671lbk.46.1417065901962; Wed, 26 Nov 2014 21:25:01 -0800 (PST) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.112.184.201 with SMTP id ew9csp747325lbc; Wed, 26 Nov 2014 21:24:59 -0800 (PST) X-Received: by 10.68.57.199 with SMTP id k7mr59192398pbq.25.1417065883839; Wed, 26 Nov 2014 21:24:43 -0800 (PST) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id sx4si4119657pbc.127.2014.11.26.21.24.42 for ; Wed, 26 Nov 2014 21:24:43 -0800 (PST) Received-SPF: none (google.com: linux-pm-owner@vger.kernel.org does not designate permitted sender hosts) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753778AbaK0FYf (ORCPT + 12 others); Thu, 27 Nov 2014 00:24:35 -0500 Received: from mail-pa0-f45.google.com ([209.85.220.45]:59662 "EHLO mail-pa0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753367AbaK0FYe (ORCPT ); Thu, 27 Nov 2014 00:24:34 -0500 Received: by mail-pa0-f45.google.com with SMTP id lj1so4315033pab.4 for ; Wed, 26 Nov 2014 21:24:34 -0800 (PST) X-Received: by 10.70.91.40 with SMTP id cb8mr60530261pdb.19.1417065874063; Wed, 26 Nov 2014 21:24:34 -0800 (PST) Received: from ubuntu.localdomain (c-24-8-37-141.hsd1.co.comcast.net. [24.8.37.141]) by mx.google.com with ESMTPSA id wl10sm5829131pbc.58.2014.11.26.21.24.32 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 26 Nov 2014 21:24:33 -0800 (PST) From: Lina Iyer To: daniel.lezcano@linaro.org, khilman@linaro.org, sboyd@codeaurora.org, galak@codeaurora.org, linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: lorenzo.pieralisi@arm.com, msivasub@codeaurora.org, devicetree@vger.kernel.org, Lina Iyer Subject: [PATCH v13 02/10] qcom: scm: Add SCM warmboot support for quad core SoCs Date: Wed, 26 Nov 2014 22:24:06 -0700 Message-Id: <1417065854-37745-3-git-send-email-lina.iyer@linaro.org> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1417065854-37745-1-git-send-email-lina.iyer@linaro.org> References: <1417065854-37745-1-git-send-email-lina.iyer@linaro.org> Sender: linux-pm-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: lina.iyer@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.217.181 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Quad core SoCs like APQ8074, APQ8064, APQ8084 need SCM support set up warm boot addresses in the Secure Monitor. Extend the SCM flags to support warm boot addresses for secondary cores. We do not need to export the warmboot flags. Move them into the implementation file. Signed-off-by: Lina Iyer Acked-by: Daniel Lezcano Reviewed-by: Stephen Boyd --- drivers/soc/qcom/scm-boot.c | 35 +++++++++++++++++++++++++++++++++++ include/soc/qcom/scm-boot.h | 3 +-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/drivers/soc/qcom/scm-boot.c b/drivers/soc/qcom/scm-boot.c index 60ff7b4..f653217a 100644 --- a/drivers/soc/qcom/scm-boot.c +++ b/drivers/soc/qcom/scm-boot.c @@ -21,6 +21,23 @@ #include #include +#define SCM_FLAG_WARMBOOT_CPU0 0x04 +#define SCM_FLAG_WARMBOOT_CPU1 0x02 +#define SCM_FLAG_WARMBOOT_CPU2 0x10 +#define SCM_FLAG_WARMBOOT_CPU3 0x40 + +struct scm_warmboot { + int flag; + void *entry; +}; + +static struct scm_warmboot scm_flags[] = { + { .flag = SCM_FLAG_WARMBOOT_CPU0 }, + { .flag = SCM_FLAG_WARMBOOT_CPU1 }, + { .flag = SCM_FLAG_WARMBOOT_CPU2 }, + { .flag = SCM_FLAG_WARMBOOT_CPU3 }, +}; + /* * Set the cold/warm boot address for one of the CPU cores. */ @@ -37,3 +54,21 @@ int scm_set_boot_addr(phys_addr_t addr, int flags) &cmd, sizeof(cmd), NULL, 0); } EXPORT_SYMBOL(scm_set_boot_addr); + +int scm_set_warm_boot_addr(void *entry, int cpu) +{ + int ret; + + /* + * Reassign only if we are switching from hotplug entry point + * to cpuidle entry point or vice versa. + */ + if (entry == scm_flags[cpu].entry) + return 0; + + ret = scm_set_boot_addr(virt_to_phys(entry), scm_flags[cpu].flag); + if (!ret) + scm_flags[cpu].entry = entry; + + return ret; +} diff --git a/include/soc/qcom/scm-boot.h b/include/soc/qcom/scm-boot.h index 6aabb24..529f55a 100644 --- a/include/soc/qcom/scm-boot.h +++ b/include/soc/qcom/scm-boot.h @@ -16,9 +16,8 @@ #define SCM_FLAG_COLDBOOT_CPU1 0x01 #define SCM_FLAG_COLDBOOT_CPU2 0x08 #define SCM_FLAG_COLDBOOT_CPU3 0x20 -#define SCM_FLAG_WARMBOOT_CPU0 0x04 -#define SCM_FLAG_WARMBOOT_CPU1 0x02 int scm_set_boot_addr(phys_addr_t addr, int flags); +int scm_set_warm_boot_addr(void *entry, int cpu); #endif