|
@@ -139,6 +139,10 @@ static int tangox_wdt_probe(struct platform_device *pdev)
|
|
return err;
|
|
return err;
|
|
|
|
|
|
dev->clk_rate = clk_get_rate(dev->clk);
|
|
dev->clk_rate = clk_get_rate(dev->clk);
|
|
|
|
+ if (!dev->clk_rate) {
|
|
|
|
+ err = -EINVAL;
|
|
|
|
+ goto err;
|
|
|
|
+ }
|
|
|
|
|
|
dev->wdt.parent = &pdev->dev;
|
|
dev->wdt.parent = &pdev->dev;
|
|
dev->wdt.info = &tangox_wdt_info;
|
|
dev->wdt.info = &tangox_wdt_info;
|
|
@@ -171,10 +175,8 @@ static int tangox_wdt_probe(struct platform_device *pdev)
|
|
}
|
|
}
|
|
|
|
|
|
err = watchdog_register_device(&dev->wdt);
|
|
err = watchdog_register_device(&dev->wdt);
|
|
- if (err) {
|
|
|
|
- clk_disable_unprepare(dev->clk);
|
|
|
|
- return err;
|
|
|
|
- }
|
|
|
|
|
|
+ if (err)
|
|
|
|
+ goto err;
|
|
|
|
|
|
platform_set_drvdata(pdev, dev);
|
|
platform_set_drvdata(pdev, dev);
|
|
|
|
|
|
@@ -187,6 +189,10 @@ static int tangox_wdt_probe(struct platform_device *pdev)
|
|
dev_info(&pdev->dev, "SMP86xx/SMP87xx watchdog registered\n");
|
|
dev_info(&pdev->dev, "SMP86xx/SMP87xx watchdog registered\n");
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
|
|
+
|
|
|
|
+ err:
|
|
|
|
+ clk_disable_unprepare(dev->clk);
|
|
|
|
+ return err;
|
|
}
|
|
}
|
|
|
|
|
|
static int tangox_wdt_remove(struct platform_device *pdev)
|
|
static int tangox_wdt_remove(struct platform_device *pdev)
|