diff mbox series

[v2] clk: Add a devm variant of clk_rate_exclusive_get()

Message ID 20240104225512.1124519-2-u.kleine-koenig@pengutronix.de (mailing list archive)
State Accepted, archived
Headers show
Series [v2] clk: Add a devm variant of clk_rate_exclusive_get() | expand

Commit Message

Uwe Kleine-König Jan. 4, 2024, 10:55 p.m. UTC
This allows to simplify drivers that use clk_rate_exclusive_get()
in their probe routine as calling clk_rate_exclusive_put() is cared for
automatically.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
Changes since (implicit) v1, sent with Message-Id:
744a6371f94fe96f527eea6e52a600914e6fb6b5.1702403904.git.u.kleine-koenig@pengutronix.de:

 - rebase to todays next
 - check return value of clk_rate_exclusive_get()
 - fix a typo in clk.h (s/cal\>/call/)

 drivers/clk/clk.c   | 19 +++++++++++++++++++
 include/linux/clk.h | 12 ++++++++++++
 2 files changed, 31 insertions(+)


base-commit: d0b3c8aa5e37775cd7c3ac07b256218df0fd6678

Comments

Uwe Kleine-König Jan. 25, 2024, 9:44 p.m. UTC | #1
Hello Stephen,

On Thu, Jan 04, 2024 at 11:55:11PM +0100, Uwe Kleine-König wrote:
> This allows to simplify drivers that use clk_rate_exclusive_get()
> in their probe routine as calling clk_rate_exclusive_put() is cared for
> automatically.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---
> Changes since (implicit) v1, sent with Message-Id:
> 744a6371f94fe96f527eea6e52a600914e6fb6b5.1702403904.git.u.kleine-koenig@pengutronix.de:

Given that I'm not the only one waiting for this change (see
https://lore.kernel.org/linux-i2c/20240119072223.3986183-1-alexander.stein@ew.tq-group.com)
here comes a gentil ping. It would be great to get this patch into next
now the merge window is closed.

Best regards
Uwe
Uwe Kleine-König Feb. 15, 2024, 9:39 a.m. UTC | #2
Hello,

On Thu, Jan 25, 2024 at 10:44:45PM +0100, Uwe Kleine-König wrote:
> On Thu, Jan 04, 2024 at 11:55:11PM +0100, Uwe Kleine-König wrote:
> > This allows to simplify drivers that use clk_rate_exclusive_get()
> > in their probe routine as calling clk_rate_exclusive_put() is cared for
> > automatically.
> > 
> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > ---
> > Changes since (implicit) v1, sent with Message-Id:
> > 744a6371f94fe96f527eea6e52a600914e6fb6b5.1702403904.git.u.kleine-koenig@pengutronix.de:
> 
> Given that I'm not the only one waiting for this change (see
> https://lore.kernel.org/linux-i2c/20240119072223.3986183-1-alexander.stein@ew.tq-group.com)
> here comes a gentil ping. It would be great to get this patch into next
> now the merge window is closed.

Is there a chance to get this into next and then v6.9-rc1?

Best regards
Uwe
Uwe Kleine-König Feb. 27, 2024, 7:38 a.m. UTC | #3
Hello,

On Thu, Feb 15, 2024 at 10:39:00AM +0100, Uwe Kleine-König wrote:
> On Thu, Jan 25, 2024 at 10:44:45PM +0100, Uwe Kleine-König wrote:
> > On Thu, Jan 04, 2024 at 11:55:11PM +0100, Uwe Kleine-König wrote:
> > > This allows to simplify drivers that use clk_rate_exclusive_get()
> > > in their probe routine as calling clk_rate_exclusive_put() is cared for
> > > automatically.
> > > 
> > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > > ---
> > > Changes since (implicit) v1, sent with Message-Id:
> > > 744a6371f94fe96f527eea6e52a600914e6fb6b5.1702403904.git.u.kleine-koenig@pengutronix.de:
> > 
> > Given that I'm not the only one waiting for this change (see
> > https://lore.kernel.org/linux-i2c/20240119072223.3986183-1-alexander.stein@ew.tq-group.com)
> > here comes a gentil ping. It would be great to get this patch into next
> > now the merge window is closed.
> 
> Is there a chance to get this into next and then v6.9-rc1?

