diff options
author | Maxime Ripard <maxime@cerno.tech> | 2020-06-15 11:40:43 +0300 |
---|---|---|
committer | Stephen Boyd <sboyd@kernel.org> | 2020-06-20 03:21:15 +0300 |
commit | 511aba099cd4c44cb8ad4ca7e2d6ffc034eed743 (patch) | |
tree | de403584438526fe6dfe82b89d857a080883c5d2 /drivers | |
parent | 74a0caa5ef1c25905c4409b350ed9a8e0d9a3b74 (diff) | |
download | linux-511aba099cd4c44cb8ad4ca7e2d6ffc034eed743.tar.xz |
firmware: rpi: Only create clocks device if we don't have a node for it
The firmware clocks driver was previously probed through a platform_device
created by the firmware driver.
Since we will now have a node for that clocks driver, we need to create the
device only in the case where there's no node for it already.
Reviewed-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Tested-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://lore.kernel.org/r/72114c4287ebda2dbd952ea238d4489d359897e5.1592210452.git-series.maxime@cerno.tech
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/firmware/raspberrypi.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c index ef8098856a47..b25901a77c09 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -208,6 +208,20 @@ rpi_register_hwmon_driver(struct device *dev, struct rpi_firmware *fw) static void rpi_register_clk_driver(struct device *dev) { + struct device_node *firmware; + + /* + * Earlier DTs don't have a node for the firmware clocks but + * rely on us creating a platform device by hand. If we do + * have a node for the firmware clocks, just bail out here. + */ + firmware = of_get_compatible_child(dev->of_node, + "raspberrypi,firmware-clocks"); + if (firmware) { + of_node_put(firmware); + return; + } + rpi_clk = platform_device_register_data(dev, "raspberrypi-clk", -1, NULL, 0); } |