summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiquel Raynal <miquel.raynal@bootlin.com>2022-04-27 12:56:50 +0300
committerVinod Koul <vkoul@kernel.org>2022-05-19 20:04:51 +0300
commit2182066d95c33dfb4cb7400952a92cfd12265873 (patch)
tree0099761ba3bbaa842585689bbfb5688bf87808e4
parent134d9c52fca26d2d199516e915da00f0cc6adc73 (diff)
downloadlinux-2182066d95c33dfb4cb7400952a92cfd12265873.tar.xz
clk: renesas: r9a06g032: Probe possible children
The clock controller device on r9a06g032 takes all the memory range that is described as being a system controller. This range contains many different (unrelated?) registers besides the ones belonging to the clock controller, that can necessitate to be accessed from other peripherals. For instance, the dmamux registers are there. The dmamux "device" will be described as a child node of the clock/system controller node, which means we need the top device driver (the clock controller driver in this case) to populate its children manually. In case of error when populating the children, we do not fail the probe on purpose to keep the clk driver up and running. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Acked-by: Stephen Boyd <sboyd@kernel.org> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Acked-by: Geert Uytterhoeven <geert+renesas@glider.be> Link: https://lore.kernel.org/r/20220427095653.91804-7-miquel.raynal@bootlin.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
-rw-r--r--drivers/clk/renesas/r9a06g032-clocks.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/clk/renesas/r9a06g032-clocks.c b/drivers/clk/renesas/r9a06g032-clocks.c
index 052d99059981..69c0eb0eabd1 100644
--- a/drivers/clk/renesas/r9a06g032-clocks.c
+++ b/drivers/clk/renesas/r9a06g032-clocks.c
@@ -16,6 +16,7 @@
#include <linux/math64.h>
#include <linux/of.h>
#include <linux/of_address.h>
+#include <linux/of_platform.h>
#include <linux/platform_device.h>
#include <linux/pm_clock.h>
#include <linux/pm_domain.h>
@@ -996,6 +997,10 @@ static int __init r9a06g032_clocks_probe(struct platform_device *pdev)
sysctrl_priv = clocks;
+ error = of_platform_populate(np, NULL, NULL, dev);
+ if (error)
+ dev_err(dev, "Failed to populate children (%d)\n", error);
+
return 0;
}