All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Boyd <sboyd@kernel.org>
To: "Abel Vesa" <abelvesa@kernel.org>,
	"Alessandro Zummo" <a.zummo@towertech.it>,
	"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
	"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
	"Andreas Färber" <afaerber@suse.de>,
	"Baolin Wang" <baolin.wang@linux.alibaba.com>,
	"Charles Keepax" <ckeepax@opensource.cirrus.com>,
	"Chen-Yu Tsai" <wens@csie.org>,
	"Chunyan Zhang" <zhang.lyra@gmail.com>,
	"Claudiu Beznea" <claudiu.beznea@microchip.com>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	"David Airlie" <airlied@gmail.com>,
	"David Lechner" <david@lechnology.com>,
	"Dinh Nguyen" <dinguyen@kernel.org>,
	"Fabio Estevam" <festevam@gmail.com>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Jaroslav Kysela" <perex@perex.cz>,
	"Jernej Skrabec" <jernej.skrabec@gmail.com>,
	"Jonathan Hunter" <jonathanh@nvidia.com>,
	"Kishon Vijay Abraham I" <kishon@kernel.org>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Luca Ceresoli" <luca.ceresoli@bootlin.com>,
	"Manivannan Sadhasivam" <mani@kernel.org>
Cc: linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-actions@lists.infradead.org, patches@opensource.cirrus.com,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-mediatek@lists.infradead.org,
	linux-renesas-soc@vger.kernel.org, linux-tegra@vger.kernel.org,
	dri-devel@lists.freedesktop.org, linux-phy@lists.infradead.org,
	linux-rtc@vger.kernel.org, linux-sunxi@lists.linux.dev,
	alsa-devel@alsa-project.org, linux-mips@vger.kernel.org,
	Maxime Ripard <maxime@cerno.tech>,
	Liam Beguin <liambeguin@gmail.com>
Subject: Re: [PATCH v3 00/65] clk: Make determine_rate mandatory for muxes
Date: Thu, 13 Apr 2023 14:44:51 -0700	[thread overview]
Message-ID: <636b8f855b6009ba068010e00c20e7f5.sboyd@kernel.org> (raw)
In-Reply-To: <20221018-clk-range-checks-fixes-v3-0-9a1358472d52@cerno.tech>

Quoting Maxime Ripard (2023-04-04 03:10:50)
> Hi,
> 
> This is a follow-up to a previous series that was printing a warning
> when a mux has a set_parent implementation but is missing
> determine_rate().
> 
> The rationale is that set_parent() is very likely to be useful when
> changing the rate, but it's determine_rate() that takes the parenting
> decision. If we're missing it, then the current parent is always going
> to be used, and thus set_parent() will not be used. The only exception
> being a direct call to clk_set_parent(), but those are fairly rare
> compared to clk_set_rate().
> 
> Stephen then asked to promote the warning to an error, and to fix up all
> the muxes that are in that situation first. So here it is :)
> 

Thanks for resending.

I was thinking that we apply this patch first and then set
determine_rate clk_ops without setting the clk flag. The function name
is up for debate.

---8<---
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 27c30a533759..057dd3ca8920 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -594,45 +594,57 @@ clk_core_forward_rate_req(struct clk_core *core,
 		req->max_rate = old_req->max_rate;
 }
 
