On Fri, 2020-04-24 at 17:33 +0200, Maxime Ripard wrote:
The current firmware clock driver for the RaspberryPi can only be probed by manually registering an associated platform_device.
While this works fine for cpufreq where the device gets attached a clkdev lookup, it would be tedious to maintain a table of all the devices using one of the clocks exposed by the firmware.
Since the DT on the other hand is the perfect place to store those associations, make the firmware clocks driver probe-able through the device tree so that we can represent it as a node.
Cc: Michael Turquette mturquette@baylibre.com Cc: Stephen Boyd sboyd@kernel.org Cc: linux-clk@vger.kernel.org Signed-off-by: Maxime Ripard maxime@cerno.tech
drivers/clk/bcm/clk-raspberrypi.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/drivers/clk/bcm/clk-raspberrypi.c b/drivers/clk/bcm/clk- raspberrypi.c index 1654fd0eedc9..aedeaaf2f66b 100644 --- a/drivers/clk/bcm/clk-raspberrypi.c +++ b/drivers/clk/bcm/clk-raspberrypi.c @@ -255,15 +255,22 @@ static int raspberrypi_clk_probe(struct platform_device *pdev) struct raspberrypi_clk *rpi; int ret;
- firmware_node = of_find_compatible_node(NULL, NULL,
"raspberrypi,bcm2835-firmware");
- /*
* We can be probed either through the an old-fashioned
* platform device registration or through a DT node that is a
* child of the firmware node. Handle both cases.
*/
- if (dev->of_node)
firmware_node = of_get_parent(dev->of_node);
- else
firmware_node = of_find_compatible_node(NULL, NULL,
"raspberrypi,bcm2835-
firmware"); if (!firmware_node) { dev_err(dev, "Missing firmware node\n"); return -ENOENT; }
firmware = rpi_firmware_get(firmware_node);
- of_node_put(firmware_node);
Why remove this? I think it's still needed after your changes.
Regards, Nicolas