From patchwork Mon May 8 14:03:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dong Aisheng X-Patchwork-Id: 9716217 X-Patchwork-Delegate: sboyd@codeaurora.org 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 8F61760234 for ; Mon, 8 May 2017 14:04:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7EEA92621B for ; Mon, 8 May 2017 14:04:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7307527FA6; Mon, 8 May 2017 14:04:24 +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=ham 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 276432621B for ; Mon, 8 May 2017 14:04:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754037AbdEHOEW (ORCPT ); Mon, 8 May 2017 10:04:22 -0400 Received: from mail-cys01nam02on0080.outbound.protection.outlook.com ([104.47.37.80]:61717 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753681AbdEHOEU (ORCPT ); Mon, 8 May 2017 10:04:20 -0400 Received: from DM5PR03CA0054.namprd03.prod.outlook.com (2603:10b6:4:3b::43) by BL2PR03MB163.namprd03.prod.outlook.com (2a01:111:e400:c0d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.11; Mon, 8 May 2017 14:04:17 +0000 Received: from BN1BFFO11FD008.protection.gbl (2a01:111:f400:7c10::1:177) by DM5PR03CA0054.outlook.office365.com (2603:10b6:4:3b::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.11 via Frontend Transport; Mon, 8 May 2017 14:04:17 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; arm.linux.org.uk; dkim=none (message not signed) header.d=none; arm.linux.org.uk; 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 BN1BFFO11FD008.mail.protection.outlook.com (10.58.144.71) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1047.9 via Frontend Transport; Mon, 8 May 2017 14:04:16 +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 v48E3rls032011; Mon, 8 May 2017 07:04:10 -0700 From: Dong Aisheng To: CC: , , , , , , , , , , , , , , , , , , , Russell King Subject: [PATCH V2 2/3] clk: add managed version of clk_bulk_get Date: Mon, 8 May 2017 22:03:52 +0800 Message-ID: <1494252233-21074-3-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1494252233-21074-1-git-send-email-aisheng.dong@nxp.com> References: <1494252233-21074-1-git-send-email-aisheng.dong@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131387258571309237; (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)(39410400002)(39840400002)(39860400002)(39450400003)(39850400002)(39400400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(54534003)(9170700003)(8936002)(106466001)(38730400002)(50466002)(105606002)(81166006)(47776003)(86362001)(50986999)(110136004)(2906002)(104016004)(5660300001)(2351001)(8676002)(54906002)(8656002)(356003)(36756003)(39060400002)(77096006)(305945005)(85426001)(189998001)(4326008)(53936002)(7416002)(5003940100001)(48376002)(33646002)(76176999)(2950100002)(50226002)(498600001)(6666003)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:BL2PR03MB163; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD008; 1:dN/KjZe+iTUDcqUEJrQn4PVM9/gPGs8U7KpucKjbnIdeQI1dlEXPdMJtyuWouMYfhgCrQMSVtBLYkm9mMU34ZZENwX2mwEtro95Py/zYUM2+C6zYRPHzJDSmJHIK6GZ1E3KMrBjity8VZ5i8yL5ruXuWEI03b0i5vM8iHueD8YU2HAGWgXMcHPrw34S2tCYMkXYai0MCLRq5f7eC3PuZM58VjDBpZ/pTf2+NMmcGxCyfE+c2RsU4U48Hfb69c445ah/XOD++rRStgwCDWgFbPt+nkE0CrFrSkVxle4AenRJQinyF3DSCohoxf0Rlv1OuBscovzfhvN6dwJhuftPt94O/hlxtJrcYaY2vKokm75dGbz274k5z6BJMzY2xWPBdotBXtYOFdUre5Sy4Oy5VxopGV9wNwnMTGUOBf5VPn6z5J5QxxOz3lASZz5Fx+HToBXVRiuLC67pW8JO6E9mTBNpAqrTY7fvOKQpZGOUN5codunxAhz/b4KjEd6B0vnIKtpbVgO+VsfdA25yLE2drBGGYJPxev78u8GUm90Zl7+J5BjaARKFGan/GGek+GFTJOZbEo0Cf9j/n3X2pHbZf7ViaOoDVZ3ACnEI/3t2M2kpGmxHd5ccxkxNSBCgn4Y6L MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9e37ad55-5ff3-4e3f-5f56-08d4961b1d9c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BL2PR03MB163; X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB163; 3:6x9q2mGn5UQ2pYuRyR4KAbtwTxjhA6fbxa3sjaMZOMW1FZc6ssI21Zfk6hOlNOnwtxjv9fqBRyR2yXcOffu74XhJYwDkdereuBZ2sr0omDrugQfIbtwUoZxvLfK/VpLXyAD/5qkao3UHR//JDx90GR3F4kaU4A0c6iH43ZYSD9EvJyfm6Jbia64u+hZqaEVkmN13XFfHNs5VXkcJNS9CXJQIBcQswchBEJjrw+Dzu3qCMclS9VVQu4dA50sdXTh0+Numtur7cyFmj8Vzt655t1aoj63nXZkm2y64UboxnuaK4LPOGGLpY8SzAIt5j6iyKMG4xE2UuBT4yJIjN92CQ7S7ox/PTIRyX3vyDs060iLsQ95Bg22LnMEQ8gK/gNhDYJ/0fbx4+TZg5JbI+TuY8AjLsAvmEpC+j9SYEUk5hfFh5n417mRdVX4pyVjvkTEy; 25:4qlarxzEGMmMXsyEjRPAiOjBLAcW+6tuNTwPGn7TKJuFIlGpCJRUroGOg/u3dxbrRlEmywhFDIknwnuzjemRgtDMp7hZYi78VOYs8CSJtOm9mw6EFERZ+FZLv9B2pX6G9pKB03GMYDhxf6vMbZC201lFSpHEXwCoNgNhSrgg4UlU8I5NWJ9pKFM4+HbdaH65Sn4VeB7ITAhY/WJ4+V9m4VdzGAMGbVQrQ/VVgexvmNno7xwS7F5BcibDu3euVmfkZ32EGGh0iXddPc+ic6sbK9+56B/8lr+NrQP8S2vS7++A4iNjZ8swJysXFI4G2fjsGQiDcpBpBKNVNnenWuv2gaPgbJTGUER9ALQiHfeWW5b+HNTUEzfPZkC1QE/m5Nz8sBQYk2oyQuAOlJGES9xi/2SSn+DJDX7vq0BSEXlIR9iGQd6faXS+s375wgW7ceO5GxMZbjEJfEGlmglh4odNoA== X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB163; 31:IZ38HvdDD/+tXp/sco0eOa8mn4Kuc+l0Q6JUBGqfaFx8qR6mLhlW2U0IZ4rL5QVe023wnT8kS5LafIwZ+ZYjwrEO+jtSbLGgqinkMLIKWD9EYH7L0K6Kt5+n6yA5dgBuUA7mPRRuP1O3n7rOArxiV0PfmW5ru6yXjwgfWUHYc9M+Du2uph8wPDxfyKbzcO9oQkjRdkZjl8SufZgnriQ7i2DPQHTZxuoh1uiUPPXG/K37mkXwvKLnDbhakKyZJnnbO7f8h+lvbwCWvh2mIGZ6eQ== 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)(13024025)(8121501046)(5005006)(13015025)(13017025)(13023025)(13018025)(10201501046)(3002001)(93006095)(93001095)(6055026)(6096035)(20161123565025)(20161123556025)(20161123563025)(20161123559100)(20161123561025)(201703131430075)(201703131448075)(201703131433075)(201703161259150)(201703151042153); SRVR:BL2PR03MB163; BCL:0; PCL:0; RULEID:(400006); SRVR:BL2PR03MB163; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2PR03MB163; 4:8PueJf5D/6mER0+jScLKHIb22ddsRFIzahSnAwNMeJw?= =?us-ascii?Q?2KG6EaG+GfjXfpZZTxMPbtH78b13icF+llB4xSc9uuH8fN244CvdU/KurR10?= =?us-ascii?Q?4NiHfYPG0d3Y0JpaVWm4orh+pN8cHF35u1NJH7k7vYkQMvcrqYJPVk2jF67I?= =?us-ascii?Q?E09LVzT3z/BRHKrwLiL+Xtv7AoRAePpbISdcYwlPeKgy0j81ADbEFf1BPhw3?= =?us-ascii?Q?4Qfw9CP4w6xyn9eUoPyxv+bEoqFrW5id56hAZT87nVIBmkO+PV0tyeHABqNN?= =?us-ascii?Q?93Ueb3aGP4xGFfZIT4gogDgC0UrlxNrEkdWyDQl3l/d/WerUU8VuQsd9dpDP?= =?us-ascii?Q?8+b6j75pu/HRVWaDtcP+EfC56wqwjdI9eupJdOsHQ7MXOd5DDK7beFstQPvK?= =?us-ascii?Q?6t/VX8BUWScomuB5Lgi/LKYLAZjcr2RMcKvCKNR4PtTCX+i6mjEeuYBtQHYo?= =?us-ascii?Q?KEojGF4/YrqdEwcrqe7FiGwIt0o+w63Z2rYegdQvjM8qT7ruUsEyvKC0ADu0?= =?us-ascii?Q?9l35gnthRh/dK3gWJReqonjh4YnMSnWP8/erx9pt6DGOD2iGvTaCZX3Rowr0?= =?us-ascii?Q?qD/tKku1v1bFWE4MqKTQNXW3tbT2VJx+vybdAPDYP4+iNchoZMsgr+qNaJgX?= =?us-ascii?Q?/0W8aBYF5ZyGCpc4VcBEagL4ybIB0IaGBpQWQkorxoeVLZq64Iuq/v3Mnwq0?= =?us-ascii?Q?tSDRneTvkurI7WmnMygdewfOfI771ZpWYRsb/5q6vw9QpSJfMH7HQNQHZLv4?= =?us-ascii?Q?SxXd5KNSqmAKTLgQkof2qkDaZgCh1mK8bDFMGCTsSozXmkNploTU5BKnbJCg?= =?us-ascii?Q?GgJKrOYmaYvTlcCeopWoh/zgQxY4Bd3LE5rIjorYQ7vCPgS/O/uE8IIfKxI/?= =?us-ascii?Q?Dk6bXkO7j8f5raq0UFe5ewTayIzCDVCYPfcSx5CMWw5XPE2aNnrPa7smRnRZ?= =?us-ascii?Q?3sp7Gq+6t5ldhrnCn5BeTz2Pd6n4GNDei0J4wKg=3D=3D?= X-Forefront-PRVS: 0301360BF5 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2PR03MB163; 23:hsZWF09fEok80w77T8VtYwNBoeqsLt16lS50xYQ8xo?= =?us-ascii?Q?pd1MR/IhUIV/fBc3A9PHFTKyP1kY7n5ZUG/aZ51HSdlT01y/e12u8QOJI/dR?= =?us-ascii?Q?eiPfpyrr6H5At0aT0tEDOUj+gXkF9OcCcBGP0U83jiXXBk6E8psOO6alJOT/?= =?us-ascii?Q?lDWrxJJlXMKG7fSb6jxqXDGKfqK3sSlQpSi2KG2V6LoVHKPUQc7Kx1og6B+e?= =?us-ascii?Q?dF17lzeM2T/cA84SSO46C2MezwuZue/S+79yfp4Vwb4boRMAsQ+tcNZp2h3O?= =?us-ascii?Q?XCzkM6q5S7UfwqLoRbWyv7ak14UoAdvXwg7O8J/bS2RLE+TQas/Wz5ede4uv?= =?us-ascii?Q?/zH8npDH8jcqFreDedIdNQKbbdzNs2y2F6Dq6S/zt5WJpQIZQsrCbguxJ1Qo?= =?us-ascii?Q?djVph2HZ3DglaWNNok40/jtbB9Hyno8Lpu8/SY/vwKJMai0uYW2JYOJ0b4kQ?= =?us-ascii?Q?9kU/RLB+NKMG0uJ1WEOGwHlNpH7GymvMfzdcAoADsjZ/NhQ2lFr5gy6lU92c?= =?us-ascii?Q?zk045vaOUZBkmjJ+ZDXe6CJcotZjoq1tdZskKaoNfEGQrlBfOp2TMJqs0QHh?= =?us-ascii?Q?CbVskQIjCv1n3euvEhyXcMgYFbIuZDUAWmP2aH2w0C9p2I0jh3jvqXQ48z5A?= =?us-ascii?Q?mINVX81hSE8Hb+Bvty3jlRAYE5t2VgkD4ymuqAL9gfI7YtrBYiTld9BpHvuA?= =?us-ascii?Q?r1QGtU0xBPazgO10wG1Yw9Ash0owiyjQmthDlRwm/Sji1L7U5joCjMcQ3pC3?= =?us-ascii?Q?MM9sXtXF0D1wVIAJXhWBeLfrlTzi/DQvFqBVfUzWMUnGoBk+R8OdFj9tS1Pb?= =?us-ascii?Q?Q0dcf7Rl4ftvgTOEVxrbMXFQOrOmv39456V0Mp/dY9YYed6IiFho3U8pq+Z7?= =?us-ascii?Q?0tPNIp0xZh2UaAXL0uCtpiblKsAxIC/fiiTbk8/V/ga4rfzIosJS84kGAqub?= =?us-ascii?Q?ff9vTBOlhEdPuor3knIYuj3wUJP1oUMFbaMIpyzV1OeROqbwn3DMAlD9ctln?= =?us-ascii?Q?9ghEPqlgngwPyaHlth3Mg+3bnQAx54SKMsXRCx15blbV2t/WDYW7z6nxnTaW?= =?us-ascii?Q?kxTFZ9kWwbLA1f+aG4Mf9rvCCWjq7Zez7KDk1k7HWyhFQhXSXUtuq+lj0DOS?= =?us-ascii?Q?iBS7c/1NZfG6Xw477urYPeVDosaJD1iLRHmjMBNIwaLvqRtCqVKeX9tmURU5?= =?us-ascii?Q?DLTaF/5SX9nh/4si83YkFBJvehJLghY/W011LgJQDEhYiUcQ3VWTLVK+u3th?= =?us-ascii?Q?kFj8/6cwH8yxiHWye3+ysba1bFre1lNf3iNlOBZdzTAE8i1n5EC82jPyoWaO?= =?us-ascii?Q?zIFUFZl4kuXzAJsQnguNU=3D?= X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB163; 6:u499rEE/wjFC2BFRI0q8iHw24RfD10iZOmY61+kjBXVwtlikZyEhBr43qdlt8Et0alEB2JgVrkdc6luzrZVjIWdiK7DjsfZ3ir52P8vHUHly8jpx5jjXIXYWEuPk+TyHF/BjYVJY8YFsDHt6Jogv8UjlvEvze7Xs0R9BS/Q4Am09AvRYGZtz9RfZt3eiNpO1ghuHJYJljckVCnQT5ZVJ4ovu9+63vX57srjkY2MFgWbLEF4OToU+rKiLscTmDVtcGHdoMhQdbW//A+Vspat1lOmkLyOqZTRSjeKJBJsHZgdvN4g+8xY0D9z1jhi+3eUp9h337pEbJcVHkdjkJ3eM+mj3lF8m6mDDp0WuFHpERskaPm/USZHMGR7uK0xSmAn1E65bxTRbB4EAY90j9vPFjNuQ+6kWbUsF67jYcgCRDBRz8bo/lqd0TcM6rAsks043+HedrF3aR9jmiwYjIAco4AQmA/bx94PDjEm1f+kuuZXpxh12dNAP0piz3Jq50TlIQKp65JNyjDaGaGD7XHMLhw==; 5:UijzDBh/h2cBNJgoBZb1iP2K6E4MVK3ex1CUKkbCRm4pXrzmPrsrpjBXoQRoXGuY2qLJirRkZeE132i8UdRpTnA61MMdc/nH7uKD8r9kpt4/Xw5xdljUxO3h4GNDynJvaHOmKigWfRAIYdw3AQky8/DhD4jyNfbjWI2fjvUD6R7xuY5yU/sCsohEA4oqci8f; 24:Bk+Lfr1Af4CLA8nQE7a27NypI/we2r0I/dXCVZjTCglwSTQeAg2CQKZq9Vs71dzHp/Qu9FTQGKx7P0S3uRyPCMx4xCRBQpqjx0Ol7yQUD54= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BL2PR03MB163; 7:AyMo+caHcTZYubtncbTNG1u3Ul0NUMuLGB7j5iV9XxicfTKVURgNJeyg26WCC4enMLsGsogTmZviWgfS45zvMTL7fx04JnRDOoXmcChHY716BP01x4LZvWgLaDd0NWOzgDp2jnKbo5yDxE0bnyJy7B2c5bcfvZckI8i23drRUMEbxmRxnwph1f75E/OTUlpqsMbM/QqcSfjWKT24L+2Ig5SZFn9+OeMPYbVC3/YY8VE3aONbnYvXis/CkXQF+yl5tBZLpuI2GzVvtZJj5ZJJz5TaHemVDur27NFArs+JpGfb6CLzy0S1ok1H+MmBnTkNq2/X7baEv9er47503LG7zQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 May 2017 14:04:16.7409 (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: BL2PR03MB163 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 This patch introduces the managed version of clk_bulk_get. Cc: Michael Turquette Cc: Stephen Boyd Cc: Russell King Cc: Geert Uytterhoeven Cc: Florian Fainelli Cc: "Rafael J. Wysocki" Cc: Viresh Kumar Cc: Mark Brown Cc: Shawn Guo Cc: Fabio Estevam Cc: Sascha Hauer Cc: Anson Huang Cc: Robin Gong Cc: Bai Ping Cc: Leonard Crestez Cc: Octavian Purdila Signed-off-by: Dong Aisheng --- ChangeLog: v1->v2: only one minor comment change --- drivers/clk/clk-devres.c | 36 ++++++++++++++++++++++++++++++++++++ include/linux/clk.h | 21 +++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/drivers/clk/clk-devres.c b/drivers/clk/clk-devres.c index 3a218c3..d854e26 100644 --- a/drivers/clk/clk-devres.c +++ b/drivers/clk/clk-devres.c @@ -34,6 +34,42 @@ struct clk *devm_clk_get(struct device *dev, const char *id) } EXPORT_SYMBOL(devm_clk_get); +struct clk_bulk_devres { + struct clk_bulk_data *clks; + int num_clks; +}; + +static void devm_clk_bulk_release(struct device *dev, void *res) +{ + struct clk_bulk_devres *devres = res; + + clk_bulk_put(devres->num_clks, devres->clks); +} + +int __must_check devm_clk_bulk_get(struct device *dev, int num_clks, + struct clk_bulk_data *clks) +{ + struct clk_bulk_devres *devres; + int ret; + + devres = devres_alloc(devm_clk_bulk_release, + sizeof(*devres), GFP_KERNEL); + if (!devres) + return -ENOMEM; + + ret = clk_bulk_get(dev, num_clks, clks); + if (!ret) { + devres->clks = clks; + devres->num_clks = num_clks; + devres_add(dev, devres); + } else { + devres_free(devres); + } + + return ret; +} +EXPORT_SYMBOL_GPL(devm_clk_bulk_get); + static int devm_clk_match(struct device *dev, void *res, void *data) { struct clk **c = res; diff --git a/include/linux/clk.h b/include/linux/clk.h index 1201944..1ebccf3 100644 --- a/include/linux/clk.h +++ b/include/linux/clk.h @@ -281,6 +281,21 @@ int __must_check clk_bulk_get(struct device *dev, int num_clks, struct clk_bulk_data *clks); /** + * devm_clk_bulk_get - managed get multiple clk consumers + * @dev: device for clock "consumer" + * @num_clks: the number of clk_bulk_data + * @clks: the clk_bulk_data table of consumer + * + * Return 0 on success, an errno on failure. + * + * This helper function allows drivers to get several clk + * consumers in one operation with management, the clks will + * automatically be freed when the device is unbound. + */ +int __must_check devm_clk_bulk_get(struct device *dev, int num_clks, + struct clk_bulk_data *clks); + +/** * devm_clk_get - lookup and obtain a managed reference to a clock producer. * @dev: device for clock "consumer" * @id: clock consumer ID @@ -550,6 +565,12 @@ static inline struct clk *devm_clk_get(struct device *dev, const char *id) return NULL; } +static inline int devm_clk_bulk_get(struct device *dev, int num_clks, + struct clk_bulk_data *clks) +{ + return 0; +} + static inline struct clk *devm_get_clk_from_child(struct device *dev, struct device_node *np, const char *con_id) {