All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chen-Yu Tsai <wenst@chromium.org>
To: Stephen Boyd <sboyd@kernel.org>,
	Michael Turquette <mturquette@baylibre.com>,
	Matthias Brugger <matthias.bgg@gmail.com>
Cc: Chen-Yu Tsai <wenst@chromium.org>,
	Chun-Jie Chen <chun-jie.chen@mediatek.com>,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	Miles Chen <miles.chen@mediatek.com>,
	linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH v3 13/31] clk: mediatek: pll: Implement unregister API
Date: Tue,  8 Feb 2022 20:40:16 +0800	[thread overview]
Message-ID: <20220208124034.414635-14-wenst@chromium.org> (raw)
In-Reply-To: <20220208124034.414635-1-wenst@chromium.org>

The PLL clk type within the MediaTek clk driver library only has a
register function, and no corresponding unregister function. This
means there is no way for its users to properly implement cleanup
and removal.

Add a matching unregister function for the PLL type clk.

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Miles Chen <miles.chen@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/clk/mediatek/clk-pll.c | 55 ++++++++++++++++++++++++++++++++++
 drivers/clk/mediatek/clk-pll.h |  2 ++
 2 files changed, 57 insertions(+)

diff --git a/drivers/clk/mediatek/clk-pll.c b/drivers/clk/mediatek/clk-pll.c
index 64f59554bc9b..b54e33b75d4e 100644
--- a/drivers/clk/mediatek/clk-pll.c
+++ b/drivers/clk/mediatek/clk-pll.c
@@ -360,6 +360,21 @@ static struct clk *mtk_clk_register_pll(const struct mtk_pll_data *data,
 	return clk;
 }
 
