aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/watchdog
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-05-31 14:46:55 +0100
committerWim Van Sebroeck <wim@iguana.be>2011-06-28 07:42:16 +0000
commit076bad7c4d2c51d9484f0ac60d68838139d2bf72 (patch)
treebeb4449d91329fd552cc5f23a79f3a589476d29c /drivers/watchdog
parentLinux 3.0-rc5 (diff)
downloadlinux-dev-076bad7c4d2c51d9484f0ac60d68838139d2bf72.tar.xz
linux-dev-076bad7c4d2c51d9484f0ac60d68838139d2bf72.zip
watchdog: Handle multiple wm831x watchdogs being registered
Due to the whole single instance based watchdog API we use static data for the wm831x watchdog which means that if the system tries to register a second one we end up trying to register the same miscdevice again, corrupting the miscdevice list. Work around this by checking for duplicate registrations until we get a watchdog core. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers/watchdog')
-rw-r--r--drivers/watchdog/wm831x_wdt.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/watchdog/wm831x_wdt.c b/drivers/watchdog/wm831x_wdt.c
index 8c4b2d5bb7da..871caea4e1c6 100644
--- a/drivers/watchdog/wm831x_wdt.c
+++ b/drivers/watchdog/wm831x_wdt.c
@@ -320,6 +320,11 @@ static int __devinit wm831x_wdt_probe(struct platform_device *pdev)
struct wm831x_watchdog_pdata *pdata;
int reg, ret;
+ if (wm831x) {
+ dev_err(&pdev->dev, "wm831x watchdog already registered\n");
+ return -EBUSY;
+ }
+
wm831x = dev_get_drvdata(pdev->dev.parent);
ret = wm831x_reg_read(wm831x, WM831X_WATCHDOG);