From patchwork Mon May 15 13:59:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dong Aisheng X-Patchwork-Id: 9727067 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 04D1460380 for ; Mon, 15 May 2017 14:01:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EB1CF25D9E for ; Mon, 15 May 2017 14:01:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DF3B02885B; Mon, 15 May 2017 14:01:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 866BB25D9E for ; Mon, 15 May 2017 14:01:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965328AbdEOOBy (ORCPT ); Mon, 15 May 2017 10:01:54 -0400 Received: from mail-sn1nam02on0086.outbound.protection.outlook.com ([104.47.36.86]:28352 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S965268AbdEON7Z (ORCPT ); Mon, 15 May 2017 09:59:25 -0400 Received: from DM2PR03CA0023.namprd03.prod.outlook.com (10.141.96.22) by BN1PR03MB172.namprd03.prod.outlook.com (10.255.200.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.11; Mon, 15 May 2017 13:59:23 +0000 Received: from BN1BFFO11FD030.protection.gbl (2a01:111:f400:7c10::1:171) by DM2PR03CA0023.outlook.office365.com (2a01:111:e400:2428::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1084.16 via Frontend Transport; Mon, 15 May 2017 13:59:23 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD030.mail.protection.outlook.com (10.58.144.93) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1075.5 via Frontend Transport; Mon, 15 May 2017 13:59:22 +0000 Received: from b29396-OptiPlex-7040.ap.freescale.net (b29396-OptiPlex-7040.ap.freescale.net [10.192.242.182]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v4FDxEqh015180; Mon, 15 May 2017 06:59:19 -0700 From: Dong Aisheng To: CC: , , , , , , , Dong Aisheng Subject: [PATCH 1/9] clk: clk-divider: add CLK_DIVIDER_ZERO_GATE clk support Date: Mon, 15 May 2017 21:59:15 +0800 Message-ID: <1494856763-6543-2-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1494856763-6543-1-git-send-email-aisheng.dong@nxp.com> References: <1494856763-6543-1-git-send-email-aisheng.dong@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131393303627435124; (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)(336005)(39380400002)(39450400003)(39410400002)(39400400002)(39850400002)(39860400002)(39840400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(36756003)(85426001)(77096006)(48376002)(2906002)(33646002)(2351001)(4326008)(8676002)(106466001)(81166006)(86362001)(47776003)(105606002)(498600001)(8656002)(356003)(104016004)(50226002)(54906002)(53936002)(189998001)(305945005)(5660300001)(8936002)(68736007)(5003940100001)(38730400002)(50466002)(110136004)(6916009)(2950100002)(6666003)(50986999)(76176999); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR03MB172; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD030; 1:nHq3UYaaC8iRwMA2vY08UqtAMh4UYkgvv1n3smEFqj5H49e+SJVkLJZRmJzDjc6f7OD5ixfwduX3RDGqp1Fd/Rt0wLbMVeqBIZRs78lC7i6LdAjqDi7E22ihes2kL0yG09uFLgAtRNZwz5Kro7kNlCp5p8mEIcFZfoJW55BrnHI7P8TATUAqs1nFzSlmAkFk/Kh8GGFTp33AEYecdvHV4D7rB179rhCuu32l6JbSSkByDQFY4Cze0y/pqn0z0sUi2zTJrxEr2yYkm3nARYJNI2Q1xrJh+mmyX/XY2NZqNPljNHaDKKa5HBxI3ERnlL6i0UvyznEMxg/LNWukGIPc6cbzvlNVsMJfi2XsdqYqx4hack92Ja2zbRhDub/Sme2yW3AI+gMYV3QipwMeCrteVlcUpR0aIngpPRCr3IfEz9ZYI1v7FFxJMDYlw7sHuJxTUIq5hFVyIwU/2RCvdPZ3LjrpcYVcPEB47UG4Edo3kCGJKaWiY09XSZrGiS3mv93wW3gKxsClEtspjIcditxJ5S/AY5nG+AQWT4ugsGquq1UhoV1KLKZKu0g/Cu8rfJ/ZFjCI41M8KIWoi30WYQmIGIslNslTvILWX0o0c1hWfDo2JFNCh+GFt8hGxLjPWZRJ55iePBC3PA9j460zoRDyxhqwzez6E3lLMdDT+qBBc0ApdWib43BqmMstkEUdK7uFA4la4zw9SPfWg7TTRXT/vmn09IenUmo+e2feNcOgwdc= MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ece07c58-9b6c-4bd5-ab13-08d49b9a9708 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BN1PR03MB172; X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB172; 3:YYmxPez3gURpRN66Pt4QZeukuctUkotixsDrt/wAQ8UMVPp+S6ILRxfWvdQ5/qGweO68ks/YB75gQye8hqjln5lzW2AMhXbZVa0Cm8fy0H65i7bJGjR1Okc4pdL5yQmuCl72s4Ql2Iy4iI+nstRg6Q+Y8+vpwJm0WMpl7SxjRpfVLXORp/dW8YFZw2uWaVsI2r0x+ThsrL0dPPsuVCeN9lf483PLfsXhEy3QLWh9+y+degsT3CT93JWF6CpoXgYW7XgZwTT4qoJQHtgWwggHtOj6Z5sdZPIWHZ5BasjYFY3czna0VuHZ2Yt9jkV1drnhe/GfguVXjzXwuUyUQ6zsSI3/DtvcgTq3B9jbHDMjuyfgiVm8R0mQ5u7ig34qgkdY9GcpK2hFME/oUJKQ17SwzFRkODFsrpucozY9ej/7/PAIKk27S1mpiyWFa/5njTP3; 25:NnplX40KaMlgVJRqabmurMhYmu2BRMtSFpeWNXmM0gjk/A7vYSsHrKMgWXfvPBcZiUUyB3ePhZjD+cgENHYZ3XGDDpSnjw0/KUBqqfUquOGiLipg+t1VguQuJzT5CzYEhjY+Zt8iMf/hKrWFSySGwIpgRMYtuorplWbk5fqKPyjtPdwP9UOMQ1MexL2nCIYxHDTDgG75ysg6Dkt87oFHAQ+WPM9y7pnGGitkxAZuV522+qt4bW1PoJW12K6xHea5zdmLPUz46+dC4/nWyr1fWSvyFEqa19HnuFWqkd32sRjdA81aHSL0mrNPuwV6x/VjOpA4M2NaMVuSluY2n3VlVs8F5PGY5kdeHdJbBIg6WEvgJdkHLL11w1gCaRx1N1SC3WVm2a0YGrzhix7gR935T76IrPG7b6Hp/1B0GBbVamaSt3JqGKPDze+3mPDcbPNu/671fQ23CnDuiC8KrvV17w== X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB172; 31:tDVsIUvCPRVxLixPXJzzOMqmwIvxOT0ishk9bh8FEbP8bnVcG5AZKjaAHHOieuOdb65VEqObtMOrPxbnC9bxpD2mcsoljCrgPWTZtp4dhUyQTCm0faFillCPUA0Luo4iP2adIZeGQCJYkE6b4ZYsLBoSMmabzjNVRErZa3qB2pVKLqZPPnx4PBY2d3MfX+woOaidxhtHAWLEUNBFocV4st0TOLaL9hiTcAwshWmm1YdhM5XqwlYPo1HfOhrvbUXRdTT2rVOQF7jc2Cu8kEiCNg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(601004)(2401047)(13015025)(5005006)(13018025)(8121501046)(13017025)(13023025)(13024025)(10201501046)(93006095)(93001095)(3002001)(6055026)(6096035)(201703131430075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(20161123556025)(20161123559100)(20161123561025)(20161123565025)(20161123563025); SRVR:BN1PR03MB172; BCL:0; PCL:0; RULEID:(400006); SRVR:BN1PR03MB172; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR03MB172; 4:bG4B0T8IzD4u/4jF9XqYQbOGCowSO0tcNX8GQ17P4FM?= =?us-ascii?Q?vU9xvCyXitXoRI2RjMIdJY+HFJfMGk+TBm6Y8YlNZZOK/Ir03ZN6U2ripVZU?= =?us-ascii?Q?czi0k84EsqPuUS85j8UXfGtxqouEVgNIjJ/CYArSZD63mVnvE6qncX5oR8yX?= =?us-ascii?Q?f7CobdXPzt92nZHpR0njNOktE3GaCMwC5Z89qM7tM0xVdt1P0MeFLyfrm1AW?= =?us-ascii?Q?CmpEgJ6NjlXz5QTBTOKNztPDH/4eXIFlVLK0741z67cUdX8LfqL0KnZImCOx?= =?us-ascii?Q?c2rJMJcmAMtx53xSPOTLchLUGdkdjnAeiBh5nfwaBbPng3SRPdvnNFndol4d?= =?us-ascii?Q?B5Ry36lgwhrS8SpFh+R++NLYd3W3xWEog6tnAfzzevhxIGJQwvU+tzsZh4ei?= =?us-ascii?Q?IZ/DQzdO1o5Fj1nc7bQkst86zaKSqiu47aACNEraNgXu01uzQw+VjbgaN99l?= =?us-ascii?Q?TCqMVOs0V3/qcGM4bhlQt+b53R89hR/8XZqC1JkB5vNuSucrr6RnQzJbbK/i?= =?us-ascii?Q?6f6NX/rPIaQlDjtzu2exxSlcF5IBZ8gzaRCOdsPpkKJvuQ9dPrrWNLvQB+NY?= =?us-ascii?Q?TDrHpAjr0+Sk2ZZrOp2Atp8+InBny/Qu6IShKDdsvgo7Owrax8uiEgUqjhJq?= =?us-ascii?Q?dBtXoZdNvIf9JTdXZsDTFWnThm9W0Qrs4Q5ERuMCVEW8aavoKXz/0QxgCdw7?= =?us-ascii?Q?eR34FgHU7LogA0ZSG5atf12Xfr24tq4gQ0FBxfrO0FP04DlhA31LGK/y79RZ?= =?us-ascii?Q?SnB3W53ICFwsnF5LP7uzlmq91J2akojdegnjF5k1UXKOcZ8u1Bkjn9EVQOMA?= =?us-ascii?Q?mlZFAFoLsfnd19ElMoggjuFYJi1zjS0lkwqavDEEfn1eqG0WcxnJbFxUr5jx?= =?us-ascii?Q?eSzRQrGZGrnkMys2oWTlKe3fboBtRzU/ZO/FtS4fmGo/7dVChUNCGcvpa8oW?= =?us-ascii?Q?6Hlg2NCo954wU30PDymhZDGKDTa5PoSlmp4docA=3D=3D?= X-Forefront-PRVS: 0308EE423E X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR03MB172; 23:v0wYl6j7pppXveoVqqZSWDGbroJ9q3gqqTaePCUp8S?= =?us-ascii?Q?JXh3UBAWmazx/umPZ/7Lf2pgyo4WBBbTrQ33PGE2VrWzlyFa/ax7BGXsEAzE?= =?us-ascii?Q?8eY2mrfssdKyABugXrjJgb1onvGLYZ43R1TQb+wAPuUFrzJqzI2qDe6h4i/O?= =?us-ascii?Q?rENvbHiP6NjugF0oKIGo0bN5/8DgbTSp+K48gcr5vZBmJZP7tpXCJkjBya0l?= =?us-ascii?Q?Yh2HSv9+9NjzY/mN9J5eSWT6QFRKXH2O2CynS+hHQukSGGBqP9KNPTrheosI?= =?us-ascii?Q?VOI8DSZCkBlrrNfsnbLGlZVnCQ9IIDXAQY3N8kfprbT9e6lKCAODPcRcWRt+?= =?us-ascii?Q?CEo1iUECKor/xFSU0zx4nyXwwUggyk//ZwgbDJwTN0OHUWAa65UVH8O+3P3t?= =?us-ascii?Q?ni84x3HFBUX6brVWWDv7UzKfWJcwPkcFt7UfcSl4am5nICurcJZUBpBpUtfH?= =?us-ascii?Q?pl5qc6PpQ+TtTy+v/t3UTqrSBfwX0eoGIbgZuD3LQyLwMV4f91WfqA5rurby?= =?us-ascii?Q?Gls7z2+U1psDI9XIiGXgxQSTn0kqEHSCUgCyK25Gp7Ix7PW0LygkjzxpEOXv?= =?us-ascii?Q?8pAl7IdgpfkZ8N68Moo6n6cFm50H6GJVJAtfDnMV61ToBaWaBddyZvj3z99o?= =?us-ascii?Q?PvBWuiY4dD2banMx1DSefYr1kgPra6c7C10a7s9bPVab3FLoFHcHaUf1s/MK?= =?us-ascii?Q?to9ytyudDFxrBC6bqbKrQyWzab1RIOF9H420si08RPHz2GYTHCMxWbq660Qq?= =?us-ascii?Q?e19KORrLSs5Y80kWX8Oj2AhzMwLWDuVTTqi13f4lzcHupZ3baJCYaqfg8cUR?= =?us-ascii?Q?ojy4QDg1UubZ2jmzlTSkYkhfGK4pJmXvckKdzDwsWaeSsicnJMdj3Mlj30Q5?= =?us-ascii?Q?q4y80jFHxHDL7A6rvxixZAeqF7piEy4GE+iSlmhAW/udvzIzxpssi2FHZmTr?= =?us-ascii?Q?RdyhlE5H//flN+G8NNEW2R5OHkUdqOrXQSCHRjHul+vCqNsvyBhADTz9laUP?= =?us-ascii?Q?v4paTuTTWaYXHhr9q5LOHVJHBWYql4RaKqCy19a+MUxJC3+wQpl+WyR+NVCY?= =?us-ascii?Q?UJh74HrujiLH2MV1/12Udx4lWLG7EPUwTK6bBrwp5FSXzNVOuPIP862gD4hT?= =?us-ascii?Q?92tOhxs6H4wr156yNdDvD8CvCTxkOFj98gkU57PzE9aqalwuoF0OfHC7ShXU?= =?us-ascii?Q?Cf55YrzCkUmyK/wj9RCOU85rDKKm8v/U2ACJy4Qa3Dv0oUyKmgx6pr3dSQw0?= =?us-ascii?Q?nAB6efDyqm4NBOP6HdLCpodJUmsOHKfZeD6fqw?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB172; 6:etnupBmzcFUMcRxe/h/KVxbOaCOFo3/EtZcJxqO2RWqYtLD+7Nhvs0IciBhzuUaTnkYi+Fy5UDffscW4ivfsasGSbqcLveCtaNo3fwxA00NhnpAnMX2IBWU8GmF0MlHEkh05SD/RTMsITzZ23dTXQnQ/PB4LoObOaExP78f+K2OAz2BiTYXGJx0sIf7fJXwrzqo2kd2fVxuyEqXcjLEIfLX4Aznfc63z4YKM8deAK2VXJMnWCNXhG/BWplU3DIYPRjtIg2UkGACqC2pvO+t/7CZ32dIwMKz70ior5kbXgtCsTfOES24YYM98LZ7TRRpKP5cjDjXgSnCqdxMUBiliSzsSk0f47Av5uEH+WTfXqY1UxuTa8lo8JwjlToQ4LNNA86rgHG5w4plfPZ23vVn8GYJc90zDjUn3oQ8x4Sij5NBU8yyEqq9MFDTn84yjyw8gccqIzn1LbGt6bn2mBQxO/+3QVO23ignUHfSDtfWpmOAFrDk16UxFQb8/3n9EzyolmhtF0ZyH2WROdfxz3axnog==; 5:FzLmz30YHlpWIYQlSlHJkLot54wBUWoxd/79O8XLayd193vvk83dWxk8rjtKRwl3mKJIlu52aCxS0IFwCE6sZMKpG5YkqQ9gCzSilO6ZwfrqZHW271CvwKP5mRuURxeFr6ykN4jzcWMv8lnr1YM1R2NpvVazT0CBXiLOMazwgKlUhim0PEvLF3bL92xuPqbE; 24:5QnZTLpDTZq0TlTEFa6e2XCx4M92m0eXr/kSu2zJy3hJQtFJHMV7xhHA0P7rCcIww/mOjhDx4LmzmAKu/m/MjZhU/xS49NyilFKREPs+edE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN1PR03MB172; 7:mGKdd2/5KOoxH4k0aKHucSV02Sbgm9nCDIGFSZKrppuvvZmVNRCSRAZLlCJ4n/K+XT7IbYm0O7L1Rin4WZI72F00cCAgFqAnIe9xvHZ50NFzpKCwMc1qpO2CrAM4Fvydqew3SQUacadu9ABm86sAtfb70FTxLlVxGwyqXRS1pr108aErb9UbAEJGu6SQR/abW85XTNseXJoVsHjuodsck8R1r5mduputX1HDNixpyIC7yGLzwHV5ZQo4W9WnNpEhodv8Z+BipmspuwRRI6C9B0QDNEOtNfDwqdWjdvKE9EgMSNQnUCR3g3v2GPQAIPDeNdCCVwTDPryOULrPYI5DsQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 May 2017 13:59:22.5095 (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: BN1PR03MB172 Sender: linux-clk-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP For dividers with zero indicating clock is disabled, instead of giving a warning each time like "clkx: Zero divisor and CLK_DIVIDER_ALLOW_ZERO not set" in exist code, we'd consider it as a normal case and just return 0 in divider_recalc_rate function. For such clocks users should be aware of setting a correct rate before using. e.g. 000b - Clock disabled 001b - Divide by 1 010b - Divide by 2 ... Cc: Stephen Boyd Cc: Michael Turquette Cc: Shawn Guo Signed-off-by: Dong Aisheng --- drivers/clk/clk-divider.c | 2 ++ include/linux/clk-provider.h | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c index 96386ff..f78ba7a 100644 --- a/drivers/clk/clk-divider.c +++ b/drivers/clk/clk-divider.c @@ -125,6 +125,8 @@ unsigned long divider_recalc_rate(struct clk_hw *hw, unsigned long parent_rate, div = _get_div(table, val, flags, divider->width); if (!div) { + if (flags & CLK_DIVIDER_ZERO_GATE) + return 0; WARN(!(flags & CLK_DIVIDER_ALLOW_ZERO), "%s: Zero divisor and CLK_DIVIDER_ALLOW_ZERO not set\n", clk_hw_get_name(hw)); diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index a428aec..a6efbb9 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -385,6 +385,9 @@ struct clk_div_table { * CLK_DIVIDER_MAX_AT_ZERO - For dividers which are like CLK_DIVIDER_ONE_BASED * except when the value read from the register is zero, the divisor is * 2^width of the field. + * CLK_DIVIDER_ZERO_GATE - For dividers which are like CLK_DIVIDER_ONE_BASED + * when the value read from the register is zero, it means the divisor + * output is disabled and the rate calculated will be 0. */ struct clk_divider { struct clk_hw hw; @@ -405,6 +408,7 @@ struct clk_divider { #define CLK_DIVIDER_ROUND_CLOSEST BIT(4) #define CLK_DIVIDER_READ_ONLY BIT(5) #define CLK_DIVIDER_MAX_AT_ZERO BIT(6) +#define CLK_DIVIDER_ZERO_GATE BIT(7) extern const struct clk_ops clk_divider_ops; extern const struct clk_ops clk_divider_ro_ops;