[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251024083301.25845-3-angelogioacchino.delregno@collabora.com>
Date: Fri, 24 Oct 2025 10:32:56 +0200
From: AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>
To: sboyd@...nel.org
Cc: mturquette@...libre.com,
robh@...nel.org,
krzk+dt@...nel.org,
conor+dt@...nel.org,
matthias.bgg@...il.com,
angelogioacchino.delregno@...labora.com,
laura.nao@...labora.com,
nfraprado@...labora.com,
wenst@...omium.org,
y.oudjana@...tonmail.com,
linux-clk@...r.kernel.org,
devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org,
linux-mediatek@...ts.infradead.org,
kernel@...labora.com
Subject: [PATCH v1 2/7] clk: mediatek: clk-gate: Simplify and optimize registration iter
Simplify and optimize mtk_clk_register_all_gates() by removing and
replacing the function-local clk_hw pointer assignment and check
and as last step the consequent assignment to the array containing
handles to the registered clocks with... just the last step.
This removes a bunch of useless assignments, and in case any error
happens, the tear down iterator will still do its job without any
change required, effectively bringing no functional change, and a
a small optimization.
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>
---
drivers/clk/mediatek/clk-gate.c | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/drivers/clk/mediatek/clk-gate.c b/drivers/clk/mediatek/clk-gate.c
index fd8cec95cd8d..8d1cc6a98a5f 100644
--- a/drivers/clk/mediatek/clk-gate.c
+++ b/drivers/clk/mediatek/clk-gate.c
@@ -257,8 +257,7 @@ static int mtk_clk_register_all_gates(struct device *dev, struct device_node *no
const struct mtk_gate *clks, int num,
struct clk_hw_onecell_data *clk_data)
{
- int i;
- struct clk_hw *hw;
+ int i, ret;
if (!clk_data)
return -ENOMEM;
@@ -272,21 +271,19 @@ static int mtk_clk_register_all_gates(struct device *dev, struct device_node *no
continue;
}
- hw = mtk_clk_register_gate(dev, gate, regmap, regmap_hwv);
-
- if (IS_ERR(hw)) {
+ clk_data->hws[gate->id] = mtk_clk_register_gate(dev, gate, regmap, hwv_regmap);
+ if (IS_ERR(clk_data->hws[gate->id])) {
pr_err("Failed to register clk %s: %pe\n", gate->name,
- hw);
+ clk_data->hws[gate->id]);
+ ret = PTR_ERR(clk_data->hws[gate->id]);
goto err;
}
-
- clk_data->hws[gate->id] = hw;
}
return 0;
err:
- while (--i >= 0) {
+ while (i-- >= 0) {
const struct mtk_gate *gate = &clks[i];
if (IS_ERR_OR_NULL(clk_data->hws[gate->id]))
@@ -296,7 +293,7 @@ static int mtk_clk_register_all_gates(struct device *dev, struct device_node *no
clk_data->hws[gate->id] = ERR_PTR(-ENOENT);
}
- return PTR_ERR(hw);
+ return ret;
}
int mtk_clk_register_gates(struct device *dev, struct device_node *node,
--
2.51.1
Powered by blists - more mailing lists