From patchwork Mon Jul 4 01:36:50 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 9211537 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 BAEE060572 for ; Mon, 4 Jul 2016 01:38:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AA4C02861A for ; Mon, 4 Jul 2016 01:38:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9EBFA286EC; Mon, 4 Jul 2016 01:38:41 +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=-4.1 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 36C312861A for ; Mon, 4 Jul 2016 01:38:41 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1bJsp5-0007VT-7H; Mon, 04 Jul 2016 01:37:19 +0000 Received: from relmlor2.renesas.com ([210.160.252.172] helo=relmlie1.idc.renesas.com) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1bJsp1-0007SN-UD for linux-arm-kernel@lists.infradead.org; Mon, 04 Jul 2016 01:37:16 +0000 Received: from unknown (HELO relmlir1.idc.renesas.com) ([10.200.68.151]) by relmlie1.idc.renesas.com with ESMTP; 04 Jul 2016 10:36:54 +0900 Received: from relmlac3.idc.renesas.com (relmlac3.idc.renesas.com [10.200.69.23]) by relmlir1.idc.renesas.com (Postfix) with ESMTP id E717E49ABD; Mon, 4 Jul 2016 10:36:54 +0900 (JST) Received: by relmlac3.idc.renesas.com (Postfix, from userid 0) id D5ED31806F; Mon, 4 Jul 2016 10:36:54 +0900 (JST) Received: from relmlac3.idc.renesas.com (localhost [127.0.0.1]) by relmlac3.idc.renesas.com (Postfix) with ESMTP id CF6451800A; Mon, 4 Jul 2016 10:36:54 +0900 (JST) Received: from relmlii1.idc.renesas.com [10.200.68.65] by relmlac3.idc.renesas.com with ESMTP id LAJ19571; Mon, 4 Jul 2016 10:36:54 +0900 X-IronPort-AV: E=Sophos;i="5.22,559,1449500400"; d="scan'208";a="214324530" Received: from mail-pu1apc01lp0022.outbound.protection.outlook.com (HELO APC01-PU1-obe.outbound.protection.outlook.com) ([65.55.88.22]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA; 04 Jul 2016 10:36:54 +0900 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesasgroup.onmicrosoft.com; s=selector1-renesas-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=qqsHsCoyKjgT1Kg80qZkDd7tB7QmH+CakDsY0zsYZLM=; b=nSAIGO+s4pJHqGO/TfGTf85PknLq7+fi1V4TOkWGFuLU43pn6nF55vS4ZxVZSFFazqSvHmOnwTHR9Fnxm6GTBtadB2IE/ww+vUsm+Wnzih1DPs7wb9RSwOyM1QbDZAaRVx4dyuB6fueHaBzY8Bp/rr8Xt0Ysm2a2G8MGopHckbA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; Received: from morimoto-PC.renesas.com (211.11.155.144) by PS1PR06MB1705.apcprd06.prod.outlook.com (10.167.53.15) with Microsoft SMTP Server (TLS) id 15.1.528.16; Mon, 4 Jul 2016 01:36:50 +0000 Message-ID: <87wpl2yyuw.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH v2] clkdev: add devm_of_clk_get() User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 To: Russell King , Rob Herring , "Mark Brown" MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Mon, 4 Jul 2016 01:36:50 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: OSXPR01CA0013.jpnprd01.prod.outlook.com (10.167.143.159) To PS1PR06MB1705.apcprd06.prod.outlook.com (10.167.53.15) X-MS-Office365-Filtering-Correlation-Id: e5c5ea84-093f-4a41-408c-08d3a3abace8 X-Microsoft-Exchange-Diagnostics: 1; PS1PR06MB1705; 2:PR4OIHex0JzWeDPs4mDVS7v1oZYpHZiNxl8CASNmK+07W14ulJpjnC+jo6Fw4KmgkQgAiuSANjCA/J6Ij7Ihhpul0e5ATcjKI7tw+ITXVc29+TxbmsgEeWrenGtpelpgsyM73qNO+e5yXrQkHZ7JhSA9JXF709S/9X3KGXZwF6clKvb0xhkHYImYPepsrza0; 3:QVxrJLZm3jXkUw5Ge8UHLvnoKYCbYS06TBfWJM9AyxKA2jtrnA3X8Gf5nskwc/fXQMosMYolbafE5Cx/QOni1TKouUNwZ990RTejh+/09QmbhRsMVe4oWeP+kEA618CI X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:PS1PR06MB1705; X-Microsoft-Exchange-Diagnostics: 1; PS1PR06MB1705; 25:SbJTD0A5IErk1z7wg+3Lnq1b0ZM7myvGuYEm1ORH+lgbuLoojOG1uwmpt9QdZapHTdRNh1kE0HgZdoUZjzaAhm/EDXR1yB6B6mqutkHim4L5gsw/8k5Cg2E3h/GbxVki4OUPGlnaEKIcSqnfDaTrgQQ5dOwsk1iOWV6Xyoevm3mlyRgdnF0TrcH4ajsD93IUX4zt6EMYaAEj4O5A53+EEAuPa4SvmMYJhNSpuPxLG2pXhf0P9PzL+M8Nk/9D0N3lhxmvDYONMo8tyd1Tu3ax9r2gASo8QTu7+m/9lHpr6Q56obUxsYiGoMkg+H0XaPuLoVA9Xgv6gNvOjbLZ/WNcox1WaLt19+njICfcyi/DUOPooum73UFRzZN/6p1NuGNBPsFKmo0N+sKtR/5uE1fOsCHImUiyvKqn+/kh2vaPdch/61UVe0GFXHlGmRQYmWb9Pu94h3E/Lr5bo1VVNoqcjWdTqAk7BZ4KXgEt5RCb1hZ5D4Mb1o8dTGp+u8Q2sbIB3GCHBjIOvPBZgpABdOQz2swoFx/2CEHNPTsY+idd5zMjEWBeCCYjOHkdEpJuPNRExBHaJddbT7hFxBq5nbyjw37GESGP3v5bHiaD+M3ZW4TPMChxVZ//bcMFLX6jde7JLRonwPeWkqbCERwKiCQcV8g3weim0NMxTHg7wD4cF8758+TTlLdUULCkz1KPYy3Z; 31:qvOumtIDs871n13TZ4VCJsZiQt5t0olRL9xzDmPgDVyaP6Kmp6QshEYK8ndRG/goBpcDXBTxVjlZEW4giG2py5v1absBS3YW3bfcbNW3c5RQ2FtwifhAqGSBbWGX60aFDumoizhM+h53NB9EwN+aRTQTubU272ZN2eHN4qLW+JeoZyJLJQ184gOmvV7JFIozwT1l9FpmQhx/xwZQzbIFnQ== X-Microsoft-Exchange-Diagnostics: 1; PS1PR06MB1705; 20:8tMOCAAw+RNwngkkOZvy/Em9ZQfc8+Hyy9f9f7D/je9gXZmEvavZNSAOI6vae1SPGV2Vi9yxHT3GyULiOpSe2ZTGHOUi81VszAfJupVsn3mgyLGNkDmMhq5lVQ79KtMIEvFdwwAGVj1vVcY2ciHxqDTdmCeUxTZcm/mUQy0om5xHJbYY+dOmKm49NZu8b5vvzKOvid3IT8loUPg5WWbh9t/5jgazhCR4+X+QMq7RBleflY5tXQ0/WnJBAuRd/fV1D+Mu3C1v+iF1x976DNEraF9TB+16GHymJgdAj3RrWt4JT6FQPNvv5vUGTNSPVVewFLHJtUt4sw7m4lJwmwTNuPYPZk8nQculOauzkSlVVHy71Tii5iuzpI1MDBztjwBQTOtlBU05giwyD4+3NcYBtxy1bjqc/pPAYbLjGSh0q4iMDqzXd6Cfxv+zVyoSr6UzhlIUKq3/G3qRXARJlrjzKIi6f1DsXfueWdeuKmrwibgt6U2OK3MSOOsBDYtP8gIP; 4:ewpgIaZA23TEJ4qKIoFAz0rHjTDNldM1yXHMgQ+RafXv5uyGnXTaVTlOT4HWDvGDoLoqKuIBUVO7lOPEv9HginDbd8XQLJLzY7vHlR/skO5bne6dfMUxrynV+fCUaYIyemOu2uS2cR4dCO4jKy3uDVDbTxB8Pr1kPH+VTzMws7Z2D3UFcvmxNpW5WI84t+foM5c2+0c9/Q1bNHvoZacxAMzHaStt9xXKe1iGJH9mNAo3KCFHcXN0J4G/n8TETN+CyaQiw2gURF/xm4KbJd1nUO20mzQKelftKYiLiQiiqAejLdStx037MNLO0jlrK70XcfkRDTQYpWxok/dDl0qJrciIslW6jpsMsVXi0Y0++HSjx4/XXx3V3tOyomecjDki5WJey05GtEJ1KyZWzXXFiA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026); SRVR:PS1PR06MB1705; BCL:0; PCL:0; RULEID:; SRVR:PS1PR06MB1705; X-Forefront-PRVS: 0993689CD1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(86362001)(54356999)(50986999)(46406003)(586003)(106356001)(105586002)(229853001)(23726003)(6116002)(3846002)(33646002)(77096005)(4001350100001)(97736004)(5001770100001)(47776003)(66066001)(53416004)(189998001)(101416001)(92566002)(50466002)(42186005)(7846002)(7736002)(305945005)(81156014)(81166006)(19580395003)(19580405001)(68736007)(69596002)(36756003)(4326007)(83506001)(2906002)(8676002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:PS1PR06MB1705; H:morimoto-PC.renesas.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; PS1PR06MB1705; 23:00agI3c8q6ASvlhQ0dNTA3KKbAoe7DSFMe/6ZO32I?= =?us-ascii?Q?WeJjWDDcM8XbgSH6RRgI8QXYquoZOkU6UGikhqw4Fgx6BQ8yMH3bnhw9F2Hk?= =?us-ascii?Q?bTiGX7cimK610lKKxm1I5OrZu4UUI9Hzmt0MkoW7l7gsloEAXm5iO5XEVKIX?= =?us-ascii?Q?Ypvcpv97oLgQi5CRYV1m/7zG5EepxQR/9tVZsmOQQkIG1oVN7Aeo4L83tvmY?= =?us-ascii?Q?/4DEgPZ6hIV7BfblM8wE1UzB4v5P/muoacSIOKju0fi0BH6969sbxpnNyx2j?= =?us-ascii?Q?hvAnn46fkCnGxRtbz7tX1GhreONOZCckGpT70WW8hQuIz2fyhFu2LIV6Onx+?= =?us-ascii?Q?+6sdaanhDVvodfhE5l7v0AQofW7sbonA8GgrX2Glqtb2eEaP0cYq244eZYOC?= =?us-ascii?Q?5mV23ITDlh2BThSY4WUhhjvofTIeMe4tFNn0kC39c6k2zPijwub1vHisgH0R?= =?us-ascii?Q?gD6+b3Y50kB5G+WzRKH5aMLx3ciXnctkxrnkyjhc53Z8GwwOy4a7y2CyUWUe?= =?us-ascii?Q?1V8ZEPs627+eCTkGLjHyTYJIBDlpVFPKHFDlIB3WfkhW9GSSlbkRIl1W0TV3?= =?us-ascii?Q?tr+aNBi+nOMqde4DzDH9TBB2ffB445RhNGrJmdz3ZhS5ALM7ZdNgilbu1SK5?= =?us-ascii?Q?w3vvk3tuEvkZKnaK6riHsbQHebI0ZWQny66UP5vZwVubhtp2rv+CuMvWOAwQ?= =?us-ascii?Q?9Z2+XWKw8mQHeI0+o53TJRIX8GbHwwVB2unfoRaGUlWx6plvwfNvNbov5ANk?= =?us-ascii?Q?gvc2OY8+NAGWoqvrEBOKT2w4TFFbtSTNMB1MfQ68mqRzQWXPjsPWNsekRQod?= =?us-ascii?Q?ODwvvXYj4FuRQoBCD2MZy/9KPowYhtKQnXbEiXagJo98NOQxKvjLXTtwENjX?= =?us-ascii?Q?OhzJWyOiLuGFkksO32fGWo3Dp4MLQRAcipj2Kz+Ddw3BwE0o0aU4w5+utMYJ?= =?us-ascii?Q?uTbuYRJF1xOfeUTeIchLRiguJTqN0IQQU7dl83K9QAZe5fElKrHYymFCYK1H?= =?us-ascii?Q?qKZO26wYYmuMCtoyhA2J0HhJLEUEY6y3N96Tb9ta7Oe/CWW7lx1LWIaesEJh?= =?us-ascii?Q?hWM8P757YGOMT+HHF/AWE6TpKDURiIzecM8688Ao7f2gLNrjmQiOJfv7p84l?= =?us-ascii?Q?1j6MSvTQGg=3D?= X-Microsoft-Exchange-Diagnostics: 1; PS1PR06MB1705; 6:8alJsJ/pxsVw3USq+KRzWm1ORmiPFi1lAIJFIVv3uAqRHZnv1xZNlM4wuqW4ttP5qfmvkWXPBRAlpBsjRveiR9JFgXLRt1nufzts0kHivNGMP2WjEhiY279mAK1J3mLPNwQbPHceHpV7ZtwOrR7crqYLh/VoejQICwOe6gOCxsEHrJB0KVk/UsxZ+Kb75SpTpKKPY+CM+rmFdU5YeEjg9jTqGRLZd9ro4BmgWEqSX1ZPChqIzH8l8vF/6r5SAeju4eOvzaXOhhrhzXJrb/NrDJoLrjXelpmA+RhWRAKJPvpY+/xvOkvJ7IdGWT7wxriQgEsO7Hbe6Msp0a9aKJDKGw==; 5:uorYb4Adi2nDf1+dZ7j8uoJglDqGAt7HXRCyIA+VrJViwrqPYFLpLsjrmf12qH+UNz3bOqERXXi4AJZqgdypnFnalb8xzBEyH64o/nfEi8jO/Z9MzqIkAyVQiLg8Cfy/nHLRYudNST2D+vZe+yWFcQ==; 24:DC4bguQ8AiCIkezgytauLwgmKXaKIOUlnKty1pupjrPFtexIR0cVObGYNmYbVoFrdceRngYijHBkbGsX75aMUpUf0sjT13FqyotQGvRX9a4=; 7:OdSC3j8W5pVg/vl4D/jriezIQIJsetTdGG0GsEk+UvjagJkQZ30e9Cecin4dS0HXfPxJN3itnQzEDY3PCeshLzupMrdDZC+8a3MMrioAN2toz1UGTnWFbSmsW/tl8+5GyuqMbxV+MGEzjgrwZJ72VQpospnAKxfQmPQRvXTDChf1z9GEY8sYwLXUJ/miW2u9q5oSA6eLYHRVk5GDdvdrzK4/J1GDxJ+wHlLr/VV1yyZr2eO481rR58KFsHAnY43Y SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; PS1PR06MB1705; 20:Ab4HzwaBLRJL8P53dSV6DxVZCKo1JUXNKrbOfC3aJz6R/MZWp2xdkSyTKoOhqK+GVE9GG0YFSVGGoFDkRNjIHlzoZV7JnBmfmjGOO/Kx2XjRTCuEW7ikbSQOihOLkH43EjpGWfz6KpXcbx66PWwG1zpOT6XK2UfFaA+ZIksK6i8= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2016 01:36:50.8055 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: PS1PR06MB1705 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160703_183716_357461_5390AC68 X-CRM114-Status: GOOD ( 10.47 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Linux-DT , Linux-ALSA , Linux-Kernel , Linux-ARM , linux-clk@vger.kernel.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP This is based on devm_clk_get() Signed-off-by: Kuninori Morimoto --- v1 -> v2 - added "static" and "inline" on header drivers/clk/clkdev.c | 26 ++++++++++++++++++++++++++ include/linux/clk.h | 7 +++++++ 2 files changed, 33 insertions(+) diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c index 89cc700..93a613b 100644 --- a/drivers/clk/clkdev.c +++ b/drivers/clk/clkdev.c @@ -55,6 +55,32 @@ struct clk *of_clk_get(struct device_node *np, int index) } EXPORT_SYMBOL(of_clk_get); +static void devm_of_clk_release(struct device *dev, void *res) +{ + clk_put(*(struct clk **)res); +} + +struct clk *devm_of_clk_get(struct device *dev, + struct device_node *np, int index) +{ + struct clk **ptr, *clk; + + ptr = devres_alloc(devm_of_clk_release, sizeof(*ptr), GFP_KERNEL); + if (!ptr) + return ERR_PTR(-ENOMEM); + + clk = of_clk_get(np, index); + if (!IS_ERR(clk)) { + *ptr = clk; + devres_add(dev, ptr); + } else { + devres_free(ptr); + } + + return clk; +} +EXPORT_SYMBOL(devm_of_clk_get); + static struct clk *__of_clk_get_by_name(struct device_node *np, const char *dev_id, const char *name) diff --git a/include/linux/clk.h b/include/linux/clk.h index a89ba4e..33cd540 100644 --- a/include/linux/clk.h +++ b/include/linux/clk.h @@ -502,6 +502,8 @@ struct of_phandle_args; #if defined(CONFIG_OF) && defined(CONFIG_COMMON_CLK) struct clk *of_clk_get(struct device_node *np, int index); +struct clk *devm_of_clk_get(struct device *dev, + struct device_node *np, int index); struct clk *of_clk_get_by_name(struct device_node *np, const char *name); struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec); #else @@ -509,6 +511,11 @@ static inline struct clk *of_clk_get(struct device_node *np, int index) { return ERR_PTR(-ENOENT); } +static inline struct clk *devm_of_clk_get(struct device *dev, + struct device_node *np, int index) +{ + return ERR_PTR(-ENOENT); +} static inline struct clk *of_clk_get_by_name(struct device_node *np, const char *name) {