From patchwork Mon Oct 14 13:58:20 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gregory CLEMENT X-Patchwork-Id: 3036641 Return-Path: X-Original-To: patchwork-linux-pm@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 A97E69F2B7 for ; Mon, 14 Oct 2013 13:59:18 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id F3DF920319 for ; Mon, 14 Oct 2013 13:59:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3FFF920174 for ; Mon, 14 Oct 2013 13:59:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756736Ab3JNN7A (ORCPT ); Mon, 14 Oct 2013 09:59:00 -0400 Received: from top.free-electrons.com ([176.31.233.9]:60873 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756734Ab3JNN66 (ORCPT ); Mon, 14 Oct 2013 09:58:58 -0400 Received: by mail.free-electrons.com (Postfix, from userid 106) id CA3DBBA5; 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 73223828; Mon, 14 Oct 2013 15:58:56 +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 08/14] ARM: mvebu: Allow to power down L2 cache controller in idle mode Date: Mon, 14 Oct 2013 15:58:20 +0200 Message-Id: <1381759106-15004-9-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 This commit adds an exported function which allows to power down the L2 cache controller and the Coherency Fabric when the CPU goes into deep idle mode. This feature is part of the Power Management Service Unit of the Armada 370 and Armada XP SoCs. Signed-off-by: Gregory CLEMENT --- arch/arm/mach-mvebu/pmsu.c | 14 ++++++++++++++ include/linux/armada-370-xp-pmsu.h | 16 ++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 include/linux/armada-370-xp-pmsu.h diff --git a/arch/arm/mach-mvebu/pmsu.c b/arch/arm/mach-mvebu/pmsu.c index f6b00fb..445c9a0 100644 --- a/arch/arm/mach-mvebu/pmsu.c +++ b/arch/arm/mach-mvebu/pmsu.c @@ -30,6 +30,9 @@ static void __iomem *pmsu_fabric_base; #define PMSU_BOOT_ADDR_REDIRECT_OFFSET(cpu) ((cpu * 0x100) + 0x24) #define PMSU_RESET_CTL_OFFSET(cpu) (cpu * 0x8) +#define L2C_NFABRIC_PM_CTL 0x4 +#define L2C_NFABRIC_PM_CTL_PWR_DOWN BIT(20) + static struct of_device_id of_pmsu_table[] = { {.compatible = "marvell,armada-370-xp-pmsu"}, { /* end of list */ }, @@ -78,4 +81,15 @@ int __init armada_370_xp_pmsu_init(void) return 0; } +void armada_370_xp_pmsu_enable_l2_powerdown_onidle(void) +{ + int reg; + + /* Enable L2 & Fabric powerdown in Deep-Idle mode - Fabric */ + reg = readl(pmsu_fabric_base + L2C_NFABRIC_PM_CTL); + reg |= L2C_NFABRIC_PM_CTL_PWR_DOWN; + writel(reg, pmsu_fabric_base + L2C_NFABRIC_PM_CTL); +} +EXPORT_SYMBOL_GPL(armada_370_xp_pmsu_enable_l2_powerdown_onidle); + early_initcall(armada_370_xp_pmsu_init); diff --git a/include/linux/armada-370-xp-pmsu.h b/include/linux/armada-370-xp-pmsu.h new file mode 100644 index 0000000..f85cbf7 --- /dev/null +++ b/include/linux/armada-370-xp-pmsu.h @@ -0,0 +1,16 @@ +/* + * Power Management Service Unit (PMSU) support for Armada 370/XP platforms. + * + * Copyright (C) 2013 Marvell + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +#ifndef __ARMADA_370_XP__PMSU_H +#define __ARMADA_370_XP__PMSU_H + +void armada_370_xp_pmsu_enable_l2_powerdown_onidle(void); + +#endif /* __ARMADA_370_XP__PMSU_H */