|
@@ -179,40 +179,29 @@ static int jz4740_wdt_probe(struct platform_device *pdev)
|
|
|
|
|
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
|
drvdata->base = devm_ioremap_resource(&pdev->dev, res);
|
|
|
- if (IS_ERR(drvdata->base)) {
|
|
|
- ret = PTR_ERR(drvdata->base);
|
|
|
- goto err_out;
|
|
|
- }
|
|
|
+ if (IS_ERR(drvdata->base))
|
|
|
+ return PTR_ERR(drvdata->base);
|
|
|
|
|
|
- drvdata->rtc_clk = clk_get(&pdev->dev, "rtc");
|
|
|
+ drvdata->rtc_clk = devm_clk_get(&pdev->dev, "rtc");
|
|
|
if (IS_ERR(drvdata->rtc_clk)) {
|
|
|
dev_err(&pdev->dev, "cannot find RTC clock\n");
|
|
|
- ret = PTR_ERR(drvdata->rtc_clk);
|
|
|
- goto err_out;
|
|
|
+ return PTR_ERR(drvdata->rtc_clk);
|
|
|
}
|
|
|
|
|
|
- ret = watchdog_register_device(&drvdata->wdt);
|
|
|
+ ret = devm_watchdog_register_device(&pdev->dev, &drvdata->wdt);
|
|
|
if (ret < 0)
|
|
|
- goto err_disable_clk;
|
|
|
+ return ret;
|
|
|
|
|
|
platform_set_drvdata(pdev, drvdata);
|
|
|
- return 0;
|
|
|
|
|
|
-err_disable_clk:
|
|
|
- clk_put(drvdata->rtc_clk);
|
|
|
-err_out:
|
|
|
- return ret;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
static int jz4740_wdt_remove(struct platform_device *pdev)
|
|
|
{
|
|
|
struct jz4740_wdt_drvdata *drvdata = platform_get_drvdata(pdev);
|
|
|
|
|
|
- jz4740_wdt_stop(&drvdata->wdt);
|
|
|
- watchdog_unregister_device(&drvdata->wdt);
|
|
|
- clk_put(drvdata->rtc_clk);
|
|
|
-
|
|
|
- return 0;
|
|
|
+ return jz4740_wdt_stop(&drvdata->wdt);
|
|
|
}
|
|
|
|
|
|
static struct platform_driver jz4740_wdt_driver = {
|