From patchwork Tue Nov 24 06:55:29 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hongtao Jia X-Patchwork-Id: 547864 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 2C9E71402D7 for ; Tue, 24 Nov 2015 18:20:20 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 128051A1B35 for ; Tue, 24 Nov 2015 18:20:20 +1100 (AEDT) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0137.outbound.protection.outlook.com [65.55.169.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 18F631A2AB1 for ; Tue, 24 Nov 2015 18:17:06 +1100 (AEDT) Received: from BY2PR03CA012.namprd03.prod.outlook.com (10.255.93.29) by BY2PR03MB160.namprd03.prod.outlook.com (10.242.36.22) with Microsoft SMTP Server (TLS) id 15.1.318.15; Tue, 24 Nov 2015 07:02:37 +0000 Received: from BN1BFFO11FD014.protection.gbl (10.255.93.4) by BY2PR03CA012.outlook.office365.com (10.255.93.29) with Microsoft SMTP Server (TLS) id 15.1.331.20 via Frontend Transport; Tue, 24 Nov 2015 07:02:37 +0000 Authentication-Results: spf=permerror (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; freescale.mail.onmicrosoft.com; dmarc=none action=none header.from=freescale.com; Received-SPF: PermError (protection.outlook.com: domain of freescale.com used an invalid SPF mechanism) Received: from az84smr01.freescale.net (192.88.158.2) by BN1BFFO11FD014.mail.protection.outlook.com (10.58.144.77) with Microsoft SMTP Server (TLS) id 15.1.331.11 via Frontend Transport; Tue, 24 Nov 2015 07:02:36 +0000 Received: from titan.ap.freescale.net ([10.192.208.233]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id tAO72Vj7026475; Tue, 24 Nov 2015 00:02:32 -0700 From: Jia Hongtao To: , Subject: [PATCH] cpufreq: qoriq: Register cooling device based on device tree Date: Tue, 24 Nov 2015 14:55:29 +0800 Message-ID: <1448348129-46675-1-git-send-email-hongtao.jia@freescale.com> X-Mailer: git-send-email 2.1.0.27.g96db324 X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD014; 1:RCERx13hXaRBqQKCLoLItj1a6ANACckpx7YYYq3b81/4r2CKO2MOK8JE2itPya4MwZPmnjtVxiReXmNWEs8aO/Rmzu21uxOTBsC0I2tgHRCLRNXjD2EjDaALA4okbnGIju5BUf/9KCmpH1Jhir714psS8h17Gl2rh5sKRuSpg+N+0vD1oOYeeCAkGjfqXx1ogxD9oxHaIs2NKQbMRPscLLqNWbecZYvXJOUpVfs3dNviMaWbhyBFgcMnJjUOlDROL1qsVT4OfVxVeoKuZLen2ZCsOpZgQOBIjResmKKHCtxLt9yI4512nExwwiTdPqGMWMgvDpP8Pu+c56n4ZG6tnU4FIQh8xk4s3yTv1yxCaR3ctwbVCkUTVFpEeAtSsPYFHdLuHQHQqyYi5AK5TZJW2dRirvbMflJ7K/IpHq6q5eA= X-Forefront-Antispam-Report: CIP:192.88.158.2; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(448002)(189002)(199003)(5008740100001)(107886002)(5001920100001)(97736004)(586003)(47776003)(19580405001)(106466001)(77096005)(5001960100002)(50226001)(81156007)(4001430100002)(92566002)(229853001)(50986999)(69596002)(5007970100001)(5001770100001)(36756003)(104016004)(86362001)(189998001)(19580395003)(5003940100001)(50466002)(85326001)(48376002)(11100500001)(15975445007)(6806005)(87936001)(33646002); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR03MB160; H:az84smr01.freescale.net; FPR:; SPF:PermError; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB160; 2:MehBznZCplWBAGuyMf17zojRroRpkTaWIqC74KURpwhQDf+SKaTDH+7obOv9LrB7Hsl2yabHBREeYzyzJn10LtuTLpWoUV33m6QTt+YEcsWbjK2NjOT/IU0JfSrPGyBm4Gake2wjSl4s2qi20tRbAlSChGAX/J/tv0XMrDqHcvs=; 3:0MEAWIeAHIkpYFeJm7sLd3k5KaaeBxkxHTfL/y1IJjsOuLp6jjq5t52mIWHgcx+hViqPgf2w1phaAH9LBiqRAvwGfVucUozQbpIUXxtJoyTfDtOT18J9ruRHEHcimt3QIjld/+CqGerUxt/o7vIiSsSezbdom12jK1Sz78CGo3GRCsrwVh5x+U/HRUAZvdlJg7jd3Ey98U9lV6RNzL/Zd+Qki6eqOWKY7MuhnNP4QMA=; 25:Pp7u7iGm+HPP1BJL9KJDvT59TuQJ0tbbo9dEzcOpQqEZFnJ5XIFBd1cKvC3VV82yv/1F8A33eadk0bMfMN/omIsqm1D8xPpLyGf6Qn2v/XMJXGdy3+2GdpZpCzWEBTiHhEYyoXAQag0cvScpsVUtN9P2dCVxNZZaB7qpzgfu45P7G56jxA8uwZ0+HCtW7xwKkvIZa99q+vnMhmXiv3yLHFAsjCBvRxHOlghJ6Yd8Znlg2jUXL/KE/nHfg7GtgAB6 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB160; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB160; 20:PiXTO1JnR4VNBhAIBEZ78R2KATuNP7KwaobtzKEEHXgKUvEmmt9b/1b8Y2CANO9tTrIeEcGIBT/nR5uYe1DnzBHBQgNqJ/bh/4BqNdlayhcg8OauHB+wdJWL6RgQ5nkA24ji4O8wZCSxj9ey9dXlLaDT2yvSWN55XeMLrz6RqWN2y78h1i7ekoLEEVVFCYgK8eZS0GA5x+hU88PT4v7qYOvRAqgzjiNrMDDTUqbKF+6pGfkJTPW1XSpQNqbufIxQ2kQrdPqz1LtAPjmzYY+o4QWxj08oVgXNbWFv/rDgZb5cj7YPxnNHcAliqknVJTXfvyk4kMPjKfbMPfgS5puFnv4W2P3CPcb3lXzcBN0zliY=; 4:cl3plj5vYQxQ/g/4ol66N5XVmOVGYuhjRtxKtk8G1MsaOsjNVjtT2/daa+s1tG390x9dUYvcLtt+W4K2BIxNKJo87NqJ0xHegddphjk1e6A8BKHZQ8NXO81+GIUU1q8Iq9ikJTL5MYkCDSkE85/j00y9Pu3kuc4Z1ppLtabBYUSk48OQ5JUcBPAA3pNz8aHjPbQzEfghafkMgqb4Nx3gYqM/xlW6ZsBWJ8QWHbw6g9s5eWg7gX24Ty37RD/0hkE8NB8Rwc66lyeEd4YQGOfUJwjKcKf3t2c5C/DHYyx51W5jeCJsgipf1mTf7bHr4bIzE9Sn2oQxKjcwjb930T5MYPfNo4F0b+UcovgwL1rGtP5O4KoLA7POyiuvu1iLsT+Z X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(10201501046)(3002001); SRVR:BY2PR03MB160; BCL:0; PCL:0; RULEID:; SRVR:BY2PR03MB160; X-Forefront-PRVS: 0770F75EA9 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR03MB160; 23:jE9iqGHwGIIkKGpl8YU3iXLBo04ZPeGfa4SdhwSu7o?= =?us-ascii?Q?yCUfSAz8Fn76+KqRAm5rcyw1Ju7oYxdE1zeh3n77rHz04yvhL6+HaJ9hSfiY?= =?us-ascii?Q?Xy/s1lJMQbsI3wp1DvCGvyaW5sOp3My+Ddgh5FcC0x1RK/ZVla5UOs/nWyLF?= =?us-ascii?Q?St7+qIdM6qKnUVTCXC7HKERLeXC/SgjYyJCyKGB93P0XOxYMo8D+8JaB4huZ?= =?us-ascii?Q?Jhn8Sp6cHiR6cr2+P4dyFgXCG+9BhD1pV+4OHJfzBdXsh13QvbpVx8hc+bgZ?= =?us-ascii?Q?bOkzDIZg/Kds0zdYTmuNxINFrl19pd+LTjHu9wVkVXFVv4vdpi+qBMxdV0TR?= =?us-ascii?Q?E4cAAfSrjc47qhFYhy8AwJlXfcohZSa/u6j2orubfC8/YiTMMq4GPnLD/Q6B?= =?us-ascii?Q?6GAFAuTYURox7WXXhVtG3UIlN+LKZ/wPsy053APKnhSbYE6NanXB0fCyEI5v?= =?us-ascii?Q?4k6vus4qWEPmpD+9nGotlOH2bgTHnvNomFP3gGjX6E5VbCCFrE9EE+vruJWX?= =?us-ascii?Q?DAFp0grj+t4Eu0yXsmmtQ+x+0rESVKwye8RDAIrj8k0czWViCbhNJSFN9VhW?= =?us-ascii?Q?IwP0oT/G3VNFKuG2OxvHkWZ3UCsgC9gDncySLok/r6kEnKkjXTgS52+UCnKP?= =?us-ascii?Q?vyKOdrTwJUi6/Cne1XFsPczBkGwCb2/2RFrE8mHDPxYK0z/sch4/ZSWWVG7g?= =?us-ascii?Q?3X7USxe5VF2f1i4SFWJsUOIVXW55+UDQr+liNTQeb06vj7x5984kit4nmmrd?= =?us-ascii?Q?AI0/QsAdk2Y0PyZGI+TAszD+hGrKzJx85jCVmFhWDX6uGBkHxyzUGcBxa1IC?= =?us-ascii?Q?ltv5poamLsPnNwc5sU/3x1pJPy9fJdJWgLjXeQ8fp8Es157+EI79aPm/7wz7?= =?us-ascii?Q?xVR0hFq9ert9KxIcqHZmxhDxNzddxyNr4AycYujyH6pcKnAULp+tmNrY92nt?= =?us-ascii?Q?aq3Z5abjO4LKXfm7nEXxpsYgFkhHWLsoZW/dWIrAEE8PPAFiOYBtTWw4H8kV?= =?us-ascii?Q?0F0FsFEp1dQ873jSXZNGms2g0edbiKGmlLZyg+HOzbG3g+lniIJhag9SAGuJ?= =?us-ascii?Q?MAhUI=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB160; 5:J3OAiXcNvkt+ZTbIncZgOnVa8b36giedLHvP/F1TjLwrKDNKOQx8V7F3I0itJg5prbfgA9rV/YpWpGn6w4PlIP5gYX1hajX/RCd1nLuAYbLE7gLbb+pcAUiFusCSNVDxPex6bwYf1rZz5c9QJv5d2w==; 24:ZBLOV6mfxTPboOLr26jpNvBhmZK0pXt60PI1Gbtqp2fpatxlJRPcih7/JVkwGMtHsoDvjI36T1ZbWbSl5RXTZHWXGbO2QMg5tf5J44a+MD8=; 20:cCvzLmYHsNH9RY8N+1irxi/vK1E0V6yCiTeu0Ltf/wZVuV9QozZMR73v2vGWl+uk/ZFbWkQMWdKhyzDbRC4pjA== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Nov 2015 07:02:36.7540 (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: BY2PR03MB160 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: scottwood@freescale.com, devicetree@vger.kernel.org, hongtao.jia@freescale.com, linuxppc-dev@lists.ozlabs.org, linux-pm@vger.kernel.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Register the qoriq cpufreq driver as a cooling device, based on the thermal device tree framework. When temperature crosses the passive trip point cpufreq is used to throttle CPUs. Signed-off-by: Jia Hongtao Reviewed-by: Scott Wood --- This patch depends on following patches from Scott Wood: http://patchwork.ozlabs.org/patch/519803/ http://patchwork.ozlabs.org/patch/519804/ drivers/cpufreq/qoriq-cpufreq.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/cpufreq/qoriq-cpufreq.c b/drivers/cpufreq/qoriq-cpufreq.c index 4f53fa2..cb1bc3c 100644 --- a/drivers/cpufreq/qoriq-cpufreq.c +++ b/drivers/cpufreq/qoriq-cpufreq.c @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -33,6 +34,7 @@ struct cpu_data { struct clk **pclk; struct cpufreq_frequency_table *table; + struct thermal_cooling_device *cdev; }; /* @@ -292,7 +294,11 @@ static const struct of_device_id node_matches[] __initconst = { static int __init qoriq_cpufreq_init(void) { int ret; - struct device_node *np; + struct device_node *np; + struct device_node *cpu_np; + unsigned int cpu_id; + struct cpufreq_policy cpu_policy; + struct cpu_data *cpud; const struct of_device_id *match; const struct soc_data *data; @@ -309,6 +315,22 @@ static int __init qoriq_cpufreq_init(void) return -ENODEV; ret = cpufreq_register_driver(&qoriq_cpufreq_driver); + + /* Register CPU cooling device for QorIQ platform */ + for_each_node_with_property(cpu_np, "#cooling-cells") { + of_property_read_u32(cpu_np, "reg", &cpu_id); + cpufreq_get_policy(&cpu_policy, cpu_id); + + cpud = cpu_policy.driver_data; + cpud->cdev = of_cpufreq_cooling_register(cpu_np, + cpu_policy.related_cpus); + if (IS_ERR(cpud->cdev) && ERR_PTR(cpud->cdev) != -ENOSYS) + pr_err("Failed to register cooling device cpu%d: %ld\n", + cpu_id, PTR_ERR(cpud->cdev)); + } + + of_node_put(cpu_np); + if (!ret) pr_info("Freescale QorIQ CPU frequency scaling driver\n");