I wonder if this patch is still on someone's radar and why it wasn't
applied yet. Does it need an ack by Russell before Stephen picks it up?
Is it too complicated and needs more time to review? Can someone please
comment what the stopper is here?

Best regards
Uwe
Russell King (Oracle) Feb. 27, 2024, 10:31 a.m. UTC | #4
On Tue, Feb 27, 2024 at 08:38:54AM +0100, Uwe Kleine-König wrote:
> Hello,
> 
> On Thu, Feb 15, 2024 at 10:39:00AM +0100, Uwe Kleine-König wrote:
> > On Thu, Jan 25, 2024 at 10:44:45PM +0100, Uwe Kleine-König wrote:
> > > On Thu, Jan 04, 2024 at 11:55:11PM +0100, Uwe Kleine-König wrote:
> > > > This allows to simplify drivers that use clk_rate_exclusive_get()
> > > > in their probe routine as calling clk_rate_exclusive_put() is cared for
> > > > automatically.
> > > > 
> > > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > > > ---
> > > > Changes since (implicit) v1, sent with Message-Id:
> > > > 744a6371f94fe96f527eea6e52a600914e6fb6b5.1702403904.git.u.kleine-koenig@pengutronix.de:
> > > 
> > > Given that I'm not the only one waiting for this change (see
> > > https://lore.kernel.org/linux-i2c/20240119072223.3986183-1-alexander.stein@ew.tq-group.com)
> > > here comes a gentil ping. It would be great to get this patch into next
> > > now the merge window is closed.
> > 
> > Is there a chance to get this into next and then v6.9-rc1?
> 
> I wonder if this patch is still on someone's radar and why it wasn't
> applied yet. Does it need an ack by Russell before Stephen picks it up?
> Is it too complicated and needs more time to review? Can someone please
> comment what the stopper is here?

Well, if it does, then the simple way to solve that is:

Acked-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

Thanks!
Stephen Boyd Feb. 29, 2024, 1:03 a.m. UTC | #5
Quoting Uwe Kleine-König (2024-01-04 14:55:11)
> This allows to simplify drivers that use clk_rate_exclusive_get()
> in their probe routine as calling clk_rate_exclusive_put() is cared for
> automatically.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> ---

Applied to clk-next
diff mbox series

Patch

diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 2253c154a824..a3bc7fb90d0f 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -939,6 +939,25 @@  int clk_rate_exclusive_get(struct clk *clk)
 }
 EXPORT_SYMBOL_GPL(clk_rate_exclusive_get);
 
+static void devm_clk_rate_exclusive_put(void *data)
+{
+	struct clk *clk = data;
+
+	clk_rate_exclusive_put(clk);
+}
+
+int devm_clk_rate_exclusive_get(struct device *dev, struct clk *clk)
+{
+	int ret;
+
+	ret = clk_rate_exclusive_get(clk);
+	if (ret)
+		return ret;
+
+	return devm_add_action_or_reset(dev, devm_clk_rate_exclusive_put, clk);
+}
+EXPORT_SYMBOL_GPL(devm_clk_rate_exclusive_get);
+
 static void clk_core_unprepare(struct clk_core *core)
 {
 	lockdep_assert_held(&prepare_lock);
diff --git a/include/linux/clk.h b/include/linux/clk.h
index 06f1b292f8a0..24c49b01c25d 100644
--- a/include/linux/clk.h
+++ b/include/linux/clk.h
@@ -201,6 +201,18 @@  bool clk_is_match(const struct clk *p, const struct clk *q);
  */
 int clk_rate_exclusive_get(struct clk *clk);
 
+/**
+ * devm_clk_rate_exclusive_get - devm variant of clk_rate_exclusive_get
+ * @dev: device the exclusivity is bound to
+ * @clk: clock source
+ *
+ * Calls clk_rate_exclusive_get() on @clk and registers a devm cleanup handler
+ * on @dev to call clk_rate_exclusive_put().
+ *
+ * Must not be called from within atomic context.
+ */
+int devm_clk_rate_exclusive_get(struct device *dev, struct clk *clk);
+
 /**
  * clk_rate_exclusive_put - release exclusivity over the rate control of a
  *                          producer