Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752146AbbGaMxY (ORCPT ); Fri, 31 Jul 2015 08:53:24 -0400 Received: from mail-bn1on0114.outbound.protection.outlook.com ([157.56.110.114]:19414 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751013AbbGaMxX (ORCPT ); Fri, 31 Jul 2015 08:53:23 -0400 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; From: Chenhui Zhao To: , CC: , Subject: [PATCH 1/4] powerpc/85xx: support sleep feature on QorIQ SoCs with RCPM Date: Fri, 31 Jul 2015 20:53:03 +0800 Message-ID: <1438347186-8462-1-git-send-email-chenhui.zhao@freescale.com> X-Mailer: git-send-email 1.9.1 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD038;1:YCToJ5biDwoOJu1edRArfl+tzdpOAIc3cjYAo1PbNKdsJmrgz/yDHRqBMCUBpmSiSaCyggb3Jo7aLbcJhraxoGcNJG2hII/TouKoJDCQk5uXK2l9KKPMcunmxvsFV9YwNJwat6JbI4qyOR9u7zpq7eb8ZB+pB8QDVkkm6jXCrSzNLFjni7kp6aRgdZ9s2Lvu/kMn6sDKfjjIHuNjgb/FQ3uezR/okFJGAWa9b00UIOmOi+dxExvZ0gN4LzT1D0IzEtSDgUARhyu81Za5j5N1Bv9uSxx0H0fqBPgFVH/kTxDV9UR60kgaiRZc6XI6raJ8cr9VnjDysaTArHjYfVRrqA== X-Forefront-Antispam-Report: CIP:192.88.158.2;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6029001)(6009001)(2980300002)(339900001)(199003)(189002)(49486002)(92566002)(46102003)(19580405001)(62966003)(85426001)(19580395003)(6806004)(77156002)(106466001)(189998001)(47776003)(86362001)(5001920100001)(77096005)(33646002)(229853001)(105606002)(107886002)(50226001)(104016003)(87936001)(50986999)(5001770100001)(36756003)(48376002)(50466002)(5001960100002)(4001450100002)(4001430100001);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR03MB294;H:az84smr01.freescale.net;FPR:;SPF:Fail;MLV:sfv;A:1;MX:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB294;2:73usHhAJja5yo/qos8EEwSPeJ/lXq2NgVbboHdYgtwb5IBn5uzktExXSWusE0Ta/ksBdZjqOZ5ivn6SJnxqE8LytXpEsVkmQTYhqtserjidk3lLbnMK6AQOZKFf99eU9aA9S0S6IuY8F3vK3fhvy11jT8fjeBfkkcJpCoPpAqwY=;3:rmxA9F90GyddFspgE/NdMRtRxJHThEg5lzzcdAwZRTHTpU90d1xzJuJyq85e6SkG2QddS/dENe95M4a9uMxldf16ZMI2A8O3iMOiqcjCHHej3r2keh+ZlngkQr8QU9fW/fNkiccTUqVKudbNKXdUsrfaXqr3hg98GetV+I/Twk1qRbFNwN60uqC8OxSeoI0h++GHz1aFkAsDzhycYq2SycWsC7e8KoQ0Tk3yftm3vJE=;25:lNNAH8aiDWEjCcoR+L6CLQ5obH8+K1lEgUYwg+EDP0iZG+mpOtd0xTXTw6NCpsKxjQdS10SrWqtnNOWlQABndh/7CoM7DZ/Vgq4j0h5IX8uxGXEJJooVfmSbKyKNfJWhUmQF0omN3GP3peoB/jHvQHC946aR/EYGevjZgE5+S9a6tv+u5/0TfwTd0eeOUAgrlu8YuUzHWBYz5lm2XBd9gf3o8t9sZjUHHWXkdB8uAn/mH8XZLxAL0z/bLRzapZPDDCtOudx00Dj7Ot8SKygIVA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB294; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB294;20:RCatxanZAYK1FVAz3KOID/sqVP3/PEvk0+WHKpwOMiWx4ZTeMErYs3nJ6/oF5oaNUkzDEalTWT1/8CMDclXKeLKoyDk6Yufgug/LqcT09xaqSQ3+EPnv/docjszgh+xI4PHQ532mBlzZ6MMmN0W5mwtAUc4+IIixOFbynGDO4wk4AeY7qBgRpKgRYk/5SpucgLD62RKaaoo6OLEiu50iqW14BNLg1xf1A0mN+335GjY4f/idBPfguuVHuoG5MPKGM4PEdGKK9pHQ4IA5hF2CukC1doJXD1bPICvrcWyFinVWScJC4vigPKR2EnRJVSdgw9om+jgeOz1gfEyDtm0tyjqQFdJaujBOxZK8bfbFETc=;4:s+m1Fm8IDAsDdo5tYPPWRodDe2q+UmInMNX9bJUOOwKu/fO56YgXMunZQo+OXQuVH0z1T02GCvVImoz1de40ggJmSAKNJz5AMW9HJnQFHfcJ/HdOEwaY1b+lR2JlWMtdHzzFGSexfv89dGodD+4UXMdKTgE4+odcwGO7RBZgklAVVQ251gMOC0ruCiQNPOwCNeG0IoGl9Ks//U928CyYj8EdpGxsogdshJvB9K0MW+mljrRcnCpqqcVNbSSegjizPeFKD/Wf0BUbCo4q8onfqrMV2a7Xs5yfodYFVTEgAtg= BLUPR03MB294: X-MS-Exchange-Organization-RulesExecuted X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:BLUPR03MB294;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB294; X-Forefront-PRVS: 0654257CF5 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR03MB294;23:grAhiC2cJQTL72NVfpUvCZmqGh1nscCN5f9yklTet+?= =?us-ascii?Q?SDjY3caNkYOJzGy+yfEJVf9PfRRv6zEIgGytGep09MNAg+JwJd1pvS4dYRDN?= =?us-ascii?Q?+mYlQCUaIQx21/NYWLO9CjKMsrKirHvw4Z/OzvcdUlT2ZsQHG2zng8un42YR?= =?us-ascii?Q?juIquWzIKirJKHCkVYb6jEPwu7JLFldyjlmEiHbnlZWe6WYTUjnm5KP/c9TV?= =?us-ascii?Q?hssEA/jJ7+eWjDhtDfrfOwIEvxHlVpexDl6/ucMqdxAeWIymvwHtA2X563PO?= =?us-ascii?Q?9sSh5I3h8bKRnHmw4rV6yAic14i8YwIsCdnQSsUoT9J2gYFP4bbS6XAFjXux?= =?us-ascii?Q?fgsAPxupznl0Q6JoMwT0PMnh/HUhqtUnyt9VkIqyt+4TtyRotpoi8xJTABRW?= =?us-ascii?Q?ux2+sNyDMZ6AZ8FLWcmotcwsed/JMrinDt/mvwBnS6IcUOAXcT7TQCKc+3nK?= =?us-ascii?Q?71sGDiyOx5gOH7uRWWC6U81cB+POBwTFweBPqvcFNn2zzYvnHs1pm0yW1jBB?= =?us-ascii?Q?Ow+Lp2H2RJbwizVToct8r4eeoU1RFja+emkKP0lyPHQ19WjQdRWjhGdDZToo?= =?us-ascii?Q?iq/l2mwQDpn4PXqVj/BxoJC/R7heYBWN8wB66eyczJgMuo+HjebCUMyRIwn3?= =?us-ascii?Q?+SpxEY6V3hiJD+KQ+LIfFn5QsCphwX0XheQEZI7O7IOfbAfGUU0P/xb9uRvN?= =?us-ascii?Q?O37b1zO8GrQ7ab1Dghfkezg5npEpRa6+gWc22lNcIDT9mp1ELbLZcYI9oXuV?= =?us-ascii?Q?Jv8weY9/LP9k6j7tYmzOFw39WRuJH0TF+91ixawxDILkJfUPu2IEvPQXj/3Q?= =?us-ascii?Q?Nvakz61Aj5KWMv/8TR+/f1Kl63rJAC1+WduwRgTF5sE9yuSdvn4grXOKAvgd?= =?us-ascii?Q?UWnT3C7thZEo+16xf290thyfFjKEgVeISKML1ykAXUV7lNHSd+F/VVbODqCi?= =?us-ascii?Q?idnz4ymGgbprM/erdXLX07kDCFO/WNGljcgTYGPmTFwuGU24bYfsp7WBy+Sr?= =?us-ascii?Q?U=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB294;5:ZbaUzLCVaP5J5i6HQuQL76kpfAWHZi00u2SYFTqTDxPzk3ajZ/75XMQh0BEDqceCDoaRVqDBJdSfjO54UZtMqde5iXN1cw9euTwkwYL5rM+LRJFw8Ayqy9OleWBHT3GZTkMng+Ler2Anao125KU5QA==;24:5uWHYMlUf2pJsYTxFKGLqFc6vEDWyBjwUDKs5WiUxpqkaz27FrA5JAOlj7E++jFv75DVbjy63oQhNvZFXUrb2DjqsWDElenp7++Zt0LiHGM=;20:Ye1BGaisYIRU30prA9N9fE93lypHMjfVlYIsJNb5/9EFwIwwgHND1MU5dKLNaPZ0tuzx/VhqfztHrpsSuDCVFQ== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jul 2015 12:53:19.5765 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB294 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4551 Lines: 158 In sleep mode, the clocks of e500 cores and unused IP blocks is turned off. The IP blocks which are allowed to wake up the processor are still running. The sleep mode is equal to the Standby state in Linux. Use the command to enter sleep mode: echo standby > /sys/power/state Signed-off-by: Chenhui Zhao --- Note: This patch set is based on CPU hotplug patches. arch/powerpc/Kconfig | 3 +- arch/powerpc/platforms/85xx/Kconfig | 5 +++ arch/powerpc/platforms/85xx/Makefile | 1 + arch/powerpc/platforms/85xx/qoriq_pm.c | 59 ++++++++++++++++++++++++++++++++++ arch/powerpc/platforms/86xx/Kconfig | 1 + 5 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 arch/powerpc/platforms/85xx/qoriq_pm.c diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index dd9e252..57bbbfb 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -233,7 +233,7 @@ config ARCH_HIBERNATION_POSSIBLE config ARCH_SUSPEND_POSSIBLE def_bool y depends on ADB_PMU || PPC_EFIKA || PPC_LITE5200 || PPC_83xx || \ - (PPC_85xx && !PPC_E500MC) || PPC_86xx || PPC_PSERIES \ + FSL_SOC_BOOKE || PPC_86xx || PPC_PSERIES \ || 44x || 40x config PPC_DCR_NATIVE @@ -753,7 +753,6 @@ config FSL_PCI config FSL_PMC bool - default y depends on SUSPEND && (PPC_85xx || PPC_86xx) help Freescale MPC85xx/MPC86xx power management controller support diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig index e626461..dff2ea6 100644 --- a/arch/powerpc/platforms/85xx/Kconfig +++ b/arch/powerpc/platforms/85xx/Kconfig @@ -9,6 +9,8 @@ menuconfig FSL_SOC_BOOKE select SERIAL_8250_EXTENDED if SERIAL_8250 select SERIAL_8250_SHARE_IRQ if SERIAL_8250 select FSL_CORENET_RCPM if PPC_E500MC + select FSL_QORIQ_PM if SUSPEND && PPC_E500MC + select FSL_PMC if SUSPEND && !PPC_E500MC default y if FSL_SOC_BOOKE @@ -289,3 +291,6 @@ endif # FSL_SOC_BOOKE config TQM85xx bool + +config FSL_QORIQ_PM + bool diff --git a/arch/powerpc/platforms/85xx/Makefile b/arch/powerpc/platforms/85xx/Makefile index 7bc86da..fdae28b 100644 --- a/arch/powerpc/platforms/85xx/Makefile +++ b/arch/powerpc/platforms/85xx/Makefile @@ -3,6 +3,7 @@ # obj-$(CONFIG_SMP) += smp.o obj-$(CONFIG_FSL_PMC) += mpc85xx_pm_ops.o +obj-$(CONFIG_FSL_QORIQ_PM) += qoriq_pm.o obj-y += common.o diff --git a/arch/powerpc/platforms/85xx/qoriq_pm.c b/arch/powerpc/platforms/85xx/qoriq_pm.c new file mode 100644 index 0000000..27ec337 --- /dev/null +++ b/arch/powerpc/platforms/85xx/qoriq_pm.c @@ -0,0 +1,59 @@ +/* + * Support Power Management feature + * + * Copyright 2014-2015 Freescale Semiconductor Inc. + * + * Author: Chenhui Zhao + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include +#include +#include + +#include + +static int qoriq_suspend_enter(suspend_state_t state) +{ + int ret = 0; + + switch (state) { + case PM_SUSPEND_STANDBY: + cur_cpu_spec->cpu_down_flush(); + ret = qoriq_pm_ops->plat_enter_sleep(); + break; + default: + ret = -EINVAL; + } + + return ret; +} + +static int qoriq_suspend_valid(suspend_state_t state) +{ + unsigned int pm_modes; + + pm_modes = qoriq_pm_ops->get_pm_modes(); + + if ((state == PM_SUSPEND_STANDBY) && (pm_modes & FSL_PM_SLEEP)) + return 1; + + return 0; +} + +static const struct platform_suspend_ops qoriq_suspend_ops = { + .valid = qoriq_suspend_valid, + .enter = qoriq_suspend_enter, +}; + +static int __init qoriq_suspend_init(void) +{ + suspend_set_ops(&qoriq_suspend_ops); + + return 0; +} +arch_initcall(qoriq_suspend_init); diff --git a/arch/powerpc/platforms/86xx/Kconfig b/arch/powerpc/platforms/86xx/Kconfig index 1afd1e4..09638e0 100644 --- a/arch/powerpc/platforms/86xx/Kconfig +++ b/arch/powerpc/platforms/86xx/Kconfig @@ -5,6 +5,7 @@ menuconfig PPC_86xx select FSL_SOC select ALTIVEC select ARCH_WANT_OPTIONAL_GPIOLIB + select FSL_PMC if SUSPEND help The Freescale E600 SoCs have 74xx cores. -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/