From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0AD0BC4707B for ; Wed, 10 Jan 2024 12:32:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:References:MIME-Version:Message-ID:Date :Subject:In-Reply-To:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=w9nyGl/laSCkCIMeNweWCEHc25bM6w/QqTYqX79zQTc=; b=kSA/m4TJ8yEtzX Df2OTsx4dTRMMl4x5oEPOxN+ifdSdd8/GD2gTcvWAuy6t84mtPBqhwTPuszbd6wnvXiB4qfl4JrqJ ZWXvXc05XCnYqKuLBjRwIGsPIS6dLZ8DHpPqx7uNu3ji+liAJfZe+Fx7t7ArWa2RlbaMSuyRTy17U GWgbhVtUP+h1am2Tm3RPNQDZcWBNiE15TjtgR35fH5EVXfpbiuPAzwH5WVqEfPlr1jXi9sSV/8kal W0Gz6JTVf8jUpX0qBqNmBZGFbtDQ1Ypebwj44R0aodibzJp6Fl8dxq1BfSUUSBFgebEx2pV1qp+bR pLadZjtbIxHndueraAwA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rNXk6-00Bik4-0E; Wed, 10 Jan 2024 12:31:34 +0000 Received: from mailout1.samsung.com ([203.254.224.24]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rNXk1-00Biiu-1K for linux-arm-kernel@lists.infradead.org; Wed, 10 Jan 2024 12:31:32 +0000 Received: from epcas5p1.samsung.com (unknown [182.195.41.39]) by mailout1.samsung.com (KnoxPortal) with ESMTP id 20240110123121epoutp017c03311684b58b4508dfd911f3893377~o-FBrzEl20850808508epoutp01K for ; Wed, 10 Jan 2024 12:31:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.samsung.com 20240110123121epoutp017c03311684b58b4508dfd911f3893377~o-FBrzEl20850808508epoutp01K DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1704889881; bh=NLR0Da2HJRvhPJEhT89C1fj3tvYuS2W+F5XGCPG5Fu4=; h=From:To:Cc:In-Reply-To:Subject:Date:References:From; b=hpJGKWNCV9AWWpCE6OUHV6F61bwboqxgxHHqX5b+AppBSBZpySSukenkLUhNS8Lbv no/ETAiLJDERBAIecstmgZ6Dgg9BckwmS/3lBblkXhqiaQVicc9b/0jb9MJ9aF5M/8 s+eY08IZykYHyZrs8ZwtX4rc7M6jLCFVq2od/Jnw= Received: from epsnrtp1.localdomain (unknown [182.195.42.162]) by epcas5p3.samsung.com (KnoxPortal) with ESMTP id 20240110123120epcas5p384f0e22e8047bbe5ca0a40d4bb4ba625~o-FBM6hr60204302043epcas5p3s; Wed, 10 Jan 2024 12:31:20 +0000 (GMT) Received: from epsmges5p1new.samsung.com (unknown [182.195.38.175]) by epsnrtp1.localdomain (Postfix) with ESMTP id 4T96bp6nh5z4x9Pr; Wed, 10 Jan 2024 12:31:18 +0000 (GMT) Received: from epcas5p2.samsung.com ( [182.195.41.40]) by epsmges5p1new.samsung.com (Symantec Messaging Gateway) with SMTP id DE.78.09634.61E8E956; Wed, 10 Jan 2024 21:31:18 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas5p2.samsung.com (KnoxPortal) with ESMTPA id 20240110123118epcas5p21c8034cd96a7abfc64839cfb13a9d108~o-E-D-nim1713217132epcas5p2k; Wed, 10 Jan 2024 12:31:18 +0000 (GMT) Received: from epsmgmc1p1new.samsung.com (unknown [182.195.42.40]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20240110123118epsmtrp15528d2b6119785d3ee9343a00b988d10~o-E-C8-Vk0983609836epsmtrp1T; Wed, 10 Jan 2024 12:31:18 +0000 (GMT) X-AuditID: b6c32a49-eebff700000025a2-c8-659e8e160ee2 Received: from epsmtip1.samsung.com ( [182.195.34.30]) by epsmgmc1p1new.samsung.com (Symantec Messaging Gateway) with SMTP id 1D.24.07368.61E8E956; Wed, 10 Jan 2024 21:31:18 +0900 (KST) Received: from INBRO000447 (unknown [107.122.12.5]) by epsmtip1.samsung.com (KnoxPortal) with ESMTPA id 20240110123115epsmtip11b776a44777a465ea395449d2c96f3b9~o-E8hV3j41485414854epsmtip1c; Wed, 10 Jan 2024 12:31:15 +0000 (GMT) From: "Alim Akhtar" To: "'Shradha Todi'" , , , , , Cc: , , , , , , , , , , , In-Reply-To: <20240110110115.56270-2-shradha.t@samsung.com> Subject: RE: [PATCH v3 1/2] clk: Provide managed helper to get and enable bulk clocks Date: Wed, 10 Jan 2024 18:01:14 +0530 Message-ID: <001001da43c0$e8e9a8e0$babcfaa0$@samsung.com> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQK3Yhu837gawrdP2S3E1hwP53Jf7wFhoUR7AWI/r/mvApvyoA== Content-Language: en-us X-Brightmail-Tracker: H4sIAAAAAAAAA01Te0xbZRz1672998JSvRYc37rIys0gewi0k9aLjKkMzcUtEYOJcT66Qq8U 6cs+NuY2eQjlMWDClJcMtznY0qRBGCAUioNVEJJlsmGRBbYlIGFrYMiIiMC05TLlv3N+3zk5 3/keBCKcwkREms7MGnVKDYX5o23Xdu4I31xax0qaKmT0vbo2jL6Yo6YvL1TjtNPTitNZxct8 unnCzaf/KL7Dp285ajH6el0/Rlfd6ObRvV87AZ27kovSdtc4To/nFvLpocHX6X+62nH6sbsJ pUuunXxVyNxyDyHMw9/ycKajZhxnzjVbmGZbIcaMubswZnK4ksdcuZjJlLbYAPOoOTjR/1D6 XjWrVLFGMatL0avSdKmx1IEkxX6FTC6Rhkuj6ZcosU6pZWOp+IOJ4W+kabyNKPERpcbiHSUq TSYqct9eo95iZsVqvckcS7EGlcYQZYgwKbUmiy41QseaX5ZKJHtkXuHhdPVS1hJqqN+R0VfZ gWWBypAi4EdAMgquum9jRcCfEJKdAOZklayTeQDbZgfWyZ8AunJbeE8s1yd/RrgFJ4BnHzoA R6YBXCyfW1NhZDhs/866Zg8kRwBcWLShPoKQDh4sHMxBfCo/Mgb23J3l+3AA+S5cGl5awygZ Ckdv1nrdBCEgo+EZj79vLCCfhQPVk6gPI+Ru2HDeg3BbEsOl3xvWrIFkHOxbrV/XBMH7P7lw Xy4k8/3g3YI2PmeIh/YfK1AOB8AH/S04h0Xw/mkr7suFJAMvrIi4sRrOXGoEHH4FXh2uRX0S hNwJGx2RXNTTsGR5ksc5BbDAKuTUofCL2V/Xg7bCslOn1jfAQFfVFPgShNRsKFazoVjNhgI1 /4edA6gNbGENJm0qa5IZpDr26H8XnqLXNoO1B78roR2M35uL6AU8AvQCSCBUoED8qJYVClTK Y5+xRr3CaNGwpl4g8x52GSJ6LkXv/TE6s0IaFS2JksvlUdEvyqVUkMCTd1YlJFOVZjadZQ2s 8YmPR/iJsnj5M0e3eZyzA3umT5a95z+9abQvyXF7ptUFA2JOi/rBD7vd08EkP75WHu6MEMVt 7gxthGNWtXnfUwmflpbPfh78AM/+pmvkl6t9Ia5AhfWAxHHHttKxvfWjfsIqHSuPyxv7W1hU 8W35gl0zMWHPxPFDKsXiTMYzA0kZx28MJW/6sKf+r+ePiF4wH7yg1ZR9MBL2NlYnaNQcf/xa 5nBVd1gS4n4nVZ4fWVQgS7B/fyIyzTkc0x05f+IKJs2eam0rVhwLDfqk1VzyZl5i9leXtyyO wqlL7Ptz8wODmFRnkdo+jk1KJsgzWv5I2Lbc5O2e6p5Vy1byfNNNqqHzre7lw06EQk1qpXQX YjQp/wV+zm/4eQQAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrAIsWRmVeSWpSXmKPExsWy7bCSnK5Y37xUg583xS0ezNvGZrGkKcNi xZeZ7BZ7X29lt2jo+c1qsenxNVaLjz33WC0u75rDZnF23nE2ixnn9zFZHJq6l9Gi5U8Li8Xa I3fZLe62dLJaXDzlavF/zw52i3/XNrJY9B6udRDyuHztIrPH+xut7B47Z91l91iwqdRj06pO No871/aweTy5Mp3JY/OSeo++LasYPT5vkgvgiuKySUnNySxLLdK3S+DK+HzyM3PBfPWKd6vO MzYwTlToYuTkkBAwkTj75ARzFyMXh5DAbkaJFy/b2SAS0hLXN05gh7CFJVb+e84OUfSMUeLL 6XOsIAk2AV2JHYvb2EASIgJ3GSUal/8Bq2IWOMEk8eTBHoS5975PYQRp4RSwljh4/x1Yu7BA qMTFxnVg+1gEVCVuXpoDZHNw8ApYSkx+zQUS5hUQlDg58wkLiM0soC3R+7CVEcZetvA1M8R5 ChI/ny4DGyki4CRx7O9SqHpxiZdHj7BPYBSehWTULCSjZiEZNQtJywJGllWMkqkFxbnpucmG BYZ5qeV6xYm5xaV56XrJ+bmbGMGRrqWxg/He/H96hxiZOBgPMUpwMCuJ8Cp8npMqxJuSWFmV WpQfX1Sak1p8iFGag0VJnNdwxuwUIYH0xJLU7NTUgtQimCwTB6dUA1Pljav5LndipQ8+T+gp eD9H2IZvkVpT0OPph47nSx3Pqb83rbBk6qsIs0ObNk+w1Fz0uyjvhlnkUZUQJ6PE1hV52nMq 91nWbFgS5rjapu+l/oZFNR16u5cmxe1ck39TzO7Lw+jKlRvM5zG1f7JKPbAj/CjzpLAfT8vf 92dP/SJ1VuzWoWwdNmkdt3nTVC64+S+Uizrz7omj4V+jR6p9r3b6X2r2qPZf/fzGCtOaf4qL N668p/lQMPXKs5w91a5LNu4P/hJUnub4sdl7+WyVds5FreofChpuriyaceSxSEjvrv8ugTIK xU05XHLJtp050tMPT55os+pUIvPsSeyLltkLXwzvFrGpE4icUrLoq4ASS3FGoqEWc1FxIgBK nJpwYwMAAA== X-CMS-MailID: 20240110123118epcas5p21c8034cd96a7abfc64839cfb13a9d108 X-Msg-Generator: CA CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20240110110156epcas5p36bac4093be0fa6eaa501d7eaed4d43d3 References: <20240110110115.56270-1-shradha.t@samsung.com> <20240110110115.56270-2-shradha.t@samsung.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240110_043130_680481_2CF964D3 X-CRM114-Status: GOOD ( 27.31 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Shradha, > -----Original Message----- > From: Shradha Todi > Sent: Wednesday, January 10, 2024 4:31 PM > To: linux-clk@vger.kernel.org; linux-kernel@vger.kernel.org; linux- > pci@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-samsung- > soc@vger.kernel.org > Cc: mturquette@baylibre.com; sboyd@kernel.org; jingoohan1@gmail.com; > lpieralisi@kernel.org; kw@linux.com; robh@kernel.org; > bhelgaas@google.com; krzysztof.kozlowski@linaro.org; > alim.akhtar@samsung.com; linux@armlinux.org.uk; > m.szyprowski@samsung.com; manivannan.sadhasivam@linaro.org; Shradha > Todi > Subject: [PATCH v3 1/2] clk: Provide managed helper to get and enable bulk > clocks > > Provide a managed devm_clk_bulk* wrapper to get and enable all bulk clocks > in order to simplify drivers that keeps all clocks enabled for the time of driver > operation. > > Suggested-by: Marek Szyprowski > Signed-off-by: Shradha Todi > --- > drivers/clk/clk-devres.c | 41 > ++++++++++++++++++++++++++++++++++++++++ > include/linux/clk.h | 25 ++++++++++++++++++++++++ > 2 files changed, 66 insertions(+) > > diff --git a/drivers/clk/clk-devres.c b/drivers/clk/clk-devres.c index > 4fb4fd4b06bd..05b0ff4bc1d4 100644 > --- a/drivers/clk/clk-devres.c > +++ b/drivers/clk/clk-devres.c > @@ -102,6 +102,7 @@ > EXPORT_SYMBOL_GPL(devm_clk_get_optional_enabled); > struct clk_bulk_devres { > struct clk_bulk_data *clks; > int num_clks; > + void (*exit)(int num_clks, const struct clk_bulk_data *clks); > }; > > static void devm_clk_bulk_release(struct device *dev, void *res) @@ -182,6 > +183,46 @@ int __must_check devm_clk_bulk_get_all(struct device *dev, } > EXPORT_SYMBOL_GPL(devm_clk_bulk_get_all); > > +static void devm_clk_bulk_release_all_enabled(struct device *dev, void May be devm_clk_bulk_release_all_disable() Also this is similar to already existing devm_clk_bulk_release_all(), may be you can reuse this function And add the exit() callback in devm_clk_bulk_release_all() > +*res) { > + struct clk_bulk_devres *devres = res; > + > + if (devres->exit) > + devres->exit(devres->num_clks, devres->clks); > + > + clk_bulk_put_all(devres->num_clks, devres->clks); } > + > +int __must_check devm_clk_bulk_get_all_enabled(struct device *dev, May be devm_clk_bulk_get_all_enable() is more suitable > + struct clk_bulk_data **clks, int *num_clks) { > + struct clk_bulk_devres *devres; > + int ret; > + > + devres = devres_alloc(devm_clk_bulk_release_all_enabled, > + sizeof(*devres), GFP_KERNEL); > + if (!devres) > + return -ENOMEM; > + > + ret = clk_bulk_get_all(dev, &devres->clks); > + if (ret > 0) { > + *clks = devres->clks; > + devres->num_clks = ret; > + *num_clks = ret; > + devres_add(dev, devres); > + } else { > + devres_free(devres); > + return ret; > + } > + > + ret = clk_bulk_prepare_enable(devres->num_clks, *clks); > + if (!ret) > + devres->exit = clk_bulk_disable_unprepare; > + > + return ret; > +} > +EXPORT_SYMBOL_GPL(devm_clk_bulk_get_all_enabled); > + > 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 > 1ef013324237..bf3e9bee5754 100644 > --- a/include/linux/clk.h > +++ b/include/linux/clk.h > @@ -438,6 +438,24 @@ int __must_check > devm_clk_bulk_get_optional(struct device *dev, int num_clks, int > __must_check devm_clk_bulk_get_all(struct device *dev, > struct clk_bulk_data **clks); > > +/** > + * devm_clk_bulk_get_all_enabled - managed get multiple clk consumers > and > + * enable all clk > + * @dev: device for clock "consumer" > + * @clks: pointer to the clk_bulk_data table of consumer > + * @num_clks: out parameter to store the number of clk_bulk_data > + * > + * Returns success (0) or negative errno. > + * > + * This helper function allows drivers to get several clk > + * consumers and enable all of them in one operation with management. > + * The clks will automatically be disabled and freed when the device > + * is unbound. > + */ > + > +int __must_check devm_clk_bulk_get_all_enabled(struct device *dev, > + struct clk_bulk_data **clks, int *num_clks); > + > /** > * devm_clk_get - lookup and obtain a managed reference to a clock > producer. > * @dev: device for clock "consumer" > @@ -960,6 +978,13 @@ static inline int __must_check > devm_clk_bulk_get_all(struct device *dev, > return 0; > } > > +static inline int __must_check devm_clk_bulk_get_all_enabled(struct > device *dev, > + struct clk_bulk_data **clks, int *num_clks) { > + > + return 0; > +} > + > static inline struct clk *devm_get_clk_from_child(struct device *dev, > struct device_node *np, const char *con_id) > { > -- > 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel