summaryrefslogtreecommitdiff
path: root/drivers/clk/meson/meson-aoclk.c
diff options
context:
space:
mode:
authorNeil Armstrong <neil.armstrong@linaro.org>2023-06-12 11:57:20 +0200
committerJerome Brunet <jbrunet@baylibre.com>2023-08-08 16:06:16 +0200
commit7e1723fd3fa5d75831368e0b3f2e6baac1ac09bb (patch)
tree316941849387602441ef2d7611bac23588774894 /drivers/clk/meson/meson-aoclk.c
parent141fbc272b0406265d56db696e8051671dde0bf8 (diff)
downloadlinux-7e1723fd3fa5d75831368e0b3f2e6baac1ac09bb.tar.gz
linux-7e1723fd3fa5d75831368e0b3f2e6baac1ac09bb.tar.bz2
linux-7e1723fd3fa5d75831368e0b3f2e6baac1ac09bb.zip
clk: meson: migrate meson-aoclk out of hw_onecell_data to drop NR_CLKS
The way hw_onecell_data is declared: struct clk_hw_onecell_data { unsigned int num; struct clk_hw *hws[]; }; makes it impossible to have the clk_hw table declared outside while using ARRAY_SIZE() to determine ".num" due to ".hws" being a flexible array member. Completely move out of hw_onecell_data and add a custom devm_of_clk_add_hw_provider() "get" callback to retrieve the clk_hw from the meson_aoclk_data struct to finally get rid on the NR_CLKS define. [jbrunet: Fixed whitespace checkpatch warning] Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://lore.kernel.org/r/20230607-topic-amlogic-upstream-clkid-public-migration-v2-3-38172d17c27a@linaro.org Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Diffstat (limited to 'drivers/clk/meson/meson-aoclk.c')
-rw-r--r--drivers/clk/meson/meson-aoclk.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/clk/meson/meson-aoclk.c b/drivers/clk/meson/meson-aoclk.c
index 434cd8f9de82..e7a72bdd0db0 100644
--- a/drivers/clk/meson/meson-aoclk.c
+++ b/drivers/clk/meson/meson-aoclk.c
@@ -75,19 +75,18 @@ int meson_aoclkc_probe(struct platform_device *pdev)
data->clks[clkid]->map = regmap;
/* Register all clks */
- for (clkid = 0; clkid < data->hw_data->num; clkid++) {
- if (!data->hw_data->hws[clkid])
+ for (clkid = 0; clkid < data->hw_clks.num; clkid++) {
+ if (!data->hw_clks.hws[clkid])
continue;
- ret = devm_clk_hw_register(dev, data->hw_data->hws[clkid]);
+ ret = devm_clk_hw_register(dev, data->hw_clks.hws[clkid]);
if (ret) {
dev_err(dev, "Clock registration failed\n");
return ret;
}
}
- return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
- (void *) data->hw_data);
+ return devm_of_clk_add_hw_provider(dev, meson_clk_hw_get, (void *)&data->hw_clks);
}
EXPORT_SYMBOL_GPL(meson_aoclkc_probe);
MODULE_LICENSE("GPL v2");