-int clk_mux_determine_rate_flags(struct clk_hw *hw,
-				 struct clk_rate_request *req,
-				 unsigned long flags)
+static int
+clk_core_determine_rate_noreparent(struct clk_core *core,
+				   struct clk_rate_request *req)
 {
-	struct clk_core *core = hw->core, *parent, *best_parent = NULL;
-	int i, num_parents, ret;
+	struct clk_core *parent;
+	int ret;
 	unsigned long best = 0;
 
-	/* if NO_REPARENT flag set, pass through to current parent */
-	if (core->flags & CLK_SET_RATE_NO_REPARENT) {
-		parent = core->parent;
-		if (core->flags & CLK_SET_RATE_PARENT) {
-			struct clk_rate_request parent_req;
-
-			if (!parent) {
-				req->rate = 0;
-				return 0;
-			}
+	parent = core->parent;
+	if (core->flags & CLK_SET_RATE_PARENT) {
+		struct clk_rate_request parent_req;
 
-			clk_core_forward_rate_req(core, req, parent, &parent_req, req->rate);
+		if (!parent) {
+			req->rate = 0;
+			return 0;
+		}
 
-			trace_clk_rate_request_start(&parent_req);
+		clk_core_forward_rate_req(core, req, parent, &parent_req, req->rate);
 
-			ret = clk_core_round_rate_nolock(parent, &parent_req);
-			if (ret)
-				return ret;
+		trace_clk_rate_request_start(&parent_req);
 
-			trace_clk_rate_request_done(&parent_req);
+		ret = clk_core_round_rate_nolock(parent, &parent_req);
+		if (ret)
+			return ret;
 
-			best = parent_req.rate;
-		} else if (parent) {
-			best = clk_core_get_rate_nolock(parent);
-		} else {
-			best = clk_core_get_rate_nolock(core);
-		}
+		trace_clk_rate_request_done(&parent_req);
 
-		goto out;
+		best = parent_req.rate;
+	} else if (parent) {
+		best = clk_core_get_rate_nolock(parent);
+	} else {
+		best = clk_core_get_rate_nolock(core);
 	}
 
+	req->rate = best;
+
+	return 0;
+}
+
+int clk_mux_determine_rate_flags(struct clk_hw *hw,
+				 struct clk_rate_request *req,
+				 unsigned long flags)
+{
+	struct clk_core *core = hw->core, *parent, *best_parent = NULL;
+	int i, num_parents, ret;
+	unsigned long best = 0;
+
+	/* if NO_REPARENT flag set, pass through to current parent */
+	if (core->flags & CLK_SET_RATE_NO_REPARENT)
+		return clk_core_determine_rate_noreparent(core, req);
+
 	/* find the parent that can provide the fastest rate <= rate */
 	num_parents = core->num_parents;
 	for (i = 0; i < num_parents; i++) {
@@ -670,9 +682,7 @@ int clk_mux_determine_rate_flags(struct clk_hw *hw,
 	if (!best_parent)
 		return -EINVAL;
 
-out:
-	if (best_parent)
-		req->best_parent_hw = best_parent->hw;
+	req->best_parent_hw = best_parent->hw;
 	req->best_parent_rate = best;
 	req->rate = best;
 
@@ -772,6 +782,24 @@ int __clk_mux_determine_rate_closest(struct clk_hw *hw,
 }
 EXPORT_SYMBOL_GPL(__clk_mux_determine_rate_closest);
 
+/**
+ * clk_hw_determine_rate_noreparent - clk_ops::determine_rate implementation for a clk that doesn't reparent
+ * @hw: clk to determine rate on
+ * @req: rate request
+ *
+ * Helper for finding best parent rate to provide a given frequency. This can
+ * be used directly as a determine_rate callback (e.g. for a mux), or from a
+ * more complex clock that may combine a mux with other operations.
+ *
+ * Returns: 0 on success, -EERROR value on error
+ */
+int clk_hw_determine_rate_noreparent(struct clk_hw *hw,
+				     struct clk_rate_request *req)
+{
+	return clk_core_determine_rate_noreparent(hw->core, req);
+}
+EXPORT_SYMBOL_GPL(clk_hw_determine_rate_noreparent);
+
 /***        clk api        ***/
 
 static void clk_core_rate_unprotect(struct clk_core *core)
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
index 28ff6f1a6ada..958977231ff7 100644
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -1333,6 +1333,8 @@ int __clk_mux_determine_rate_closest(struct clk_hw *hw,
 int clk_mux_determine_rate_flags(struct clk_hw *hw,
 				 struct clk_rate_request *req,
 				 unsigned long flags);
+int clk_hw_determine_rate_noreparent(struct clk_hw *hw,
+				     struct clk_rate_request *req);
 void clk_hw_reparent(struct clk_hw *hw, struct clk_hw *new_parent);
 void clk_hw_get_rate_range(struct clk_hw *hw, unsigned long *min_rate,
 			   unsigned long *max_rate);
-- 
https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git/
https://git.kernel.org/pub/scm/linux/kernel/git/sboyd/spmi.git

WARNING: multiple messages have this Message-ID (diff)
From: Stephen Boyd <sboyd@kernel.org>
To: "Abel Vesa" <abelvesa@kernel.org>,
	"Alessandro Zummo" <a.zummo@towertech.it>,
	"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
	"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
	"Andreas Färber" <afaerber@suse.de>,
	"Baolin Wang" <baolin.wang@linux.alibaba.com>,
	"Charles Keepax" <ckeepax@opensource.cirrus.com>,
	"Chen-Yu Tsai" <wens@csie.org>,
	"Chunyan Zhang" <zhang.lyra@gmail.com>,
	"Claudiu Beznea" <claudiu.beznea@microchip.com>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	"David Airlie" <airlied@gmail.com>,
	"David Lechner" <david@lechnology.com>,
	"Dinh Nguyen" <dinguyen@kernel.org>,
	"Fabio Estevam" <festevam@gmail.com>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Jaroslav Kysela" <perex@perex.cz>,
	"Jernej Skrabec" <jernej.skrabec@gmail.com>,
	"Jonathan Hunter" <jonathanh@nvidia.com>,
	"Kishon Vijay Abraham I" <kishon@kernel.org>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Luca Ceresoli" <luca.ceresoli@bootlin.com>,
	"Manivannan Sadhasivam" <mani@kernel.org>
Cc: linux-rtc@vger.kernel.org, alsa-devel@alsa-project.org,
	patches@opensource.cirrus.com, linux-actions@lists.infradead.org,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-renesas-soc@vger.kernel.org, linux-phy@lists.infradead.org,
	Liam Beguin <liambeguin@gmail.com>,
	linux-mediatek@lists.infradead.org,
	Maxime Ripard <maxime@cerno.tech>,
	linux-tegra@vger.kernel.org, linux-mips@vger.kernel.org,
	linux-sunxi@lists.linux.dev, linux-clk@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>
Subject: Re: [PATCH v3 00/65] clk: Make determine_rate mandatory for muxes
Date: Thu, 13 Apr 2023 14:44:51 -0700	[thread overview]
Message-ID: <636b8f855b6009ba068010e00c20e7f5.sboyd@kernel.org> (raw)
In-Reply-To: <20221018-clk-range-checks-fixes-v3-0-9a1358472d52@cerno.tech>

Quoting Maxime Ripard (2023-04-04 03:10:50)
> Hi,
> 
> This is a follow-up to a previous series that was printing a warning
> when a mux has a set_parent implementation but is missing
> determine_rate().
> 
> The rationale is that set_parent() is very likely to be useful when
> changing the rate, but it's determine_rate() that takes the parenting
> decision. If we're missing it, then the current parent is always going
> to be used, and thus set_parent() will not be used. The only exception
> being a direct call to clk_set_parent(), but those are fairly rare
> compared to clk_set_rate().
> 
> Stephen then asked to promote the warning to an error, and to fix up all
> the muxes that are in that situation first. So here it is :)
> 

Thanks for resending.

I was thinking that we apply this patch first and then set
determine_rate clk_ops without setting the clk flag. The function name
is up for debate.

---8<---
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 27c30a533759..057dd3ca8920 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -594,45 +594,57 @@ clk_core_forward_rate_req(struct clk_core *core,
 		req->max_rate = old_req->max_rate;
 }
 
-int clk_mux_determine_rate_flags(struct clk_hw *hw,
-				 struct clk_rate_request *req,
-				 unsigned long flags)
+static int
+clk_core_determine_rate_noreparent(struct clk_core *core,
+				   struct clk_rate_request *req)
 {
-	struct clk_core *core = hw->core, *parent, *best_parent = NULL;
-	int i, num_parents, ret;
+	struct clk_core *parent;
+	int ret;
 	unsigned long best = 0;
 
-	/* if NO_REPARENT flag set, pass through to current parent */
-	if (core->flags & CLK_SET_RATE_NO_REPARENT) {
-		parent = core->parent;
-		if (core->flags & CLK_SET_RATE_PARENT) {
-			struct clk_rate_request parent_req;
-
-			if (!parent) {
-				req->rate = 0;
-				return 0;
-			}
+	parent = core->parent;
+	if (core->flags & CLK_SET_RATE_PARENT) {
+		struct clk_rate_request parent_req;
 
-			clk_core_forward_rate_req(core, req, parent, &parent_req, req->rate);
+		if (!parent) {
+			req->rate = 0;
+			return 0;
+		}
 
-			trace_clk_rate_request_start(&parent_req);
+		clk_core_forward_rate_req(core, req, parent, &parent_req, req->rate);
 
-			ret = clk_core_round_rate_nolock(parent, &parent_req);
-			if (ret)
-				return ret;
+		trace_clk_rate_request_start(&parent_req);
 
-			trace_clk_rate_request_done(&parent_req);
+		ret = clk_core_round_rate_nolock(parent, &parent_req);
+		if (ret)
+			return ret;
 
-			best = parent_req.rate;
-		} else if (parent) {
-			best = clk_core_get_rate_nolock(parent);
-		} else {
-			best = clk_core_get_rate_nolock(core);
-		}
+		trace_clk_rate_request_done(&parent_req);
 
-		goto out;
+		best = parent_req.rate;
+	} else if (parent) {
+		best = clk_core_get_rate_nolock(parent);
+	} else {
+		best = clk_core_get_rate_nolock(core);
 	}
 
+	req->rate = best;
+
+	return 0;
+}
+
+int clk_mux_determine_rate_flags(struct clk_hw *hw,
+				 struct clk_rate_request *req,
+				 unsigned long flags)
+{
+	struct clk_core *core = hw->core, *parent, *best_parent = NULL;
+	int i, num_parents, ret;
+	unsigned long best = 0;
+
+	/* if NO_REPARENT flag set, pass through to current parent */
+	if (core->flags & CLK_SET_RATE_NO_REPARENT)
+		return clk_core_determine_rate_noreparent(core, req);
+
 	/* find the parent that can provide the fastest rate <= rate */
 	num_parents = core->num_parents;
 	for (i = 0; i < num_parents; i++) {
@@ -670,9 +682,7 @@ int clk_mux_determine_rate_flags(struct clk_hw *hw,
 	if (!best_parent)
 		return -EINVAL;
 
-out:
-	if (best_parent)
-		req->best_parent_hw = best_parent->hw;
+	req->best_parent_hw = best_parent->hw;
 	req->best_parent_rate = best;
 	req->rate = best;
 
@@ -772,6 +782,24 @@ int __clk_mux_determine_rate_closest(struct clk_hw *hw,
 }
 EXPORT_SYMBOL_GPL(__clk_mux_determine_rate_closest);
 
+/**
+ * clk_hw_determine_rate_noreparent - clk_ops::determine_rate implementation for a clk that doesn't reparent
+ * @hw: clk to determine rate on
+ * @req: rate request
+ *
+ * Helper for finding best parent rate to provide a given frequency. This can
+ * be used directly as a determine_rate callback (e.g. for a mux), or from a
+ * more complex clock that may combine a mux with other operations.
+ *
+ * Returns: 0 on success, -EERROR value on error
+ */
+int clk_hw_determine_rate_noreparent(struct clk_hw *hw,
+				     struct clk_rate_request *req)
+{
+	return clk_core_determine_rate_noreparent(hw->core, req);
+}
+EXPORT_SYMBOL_GPL(clk_hw_determine_rate_noreparent);
+
 /***        clk api        ***/
 
 static void clk_core_rate_unprotect(struct clk_core *core)
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
index 28ff6f1a6ada..958977231ff7 100644
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -1333,6 +1333,8 @@ int __clk_mux_determine_rate_closest(struct clk_hw *hw,
 int clk_mux_determine_rate_flags(struct clk_hw *hw,
 				 struct clk_rate_request *req,
 				 unsigned long flags);
+int clk_hw_determine_rate_noreparent(struct clk_hw *hw,
+				     struct clk_rate_request *req);
 void clk_hw_reparent(struct clk_hw *hw, struct clk_hw *new_parent);
 void clk_hw_get_rate_range(struct clk_hw *hw, unsigned long *min_rate,
 			   unsigned long *max_rate);
-- 
https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git/
https://git.kernel.org/pub/scm/linux/kernel/git/sboyd/spmi.git

  parent reply	other threads:[~2023-04-14  9:41 UTC|newest]

Thread overview: 304+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-04 10:10 [PATCH v3 00/65] clk: Make determine_rate mandatory for muxes Maxime Ripard
2023-04-04 10:10 ` Maxime Ripard
2023-04-04 10:10 ` Maxime Ripard
2023-04-04 10:10 ` [PATCH v3 01/65] clk: Export clk_hw_forward_rate_request() Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10 ` [PATCH v3 02/65] clk: lan966x: Remove unused round_rate hook Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10 ` [PATCH v3 03/65] clk: nodrv: Add a determine_rate hook Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10 ` [PATCH v3 04/65] clk: test: " Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10 ` [PATCH v3 05/65] clk: actions: composite: Add a determine_rate hook for pass clk Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10 ` [PATCH v3 06/65] clk: at91: main: Add a determine_rate hook Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-05-18  7:37   ` Claudiu.Beznea
2023-05-18  7:37     ` Claudiu.Beznea
2023-05-18  7:37     ` Claudiu.Beznea
2023-04-04 10:10 ` [PATCH v3 07/65] clk: at91: sckc: " Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-05-18  7:38   ` Claudiu.Beznea
2023-05-18  7:38     ` Claudiu.Beznea
2023-05-18  7:38     ` Claudiu.Beznea
2023-04-04 10:10 ` [PATCH v3 08/65] clk: berlin: div: " Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10 ` [PATCH v3 09/65] clk: cdce706: " Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:10   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 10/65] clk: k210: pll: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 11/65] clk: k210: aclk: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 12/65] clk: k210: mux: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 13/65] clk: lmk04832: clkout: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 14/65] clk: lochnagar: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-05-04 13:39   ` Charles Keepax
2023-05-04 13:39     ` Charles Keepax
2023-05-04 13:39     ` Charles Keepax
2023-05-04 13:39   ` Charles Keepax via Alsa-devel
2023-04-04 10:11 ` [PATCH v3 15/65] clk: qoriq: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 16/65] clk: si5341: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 17/65] clk: stm32f4: mux: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 18/65] clk: vc5: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 19/65] clk: vc5: clkout: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 20/65] clk: wm831x: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 21/65] clk: davinci: da8xx-cfgchip: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-05 15:04   ` David Lechner
2023-04-05 15:04     ` David Lechner
2023-04-05 15:04     ` David Lechner
2023-04-04 10:11 ` [PATCH v3 22/65] " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-05 15:04   ` David Lechner
2023-04-05 15:04     ` David Lechner
2023-04-05 15:04     ` David Lechner
2023-04-04 10:11 ` [PATCH v3 23/65] clk: imx: busy: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 24/65] clk: imx: fixup-mux: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 25/65] clk: imx: scu: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 26/65] clk: mediatek: cpumux: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 27/65] clk: pxa: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 28/65] clk: renesas: r9a06g032: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-11 10:27   ` Geert Uytterhoeven
2023-04-11 10:27     ` Geert Uytterhoeven
2023-04-11 10:27     ` Geert Uytterhoeven
2023-04-11 10:27     ` Geert Uytterhoeven
2023-04-11 13:09     ` Miquel Raynal via Alsa-devel
2023-04-11 13:09     ` Miquel Raynal
2023-04-11 13:09       ` Miquel Raynal
2023-04-11 13:09       ` Miquel Raynal
2023-04-04 10:11 ` [PATCH v3 29/65] clk: socfpga: gate: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-24 18:32   ` Dinh Nguyen
2023-04-24 18:32     ` Dinh Nguyen
2023-04-24 18:32     ` Dinh Nguyen
2023-04-25 14:48     ` Maxime Ripard
2023-04-25 14:48       ` Maxime Ripard
2023-04-25 14:48       ` Maxime Ripard
2023-04-25 14:48       ` Maxime Ripard
2023-04-27 19:09       ` Dinh Nguyen
2023-04-27 19:09         ` Dinh Nguyen
2023-04-27 19:09         ` Dinh Nguyen
2023-04-27 19:09         ` Dinh Nguyen
2023-05-04 17:04         ` Maxime Ripard
2023-05-04 17:04           ` Maxime Ripard
2023-05-04 17:04           ` Maxime Ripard
2023-05-04 17:04           ` Maxime Ripard
2023-05-09 17:37           ` Dinh Nguyen
2023-05-09 17:37             ` Dinh Nguyen
2023-05-09 17:37             ` Dinh Nguyen
2023-05-09 17:37             ` Dinh Nguyen
2023-05-11  9:45             ` Maxime Ripard
2023-05-11  9:45               ` Maxime Ripard
2023-05-11  9:45               ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 30/65] clk: stm32: core: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 31/65] clk: tegra: bpmp: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 32/65] clk: tegra: super: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 33/65] clk: tegra: periph: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 34/65] clk: ux500: prcmu: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 13:44   ` Linus Walleij
2023-04-04 13:44     ` Linus Walleij
2023-04-04 13:44     ` Linus Walleij
2023-04-04 13:44     ` Linus Walleij
2023-04-04 10:11 ` [PATCH v3 35/65] clk: ux500: sysctrl: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 36/65] clk: versatile: sp810: " Maxime Ripard
2023-04-05  7:27   ` maxime
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-06 15:21   ` Pawel Moll
2023-04-06 15:21     ` Pawel Moll
2023-04-06 15:21     ` Pawel Moll
2023-04-06 15:21     ` Pawel Moll
2023-04-04 10:11 ` [PATCH v3 37/65] drm/tegra: sor: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 38/65] phy: cadence: sierra: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 39/65] phy: cadence: torrent: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 40/65] phy: ti: am654-serdes: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 41/65] phy: ti: j721e-wiz: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 42/65] rtc: sun6i: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 43/65] ASoC: tlv320aic32x4: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 15:26   ` Mark Brown
2023-04-04 15:26     ` Mark Brown
2023-04-04 15:26     ` Mark Brown
2023-04-04 15:26     ` Mark Brown
2023-04-05 15:17     ` Maxime Ripard
2023-04-05 15:17       ` Maxime Ripard
2023-04-05 15:17       ` Maxime Ripard
2023-04-05 15:17       ` Maxime Ripard
2023-04-05 15:34       ` Mark Brown
2023-04-05 15:34         ` Mark Brown
2023-04-05 15:34         ` Mark Brown
2023-04-05 15:34         ` Mark Brown
2023-05-04 17:01         ` Maxime Ripard
2023-05-04 17:01           ` Maxime Ripard
2023-05-04 17:01           ` Maxime Ripard
2023-05-04 17:01           ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 44/65] clk: actions: composite: div: Switch to determine_rate Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 45/65] clk: actions: composite: fact: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 46/65] clk: at91: smd: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-05-18  7:38   ` Claudiu.Beznea
2023-05-18  7:38     ` Claudiu.Beznea
2023-05-18  7:38     ` Claudiu.Beznea
2023-04-04 10:11 ` [PATCH v3 47/65] clk: axi-clkgen: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 48/65] clk: cdce706: divider: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 49/65] clk: cdce706: clkout: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 50/65] clk: si5341: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 51/65] clk: si5351: pll: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 52/65] clk: si5351: msynth: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 53/65] clk: si5351: clkout: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 54/65] clk: da8xx: clk48: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-05 15:03   ` David Lechner
2023-04-05 15:03     ` David Lechner
2023-04-05 15:03     ` David Lechner
2023-04-05 15:22     ` Maxime Ripard
2023-04-05 15:22       ` Maxime Ripard
2023-04-05 15:22       ` Maxime Ripard
2023-04-05 15:22       ` Maxime Ripard
2023-04-05 16:07       ` David Lechner
2023-04-05 16:07         ` David Lechner
2023-04-05 16:07         ` David Lechner
2023-04-05 16:07         ` David Lechner
2023-04-04 10:11 ` [PATCH v3 55/65] clk: imx: scu: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 56/65] clk: ingenic: cgu: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-05 13:04   ` Paul Cercueil
2023-04-05 13:04     ` Paul Cercueil
2023-04-05 13:04     ` Paul Cercueil
2023-04-05 15:19     ` Maxime Ripard
2023-04-05 15:19       ` Maxime Ripard
2023-04-05 15:19       ` Maxime Ripard
2023-04-05 15:19       ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 57/65] clk: ingenic: tcu: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 58/65] clk: sprd: composite: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 59/65] clk: st: flexgen: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 60/65] clk: stm32: composite: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 61/65] clk: tegra: periph: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 62/65] clk: tegra: super: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11 ` [PATCH v3 63/65] ASoC: tlv320aic32x4: pll: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-05 15:09   ` Mark Brown
2023-04-05 15:09     ` Mark Brown
2023-04-05 15:09     ` Mark Brown
2023-04-05 15:09     ` Mark Brown
2023-04-04 10:11 ` [PATCH v3 64/65] ASoC: tlv320aic32x4: div: " Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-05 15:10   ` Mark Brown
2023-04-05 15:10     ` Mark Brown
2023-04-05 15:10     ` Mark Brown
2023-04-05 15:10     ` Mark Brown
2023-04-04 10:11 ` [PATCH v3 65/65] clk: Forbid to register a mux without determine_rate Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-04 10:11   ` Maxime Ripard
2023-04-13 21:44 ` Stephen Boyd [this message]
2023-04-13 21:44   ` [PATCH v3 00/65] clk: Make determine_rate mandatory for muxes Stephen Boyd
2023-04-25 14:46   ` Maxime Ripard
2023-04-25 14:46     ` Maxime Ripard
2023-04-25 14:46     ` Maxime Ripard
2023-04-25 14:46     ` Maxime Ripard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=636b8f855b6009ba068010e00c20e7f5.sboyd@kernel.org \
    --to=sboyd@kernel.org \
    --cc=a.zummo@towertech.it \
    --cc=abelvesa@kernel.org \
    --cc=afaerber@suse.de \
    --cc=airlied@gmail.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=alexandre.torgue@foss.st.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=ckeepax@opensource.cirrus.com \
    --cc=claudiu.beznea@microchip.com \
    --cc=daniel@ffwll.ch \
    --cc=david@lechnology.com \
    --cc=dinguyen@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=festevam@gmail.com \
    --cc=geert+renesas@glider.be \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonathanh@nvidia.com \
    --cc=kishon@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=liambeguin@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-actions@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux-rtc@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=linux-tegra@vger.kernel.org \
    --cc=luca.ceresoli@bootlin.com \
    --cc=mani@kernel.org \
    --cc=maxime@cerno.tech \
    --cc=patches@opensource.cirrus.com \
    --cc=perex@perex.cz \
    --cc=wens@csie.org \
    --cc=zhang.lyra@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.