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 > Cc: Stephen Boyd > Cc: linux-clk@vger.kernel.org > Signed-off-by: Maxime Ripard > --- > 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