+static void mtk_clk_unregister_pll(struct clk *clk)
+{
+	struct clk_hw *hw;
+	struct mtk_clk_pll *pll;
+
+	hw = __clk_get_hw(clk);
+	if (!hw)
+		return;
+
+	pll = to_mtk_clk_pll(hw);
+
+	clk_unregister(clk);
+	kfree(pll);
+}
+
 void mtk_clk_register_plls(struct device_node *node,
 		const struct mtk_pll_data *plls, int num_plls, struct clk_onecell_data *clk_data)
 {
@@ -388,4 +403,44 @@ void mtk_clk_register_plls(struct device_node *node,
 }
 EXPORT_SYMBOL_GPL(mtk_clk_register_plls);
 
+static __iomem void *mtk_clk_pll_get_base(struct clk *clk,
+					  const struct mtk_pll_data *data)
+{
+	struct clk_hw *hw = __clk_get_hw(clk);
+	struct mtk_clk_pll *pll = to_mtk_clk_pll(hw);
+
+	return pll->base_addr - data->reg;
+}
+
+void mtk_clk_unregister_plls(const struct mtk_pll_data *plls, int num_plls,
+			     struct clk_onecell_data *clk_data)
+{
+	__iomem void *base = NULL;
+	int i;
+
+	if (!clk_data)
+		return;
+
+	for (i = num_plls; i > 0; i--) {
+		const struct mtk_pll_data *pll = &plls[i - 1];
+
+		if (IS_ERR_OR_NULL(clk_data->clks[pll->id]))
+			continue;
+
+		/*
+		 * This is quite ugly but unfortunately the clks don't have
+		 * any device tied to them, so there's no place to store the
+		 * pointer to the I/O region base address. We have to fetch
+		 * it from one of the registered clks.
+		 */
+		base = mtk_clk_pll_get_base(clk_data->clks[pll->id], pll);
+
+		mtk_clk_unregister_pll(clk_data->clks[pll->id]);
+		clk_data->clks[pll->id] = ERR_PTR(-ENOENT);
+	}
+
+	iounmap(base);
+}
+EXPORT_SYMBOL_GPL(mtk_clk_unregister_plls);
+
 MODULE_LICENSE("GPL");
diff --git a/drivers/clk/mediatek/clk-pll.h b/drivers/clk/mediatek/clk-pll.h
index d01b0c38311d..a889b1e472e7 100644
--- a/drivers/clk/mediatek/clk-pll.h
+++ b/drivers/clk/mediatek/clk-pll.h
@@ -51,5 +51,7 @@ struct mtk_pll_data {
 void mtk_clk_register_plls(struct device_node *node,
 			   const struct mtk_pll_data *plls, int num_plls,
 			   struct clk_onecell_data *clk_data);
+void mtk_clk_unregister_plls(const struct mtk_pll_data *plls, int num_plls,
+			     struct clk_onecell_data *clk_data);
 
 #endif /* __DRV_CLK_MTK_PLL_H */
-- 
2.35.0.263.gb82422642f-goog


_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

WARNING: multiple messages have this Message-ID (diff)
From: Chen-Yu Tsai <wenst@chromium.org>
To: Stephen Boyd <sboyd@kernel.org>,
	Michael Turquette <mturquette@baylibre.com>,
	Matthias Brugger <matthias.bgg@gmail.com>
Cc: Chen-Yu Tsai <wenst@chromium.org>,
	Chun-Jie Chen <chun-jie.chen@mediatek.com>,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	Miles Chen <miles.chen@mediatek.com>,
	linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH v3 13/31] clk: mediatek: pll: Implement unregister API
Date: Tue,  8 Feb 2022 20:40:16 +0800	[thread overview]
Message-ID: <20220208124034.414635-14-wenst@chromium.org> (raw)
In-Reply-To: <20220208124034.414635-1-wenst@chromium.org>

The PLL clk type within the MediaTek clk driver library only has a
register function, and no corresponding unregister function. This
means there is no way for its users to properly implement cleanup
and removal.

Add a matching unregister function for the PLL type clk.

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Miles Chen <miles.chen@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/clk/mediatek/clk-pll.c | 55 ++++++++++++++++++++++++++++++++++
 drivers/clk/mediatek/clk-pll.h |  2 ++
 2 files changed, 57 insertions(+)

diff --git a/drivers/clk/mediatek/clk-pll.c b/drivers/clk/mediatek/clk-pll.c
index 64f59554bc9b..b54e33b75d4e 100644
--- a/drivers/clk/mediatek/clk-pll.c
+++ b/drivers/clk/mediatek/clk-pll.c
@@ -360,6 +360,21 @@ static struct clk *mtk_clk_register_pll(const struct mtk_pll_data *data,
 	return clk;
 }
 
+static void mtk_clk_unregister_pll(struct clk *clk)
+{
+	struct clk_hw *hw;
+	struct mtk_clk_pll *pll;
+
+	hw = __clk_get_hw(clk);
+	if (!hw)
+		return;
+
+	pll = to_mtk_clk_pll(hw);
+
+	clk_unregister(clk);
+	kfree(pll);
+}
+
 void mtk_clk_register_plls(struct device_node *node,
 		const struct mtk_pll_data *plls, int num_plls, struct clk_onecell_data *clk_data)
 {
@@ -388,4 +403,44 @@ void mtk_clk_register_plls(struct device_node *node,
 }
 EXPORT_SYMBOL_GPL(mtk_clk_register_plls);
 
+static __iomem void *mtk_clk_pll_get_base(struct clk *clk,
+					  const struct mtk_pll_data *data)
+{
+	struct clk_hw *hw = __clk_get_hw(clk);
+	struct mtk_clk_pll *pll = to_mtk_clk_pll(hw);
+
+	return pll->base_addr - data->reg;
+}
+
+void mtk_clk_unregister_plls(const struct mtk_pll_data *plls, int num_plls,
+			     struct clk_onecell_data *clk_data)
+{
+	__iomem void *base = NULL;
+	int i;
+
+	if (!clk_data)
+		return;
+
+	for (i = num_plls; i > 0; i--) {
+		const struct mtk_pll_data *pll = &plls[i - 1];
+
+		if (IS_ERR_OR_NULL(clk_data->clks[pll->id]))
+			continue;
+
+		/*
+		 * This is quite ugly but unfortunately the clks don't have
+		 * any device tied to them, so there's no place to store the
+		 * pointer to the I/O region base address. We have to fetch
+		 * it from one of the registered clks.
+		 */
+		base = mtk_clk_pll_get_base(clk_data->clks[pll->id], pll);
+
+		mtk_clk_unregister_pll(clk_data->clks[pll->id]);
+		clk_data->clks[pll->id] = ERR_PTR(-ENOENT);
+	}
+
+	iounmap(base);
+}
+EXPORT_SYMBOL_GPL(mtk_clk_unregister_plls);
+
 MODULE_LICENSE("GPL");
diff --git a/drivers/clk/mediatek/clk-pll.h b/drivers/clk/mediatek/clk-pll.h
index d01b0c38311d..a889b1e472e7 100644
--- a/drivers/clk/mediatek/clk-pll.h
+++ b/drivers/clk/mediatek/clk-pll.h
@@ -51,5 +51,7 @@ struct mtk_pll_data {
 void mtk_clk_register_plls(struct device_node *node,
 			   const struct mtk_pll_data *plls, int num_plls,
 			   struct clk_onecell_data *clk_data);
+void mtk_clk_unregister_plls(const struct mtk_pll_data *plls, int num_plls,
+			     struct clk_onecell_data *clk_data);
 
 #endif /* __DRV_CLK_MTK_PLL_H */
-- 
2.35.0.263.gb82422642f-goog


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Chen-Yu Tsai <wenst@chromium.org>
To: Stephen Boyd <sboyd@kernel.org>,
	Michael Turquette <mturquette@baylibre.com>,
	Matthias Brugger <matthias.bgg@gmail.com>
Cc: Chen-Yu Tsai <wenst@chromium.org>,
	Chun-Jie Chen <chun-jie.chen@mediatek.com>,
	AngeloGioacchino Del Regno 
	<angelogioacchino.delregno@collabora.com>,
	Miles Chen <miles.chen@mediatek.com>,
	linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH v3 13/31] clk: mediatek: pll: Implement unregister API
Date: Tue,  8 Feb 2022 20:40:16 +0800	[thread overview]
Message-ID: <20220208124034.414635-14-wenst@chromium.org> (raw)
In-Reply-To: <20220208124034.414635-1-wenst@chromium.org>

The PLL clk type within the MediaTek clk driver library only has a
register function, and no corresponding unregister function. This
means there is no way for its users to properly implement cleanup
and removal.

Add a matching unregister function for the PLL type clk.

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Miles Chen <miles.chen@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/clk/mediatek/clk-pll.c | 55 ++++++++++++++++++++++++++++++++++
 drivers/clk/mediatek/clk-pll.h |  2 ++
 2 files changed, 57 insertions(+)

diff --git a/drivers/clk/mediatek/clk-pll.c b/drivers/clk/mediatek/clk-pll.c
index 64f59554bc9b..b54e33b75d4e 100644
--- a/drivers/clk/mediatek/clk-pll.c
+++ b/drivers/clk/mediatek/clk-pll.c
@@ -360,6 +360,21 @@ static struct clk *mtk_clk_register_pll(const struct mtk_pll_data *data,
 	return clk;
 }
 
+static void mtk_clk_unregister_pll(struct clk *clk)
+{
+	struct clk_hw *hw;
+	struct mtk_clk_pll *pll;
+
+	hw = __clk_get_hw(clk);
+	if (!hw)
+		return;
+
+	pll = to_mtk_clk_pll(hw);
+
+	clk_unregister(clk);
+	kfree(pll);
+}
+
 void mtk_clk_register_plls(struct device_node *node,
 		const struct mtk_pll_data *plls, int num_plls, struct clk_onecell_data *clk_data)
 {
@@ -388,4 +403,44 @@ void mtk_clk_register_plls(struct device_node *node,
 }
 EXPORT_SYMBOL_GPL(mtk_clk_register_plls);
 
+static __iomem void *mtk_clk_pll_get_base(struct clk *clk,
+					  const struct mtk_pll_data *data)
+{
+	struct clk_hw *hw = __clk_get_hw(clk);
+	struct mtk_clk_pll *pll = to_mtk_clk_pll(hw);
+
+	return pll->base_addr - data->reg;
+}
+
+void mtk_clk_unregister_plls(const struct mtk_pll_data *plls, int num_plls,
+			     struct clk_onecell_data *clk_data)
+{
+	__iomem void *base = NULL;
+	int i;
+
+	if (!clk_data)
+		return;
+
+	for (i = num_plls; i > 0; i--) {
+		const struct mtk_pll_data *pll = &plls[i - 1];
+
+		if (IS_ERR_OR_NULL(clk_data->clks[pll->id]))
+			continue;
+
+		/*
+		 * This is quite ugly but unfortunately the clks don't have
+		 * any device tied to them, so there's no place to store the
+		 * pointer to the I/O region base address. We have to fetch
+		 * it from one of the registered clks.
+		 */
+		base = mtk_clk_pll_get_base(clk_data->clks[pll->id], pll);
+
+		mtk_clk_unregister_pll(clk_data->clks[pll->id]);
+		clk_data->clks[pll->id] = ERR_PTR(-ENOENT);
+	}
+
+	iounmap(base);
+}
+EXPORT_SYMBOL_GPL(mtk_clk_unregister_plls);
+
 MODULE_LICENSE("GPL");
diff --git a/drivers/clk/mediatek/clk-pll.h b/drivers/clk/mediatek/clk-pll.h
index d01b0c38311d..a889b1e472e7 100644
--- a/drivers/clk/mediatek/clk-pll.h
+++ b/drivers/clk/mediatek/clk-pll.h
@@ -51,5 +51,7 @@ struct mtk_pll_data {
 void mtk_clk_register_plls(struct device_node *node,
 			   const struct mtk_pll_data *plls, int num_plls,
 			   struct clk_onecell_data *clk_data);
+void mtk_clk_unregister_plls(const struct mtk_pll_data *plls, int num_plls,
+			     struct clk_onecell_data *clk_data);
 
 #endif /* __DRV_CLK_MTK_PLL_H */
-- 
2.35.0.263.gb82422642f-goog


  parent reply	other threads:[~2022-02-08 12:47 UTC|newest]

Thread overview: 288+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-08 12:40 [PATCH v3 00/31] clk: mediatek: Cleanups and Improvements - Part 1 Chen-Yu Tsai
2022-02-08 12:40 ` Chen-Yu Tsai
2022-02-08 12:40 ` Chen-Yu Tsai
2022-02-08 12:40 ` [PATCH v3 01/31] clk: mediatek: Use %pe to print errors Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:06   ` Chun-Jie Chen
2022-02-15  6:06     ` Chun-Jie Chen
2022-02-15  6:06     ` Chun-Jie Chen
2022-02-17 20:20   ` Stephen Boyd
2022-02-17 20:20     ` Stephen Boyd
2022-02-17 20:20     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 02/31] clk: mediatek: gate: Consolidate gate type clk related code Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:20   ` Chun-Jie Chen
2022-02-15  6:20     ` Chun-Jie Chen
2022-02-15  6:20     ` Chun-Jie Chen
2022-02-17 20:20   ` Stephen Boyd
2022-02-17 20:20     ` Stephen Boyd
2022-02-17 20:20     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 03/31] clk: mediatek: gate: Internalize clk implementation Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:22   ` Chun-Jie Chen
2022-02-15  6:22     ` Chun-Jie Chen
2022-02-15  6:22     ` Chun-Jie Chen
2022-02-17 20:20   ` Stephen Boyd
2022-02-17 20:20     ` Stephen Boyd
2022-02-17 20:20     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 04/31] clk: mediatek: gate: Implement unregister API Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:23   ` Chun-Jie Chen
2022-02-15  6:23     ` Chun-Jie Chen
2022-02-15  6:23     ` Chun-Jie Chen
2022-02-17 20:21   ` Stephen Boyd
2022-02-17 20:21     ` Stephen Boyd
2022-02-17 20:21     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 05/31] clk: mediatek: gate: Clean up included headers Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:24   ` Chun-Jie Chen
2022-02-15  6:24     ` Chun-Jie Chen
2022-02-15  6:24     ` Chun-Jie Chen
2022-02-17 20:21   ` Stephen Boyd
2022-02-17 20:21     ` Stephen Boyd
2022-02-17 20:21     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 06/31] clk: mediatek: cpumux: Implement unregister API Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:25   ` Chun-Jie Chen
2022-02-15  6:25     ` Chun-Jie Chen
2022-02-15  6:25     ` Chun-Jie Chen
2022-02-17 20:21   ` Stephen Boyd
2022-02-17 20:21     ` Stephen Boyd
2022-02-17 20:21     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 07/31] clk: mediatek: cpumux: Internalize struct mtk_clk_cpumux Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:25   ` Chun-Jie Chen
2022-02-15  6:25     ` Chun-Jie Chen
2022-02-15  6:25     ` Chun-Jie Chen
2022-02-17 20:21   ` Stephen Boyd
2022-02-17 20:21     ` Stephen Boyd
2022-02-17 20:21     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 08/31] clk: mediatek: cpumux: Clean up included headers Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:26   ` Chun-Jie Chen
2022-02-15  6:26     ` Chun-Jie Chen
2022-02-15  6:26     ` Chun-Jie Chen
2022-02-17 20:21   ` Stephen Boyd
2022-02-17 20:21     ` Stephen Boyd
2022-02-17 20:21     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 09/31] clk: mediatek: mux: Implement unregister API Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:30   ` Chun-Jie Chen
2022-02-15  6:30     ` Chun-Jie Chen
2022-02-15  6:30     ` Chun-Jie Chen
2022-02-17 20:24   ` Stephen Boyd
2022-02-17 20:24     ` Stephen Boyd
2022-02-17 20:24     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 10/31] clk: mediatek: mux: Internalize struct mtk_clk_mux Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:30   ` Chun-Jie Chen
2022-02-15  6:30     ` Chun-Jie Chen
2022-02-15  6:30     ` Chun-Jie Chen
2022-02-17 20:24   ` Stephen Boyd
2022-02-17 20:24     ` Stephen Boyd
2022-02-17 20:24     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 11/31] clk: mediatek: mux: Clean up included headers Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:31   ` Chun-Jie Chen
2022-02-15  6:31     ` Chun-Jie Chen
2022-02-15  6:31     ` Chun-Jie Chen
2022-02-17 20:25   ` Stephen Boyd
2022-02-17 20:25     ` Stephen Boyd
2022-02-17 20:25     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 12/31] clk: mediatek: pll: Split definitions into separate header file Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:32   ` Chun-Jie Chen
2022-02-15  6:32     ` Chun-Jie Chen
2022-02-15  6:32     ` Chun-Jie Chen
2022-02-17 20:25   ` Stephen Boyd
2022-02-17 20:25     ` Stephen Boyd
2022-02-17 20:25     ` Stephen Boyd
2022-02-08 12:40 ` Chen-Yu Tsai [this message]
2022-02-08 12:40   ` [PATCH v3 13/31] clk: mediatek: pll: Implement unregister API Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:33   ` Chun-Jie Chen
2022-02-15  6:33     ` Chun-Jie Chen
2022-02-15  6:33     ` Chun-Jie Chen
2022-02-17 20:25   ` Stephen Boyd
2022-02-17 20:25     ` Stephen Boyd
2022-02-17 20:25     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 14/31] clk: mediatek: pll: Clean up included headers Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:34   ` Chun-Jie Chen
2022-02-15  6:34     ` Chun-Jie Chen
2022-02-15  6:34     ` Chun-Jie Chen
2022-02-17 20:25   ` Stephen Boyd
2022-02-17 20:25     ` Stephen Boyd
2022-02-17 20:25     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 15/31] clk: mediatek: Implement mtk_clk_unregister_fixed_clks() API Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:35   ` Chun-Jie Chen
2022-02-15  6:35     ` Chun-Jie Chen
2022-02-15  6:35     ` Chun-Jie Chen
2022-02-17 20:25   ` Stephen Boyd
2022-02-17 20:25     ` Stephen Boyd
2022-02-17 20:25     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 16/31] clk: mediatek: Implement mtk_clk_unregister_factors() API Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:36   ` Chun-Jie Chen
2022-02-15  6:36     ` Chun-Jie Chen
2022-02-15  6:36     ` Chun-Jie Chen
2022-02-17 20:26   ` Stephen Boyd
2022-02-17 20:26     ` Stephen Boyd
2022-02-17 20:26     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 17/31] clk: mediatek: Implement mtk_clk_unregister_divider_clks() API Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:36   ` Chun-Jie Chen
2022-02-15  6:36     ` Chun-Jie Chen
2022-02-15  6:36     ` Chun-Jie Chen
2022-02-17 20:26   ` Stephen Boyd
2022-02-17 20:26     ` Stephen Boyd
2022-02-17 20:26     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 18/31] clk: mediatek: Implement mtk_clk_unregister_composites() API Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:37   ` Chun-Jie Chen
2022-02-15  6:37     ` Chun-Jie Chen
2022-02-15  6:37     ` Chun-Jie Chen
2022-02-17 20:26   ` Stephen Boyd
2022-02-17 20:26     ` Stephen Boyd
2022-02-17 20:26     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 19/31] clk: mediatek: Add mtk_clk_simple_remove() Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:37   ` Chun-Jie Chen
2022-02-15  6:37     ` Chun-Jie Chen
2022-02-15  6:37     ` Chun-Jie Chen
2022-02-17 20:26   ` Stephen Boyd
2022-02-17 20:26     ` Stephen Boyd
2022-02-17 20:26     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 20/31] clk: mediatek: mtk: Clean up included headers Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  6:57   ` Chun-Jie Chen
2022-02-15  6:57     ` Chun-Jie Chen
2022-02-15  6:57     ` Chun-Jie Chen
2022-02-17 20:26   ` Stephen Boyd
2022-02-17 20:26     ` Stephen Boyd
2022-02-17 20:26     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 21/31] clk: mediatek: cpumux: Implement error handling in register API Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  7:00   ` Chun-Jie Chen
2022-02-15  7:00     ` Chun-Jie Chen
2022-02-15  7:00     ` Chun-Jie Chen
2022-02-17 20:27   ` Stephen Boyd
2022-02-17 20:27     ` Stephen Boyd
2022-02-17 20:27     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 22/31] clk: mediatek: gate: " Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  7:01   ` Chun-Jie Chen
2022-02-15  7:01     ` Chun-Jie Chen
2022-02-15  7:01     ` Chun-Jie Chen
2022-02-17 20:27   ` Stephen Boyd
2022-02-17 20:27     ` Stephen Boyd
2022-02-17 20:27     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 23/31] clk: mediatek: mux: Reverse check for existing clk to reduce nesting level Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  7:04   ` Chun-Jie Chen
2022-02-15  7:04     ` Chun-Jie Chen
2022-02-15  7:04     ` Chun-Jie Chen
2022-02-17 20:27   ` Stephen Boyd
2022-02-17 20:27     ` Stephen Boyd
2022-02-17 20:27     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 24/31] clk: mediatek: mux: Implement error handling in register API Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  7:05   ` Chun-Jie Chen
2022-02-15  7:05     ` Chun-Jie Chen
2022-02-15  7:05     ` Chun-Jie Chen
2022-02-17 20:27   ` Stephen Boyd
2022-02-17 20:27     ` Stephen Boyd
2022-02-17 20:27     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 25/31] clk: mediatek: pll: " Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  7:05   ` Chun-Jie Chen
2022-02-15  7:05     ` Chun-Jie Chen
2022-02-15  7:05     ` Chun-Jie Chen
2022-02-17 20:28   ` Stephen Boyd
2022-02-17 20:28     ` Stephen Boyd
2022-02-17 20:28     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 26/31] clk: mediatek: mtk: Implement error handling in register APIs Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  7:10   ` Chun-Jie Chen
2022-02-15  7:10     ` Chun-Jie Chen
2022-02-15  7:10     ` Chun-Jie Chen
2022-02-17 20:28   ` Stephen Boyd
2022-02-17 20:28     ` Stephen Boyd
2022-02-17 20:28     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 27/31] clk: mediatek: Unregister clks in mtk_clk_simple_probe() error path Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-15  7:11   ` Chun-Jie Chen
2022-02-15  7:11     ` Chun-Jie Chen
2022-02-15  7:11     ` Chun-Jie Chen
2022-02-17 20:29   ` Stephen Boyd
2022-02-17 20:29     ` Stephen Boyd
2022-02-17 20:29     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 28/31] clk: mediatek: mt8195: Hook up mtk_clk_simple_remove() Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 13:23   ` AngeloGioacchino Del Regno
2022-02-08 13:23     ` AngeloGioacchino Del Regno
2022-02-08 13:23     ` AngeloGioacchino Del Regno
2022-02-15  7:12   ` Chun-Jie Chen
2022-02-15  7:12     ` Chun-Jie Chen
2022-02-15  7:12     ` Chun-Jie Chen
2022-02-17 20:29   ` Stephen Boyd
2022-02-17 20:29     ` Stephen Boyd
2022-02-17 20:29     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 29/31] clk: mediatek: mt8195: Implement error handling in probe functions Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 13:23   ` AngeloGioacchino Del Regno
2022-02-08 13:23     ` AngeloGioacchino Del Regno
2022-02-08 13:23     ` AngeloGioacchino Del Regno
2022-02-17 20:29   ` Stephen Boyd
2022-02-17 20:29     ` Stephen Boyd
2022-02-17 20:29     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 30/31] clk: mediatek: mt8195: Implement remove functions Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 13:23   ` AngeloGioacchino Del Regno
2022-02-08 13:23     ` AngeloGioacchino Del Regno
2022-02-08 13:23     ` AngeloGioacchino Del Regno
2022-02-17 20:29   ` Stephen Boyd
2022-02-17 20:29     ` Stephen Boyd
2022-02-17 20:29     ` Stephen Boyd
2022-02-08 12:40 ` [PATCH v3 31/31] clk: mediatek: Warn if clk IDs are duplicated Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-08 12:40   ` Chen-Yu Tsai
2022-02-17 20:29   ` Stephen Boyd
2022-02-17 20:29     ` Stephen Boyd
2022-02-17 20:29     ` Stephen Boyd
2022-02-08 19:32 ` [PATCH v3 00/31] clk: mediatek: Cleanups and Improvements - Part 1 Boris Lysov
2022-02-08 19:32   ` Boris Lysov
2022-02-08 19:32   ` Boris Lysov
2022-02-09  3:13   ` Chen-Yu Tsai
2022-02-09  3:13     ` Chen-Yu Tsai
2022-02-09  3:13     ` Chen-Yu Tsai

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=20220208124034.414635-14-wenst@chromium.org \
    --to=wenst@chromium.org \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=chun-jie.chen@mediatek.com \
    --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=matthias.bgg@gmail.com \
    --cc=miles.chen@mediatek.com \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@kernel.org \
    /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.