From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932666AbcH2IHw (ORCPT ); Mon, 29 Aug 2016 04:07:52 -0400 Received: from mail-dm3nam03on0051.outbound.protection.outlook.com ([104.47.41.51]:21856 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756404AbcH2IHt (ORCPT ); Mon, 29 Aug 2016 04:07:49 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; pengutronix.de; dkim=none (message not signed) header.d=none;pengutronix.de; dmarc=fail action=none header.from=nxp.com; From: Anson Huang To: , CC: , , , , Subject: [PATCH V2] ARM: imx: add cpuidle support for i.mx6ul Date: Mon, 29 Aug 2016 23:41:12 +0800 Message-ID: <1472485272-17036-1-git-send-email-Anson.Huang@nxp.com> X-Mailer: git-send-email 1.9.1 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131169307686656490;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(626004)(87936001)(106466001)(50226002)(85426001)(5660300001)(4326007)(2906002)(50986999)(48376002)(11100500001)(8676002)(50466002)(5003940100001)(68736007)(97736004)(104016004)(5001770100001)(81166006)(229853001)(92566002)(86362001)(36756003)(586003)(81156014)(47776003)(8666005)(356003)(305945005)(8936002)(189998001)(105606002)(77096005)(7846002)(19580395003)(19580405001)(7059030)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR0301MB2011;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11OLC015;1:QKlQyhedvn3sDnGn0FOTOyX1RsR/GzJy6Q7nnh74th9TCPiqA3N++z4MGvKwp2TEn5BUcXbqMAdvyzKVcdZNP5XwqksRRhVUMUuP5AS96tQQtZXV6OAW93C8cgGrWBJ+Cx4evS1fUOnIMiFWIL4ynt5hZ800GyNlr4+mB+h6IYYJNmnh1/ft5QBsM2pC1h11uAJDBg1EgLS7zS5rpi6zbijhfa6f5h/t4ReeI3NpAW1B0Dwx+0T2CsNdf51MAAeLtdiEDz03IT6JWdkU4jw+qrq8T9V+8hz36Y0Q+R8wb8DfBaLiipCam1oq31szuipKilfPnszszNW/2govN8mlKYcF4Xl1FKyOgec2xrBhu8qZY2K614qjZfvfqWnPpAxpHjGUCAryAz57aAcGKup0SNrkf/oLdDL7T1MzomwaK9POC42KCHedf3yy9m0t+3XoSefmWEB7duZl1yVK2nohO3zuWRxIKSCw7f1KHU5w3CH06VjxeT73C7CnUzFQISsslIhfB46PJ0PqbGIwfHZKYQnVsanE/7TopBRQp+/P8dOeVcFPAsMn5xlZP695kkJ8vFOUjilNZkzE7dZGqd8eQKkRZ3Is5+bPaG6qrPzAlABjS+e3HXW/x/Y8eLAMW6UV MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: ab303dbd-9c37-474e-d9ea-08d3cfe1788f X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB2011;2:o0lAX85FhgzA9UDj99AM3j77C0FRKwEvqI6W9lqaMavbeD4Sr0lbiHEpRIgUiKe1UbOTlc6w8fGdEkg+oHZ8TqPcEY3jOozrjrlIFBZG8g7kN3W3h2i48k4wIaJi2ldbrGD2VetVdpL20+8KXYlCYnoePOT8DnahymfzNo2pMLyLMszLq98G+5AKicOfpht/;3:NkE8ICxpC+7d3E960HbooJwz7/tMDUkaZbFsDgqAgKYYcayvtt00vx3F1g+BF/InmD3VXemKycPcHcd/riq4u0tQwjQQ/SJE9Vbt9g/KIhSaGAeAwsu5QOoH5FByCAACFiY0lwgjpr7WD1mziUKYWbJWoBfKnGmNZmz9Sj6mTMxbbEKOVD+egwzSK3Z2MULlMUDbpwZKj9RPqD1bXVcoEmpZ6NduOBv4W0zkRySnc+8=;25:2Ku2uAODlbU9d2mqMrzFjc3sHm7QYauVM1V5yzPIHcRtWBUHJgdA8CmpyOYpBMbqy/S7zgIlmFaXn/7321w5+5tgQ+IjmvfOTMRwalWkZoc2wuzQuBPU2hYf9EcgqxGav/SeVBwYQlVtF3+bDILRr+zqTLa8CwKfcdSVACV83Glv2yL4qFyL+rWxbAv0rQoKYF8Pn1+3+YsSoNgffqHcx4TQo+XofHwPLJyb17FcSoLE4ApzvRroqFkMrOrk7WyMhh1UvU1XAxmEPsLcuHWCWuJ7lZRpJ4nBdWurBd1ZQi4bIx1ohPw33+WUb8tWsPu3+E9W90oyj1U4X65uB7z1xImjOgCW/aVKrp70Qdz+j5v83g+H8S7rtme765jS7nQFJHLiUqjDNlgfKJ1OfBK29RJ27FfFAysfXb/VNyxPTKE= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB2011; X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB2011;31:Vh+eJF+XC37khRJwtjm+bdcgfbIxzcfBYkzqU6ZCrTQ+fABN+EEBBqZk0g3IIoBh5jK0m66iMV+wDvL2AH+QfIqmYz6tMu7O1nLoGO9NqeknlU1cSrfg1lyvZzsJmR1n59rdJKwFsuCComiNRQNopesRPAZCug1sIPaMbzIzJba8h4kf48qAhFuvTJ/rfJ9Rghbe5TVkHhqXE4WV7TPRrwes/c5U74sQwNH1yOO8/Ic=;4:6RM/KFvD0NwHaZEDQnokiI4MrvWeX6a23vYXhlpjDGwVlLjXRftahP4vajilkud7uAMlZCkRcnJ0zKqcOz5GG3zzAjou83ymiWkJ7o/K46ZliqU6g2YwfjDj9HfYPG0Q8B6I0GU9RX3VjMy0gSD6CFeumZZh6Jurak/yyTjGBP7iEP0xHw+2Sg7FUtoOHKsOWw4XhPQbO2xgVeLJa1UukedN3okRwh/29jIJn28d73SjDtiZTEWDfIJrgfVwky6bWcsu5WrK9zjAodOt7a76FL7+PZ1+i0FpAYFua4W+GOVsTlX3dY77yRK4zH/eB282ccDul3OXEUFz5xaFbqAQq4itGEcglg2y457+uIkgS6/WbPIQng9dAHPDCWShGgZHE2V5SSJd6Bl0/Gz4f8oA6Vikr2wg3A3u/YdCYGFWGRHXzazv4Yaer1kNVWmuAKDrjI3UQbdR9wkkpWC5YF27KuqDtxZzG84704uk4wyhv9cFP+pu2qSxgZmIYLeia8xZ3c9xqFpUeC/u+MAXebVmOOf7gpp0eZRJTg09CUyCJFw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(13017025)(13015025)(13023025)(13024025)(13018025)(3002001)(10201501046)(6055026);SRVR:CY1PR0301MB2011;BCL:0;PCL:0;RULEID:(400006);SRVR:CY1PR0301MB2011; X-Forefront-PRVS: 0049B3F387 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR0301MB2011;23:/w72VIH2+zDg7EwAj6gqBDP4UHTn93HenBEBjTS?= =?us-ascii?Q?phS81K9twmpJzXRWUgslk72rtXsx3mhdFyy8pDBDkMv3mauvZPvnDy35DAuK?= =?us-ascii?Q?aOxrFPkJzyRuhj6REVdLIVk4Tx5go3lQQdV8WivzVBJZx8Km4SQA3B47PPeP?= =?us-ascii?Q?Lm8urcRipNXncoVV92bw8fv+jBOSrR/YwsTXX70ZOCbGQ82wy+PluDLn/cb0?= =?us-ascii?Q?Mb+Q974xSnqiL/a/6KtHSKQ7MtWhIebW3xQmlTMIDjqlR0G37cgqne5iCIls?= =?us-ascii?Q?pvyr6GDqJzoDRJJLr7cP9GvvVJ3SsYCxGwaYqrhn6dhGkw3hkheN3FG9NyGM?= =?us-ascii?Q?5wDUQTDHxmwJG96WfSxL315297YVQiTEbiYefBmUlLolcPu00KmBYDT2B2RP?= =?us-ascii?Q?VbN4+CHAKyjRLrSH2tgY03m9HhGyWFeCAuVXDwmhXg81QrSCubry0IPlAk/H?= =?us-ascii?Q?y0wOGJkCAa60lz56cz+/QxwNRYpmY/xscvm++k60xrvSnuQRVi65rtZJGyzo?= =?us-ascii?Q?SCpADy2h5KJV6xG/8R0f+baJhebiTsr2TtDI/agRcw0fmg89LuIFJCFMuwkZ?= =?us-ascii?Q?cJRMSWkhUHwdv6UqRvD3M+aYXuGJ7GnpYTU6THKeio/5G6+QgREry+zkGQc5?= =?us-ascii?Q?55oR4wAczgh39KKt6D0y5zmaLD8SWR7zHDOFp52uqiFPPDKK4RuTaFhHevkx?= =?us-ascii?Q?isu1tOFqD980pEiVQE4L8mGvh5ZFVS2a3jQZdt6mkk9RTcqrobRCfG7QRZBh?= =?us-ascii?Q?y2A+nlvUPx54Jz1UrS/lK2dWOEFjvwLeHxzI4kNqFESwUQ1h/g3N4Bks9jVj?= =?us-ascii?Q?UFiJ2tZYdBD19o3tLG+TG4wensGAYIVXDk4w1aQoJoRiqwU/GX7J8RP8eVt6?= =?us-ascii?Q?4k0enqMSrtVzopNI+Y/qwMtMUS3/cK17Mg0pVFhTF2XOXsk/vIY/S2/+L9UW?= =?us-ascii?Q?Djo8bRRheOxFewVMCS+NTu7Ua8HvBridIKHhn0dqSovUpP1AOmJbqJjBOFCY?= =?us-ascii?Q?BHUJdFmGWgkczZi82b065mTnpGooicqK+n8RPmUkuC+sbL3JVM/Y9u0cIkPD?= =?us-ascii?Q?rGz2FPbs5IAdDT+KQ5VxrWucJTNxRoIxYcU+scH76amInJA2GVmnzaFkOug/?= =?us-ascii?Q?bxV9IjnIvWTs=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB2011;6:Vw372RbSZnwZ8pBnFxHmvNqU3tamyz7x6cJ887AA6SsiNJnMiyY0mdVoaIIRRMYfaa+1+BlEUxhN4X3/Bdnl8Om/0DqHZcJ8y//sogNGZrmTzD3Xul1ksqhiWWExWZoQ5mUZNX5IBDMOcFNWzyjb7WcWoXo1GdkZz1w/MQOL/QIYwa3ZIxqGqIFXDTxhxjKTNerhmdXZgnffRbcRay2G6g8mf9dPvj1ig7ILIg+e5FxnZjccDe5zxZO3QBRIXch4A9V4Ot/Jcy0NAfDk8Xs3r+5rTVeUuSpkIUCXiCXuStM=;5:lPcXPkMqFN/cUkT0S+Z6q0BXlhh0JdjEOejC9j3FXgksMpk4MweGunS1G4ftXfIKBDlIIfAsgOkJs/Ta7J9vCV2ypgt0Q3FjzwupNSAjzUq78wyYGhGw97H7STcfvoVsvdfe+BPyu1/kpq3Dju6BIt+j+i6cAgCG9k+SRgtFlvs=;24:SFIrb0I61FRZ8jWhSHfSI5szM9MH497fC8PgTM2n4xVtLf42BBaZYxCYFrjLpOrnrKvE19oUCPcKSctnZU8knU10KWUbdXs7dapiIjh/pR8=;7:4Iy5boLSFsvTB2VoGXz011FiQ46hjekOQdOxjvsoVYLoH1TNvVD3ov7v2yMCO3nlsq3jwemXwvTQzFuZvjWYu2PERSk4y+bC6zUSHU54uWK/nnVe18b7GDszZO6FEj14TwXqqZEDJ9Gfk52FkceLO9Ot5INjOPCLIT4cYh6oQEAsNRvzZnsbH0WZhLSWUx1MMMdmkkyf8LfArhkyTjUygwFy76EHgnDNcuGzpRFy8uy+kQOMqtcnrEqmjIyJQy02 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2016 07:52:48.4628 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB2011 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch enables cpuidle driver for i.MX6UL, it reuses i.MX6SX's cpuidle driver, 3 levels of cpuidle supported: 1. ARM WFI; 2. SOC in WAIT mode; 3. SOC in WAIT mode + ARM power off. As i.MX6UL has cortex-A7 CORE with an internal L2 cache, so flushing it before powering down ARM platform is necessary, flush_cache_all() in last step of cpu_suspend has very small overhead, just call it to avoid cache type check for different platforms. Signed-off-by: Anson Huang --- changes since V1: remove L2 cache contional code, just call flush_cache_all is just fine since it has very small overhead for L1 cache flush. arch/arm/mach-imx/cpuidle-imx6sx.c | 10 ++++++++++ arch/arm/mach-imx/mach-imx6ul.c | 3 +++ 2 files changed, 13 insertions(+) diff --git a/arch/arm/mach-imx/cpuidle-imx6sx.c b/arch/arm/mach-imx/cpuidle-imx6sx.c index 261aaa4..c5a5c3a 100644 --- a/arch/arm/mach-imx/cpuidle-imx6sx.c +++ b/arch/arm/mach-imx/cpuidle-imx6sx.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -17,6 +18,15 @@ static int imx6sx_idle_finish(unsigned long val) { + /* + * for Cortex-A7 which has an internal L2 + * cache, need to flush it before powering + * down ARM platform, since flushing L1 cache + * here again has very small overhead, compared + * to adding conditional code for L2 cache type, + * just call flush_cache_all() is fine. + */ + flush_cache_all(); cpu_do_idle(); return 0; diff --git a/arch/arm/mach-imx/mach-imx6ul.c b/arch/arm/mach-imx/mach-imx6ul.c index 6bb7d9c..58a2b88 100644 --- a/arch/arm/mach-imx/mach-imx6ul.c +++ b/arch/arm/mach-imx/mach-imx6ul.c @@ -16,6 +16,7 @@ #include #include "common.h" +#include "cpuidle.h" static void __init imx6ul_enet_clk_init(void) { @@ -80,6 +81,8 @@ static void __init imx6ul_init_irq(void) static void __init imx6ul_init_late(void) { + imx6sx_cpuidle_init(); + if (IS_ENABLED(CONFIG_ARM_IMX6Q_CPUFREQ)) platform_device_register_simple("imx6q-cpufreq", -1, NULL, 0); } -- 1.9.1