watchdog: bcm2835_wdt: consider system-power-controller property
authorStefan Wahren <stefan.wahren@i2se.com>
Sun, 6 Jun 2021 12:16:12 +0000 (14:16 +0200)
committerWim Van Sebroeck <wim@linux-watchdog.org>
Sun, 22 Aug 2021 08:28:08 +0000 (10:28 +0200)
Until now all Raspberry Pi boards used the power off function of the SoC.
But the Raspberry Pi 400 uses gpio-poweroff for the whole board which
possibly cannot register the poweroff handler because the it's
already registered by this watchdog driver. So consider the
system-power-controller property for registering, which is already
defined in soc/bcm/brcm,bcm2835-pm.txt .

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Reviewed-by: Nicolas Saenz Julienne <nsaenz@kernel.org>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/1622981777-5023-3-git-send-email-stefan.wahren@i2se.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
drivers/watchdog/bcm2835_wdt.c

index dec6ca019beaaaaebdc52b4a88459a8327f9d2b8..94907176a0e4f5d80fba4fbccc4b56fe7595420c 100644 (file)
@@ -205,9 +205,13 @@ static int bcm2835_wdt_probe(struct platform_device *pdev)
        if (err)
                return err;
 
-       if (pm_power_off == NULL) {
-               pm_power_off = bcm2835_power_off;
-               bcm2835_power_off_wdt = wdt;
+       if (of_device_is_system_power_controller(pdev->dev.parent->of_node)) {
+               if (!pm_power_off) {
+                       pm_power_off = bcm2835_power_off;
+                       bcm2835_power_off_wdt = wdt;
+               } else {
+                       dev_info(dev, "Poweroff handler already present!\n");
+               }
        }
 
        dev_info(dev, "Broadcom BCM2835 watchdog timer");