|
@@ -451,8 +451,10 @@ static int at91_rtc_probe(struct platform_device *pdev)
|
|
|
|
|
|
rtc->rtcdev = devm_rtc_device_register(&pdev->dev, pdev->name,
|
|
|
&at91_rtc_ops, THIS_MODULE);
|
|
|
- if (IS_ERR(rtc->rtcdev))
|
|
|
- return PTR_ERR(rtc->rtcdev);
|
|
|
+ if (IS_ERR(rtc->rtcdev)) {
|
|
|
+ ret = PTR_ERR(rtc->rtcdev);
|
|
|
+ goto err_clk;
|
|
|
+ }
|
|
|
|
|
|
/* register irq handler after we know what name we'll use */
|
|
|
ret = devm_request_irq(&pdev->dev, rtc->irq, at91_rtc_interrupt,
|
|
@@ -460,7 +462,7 @@ static int at91_rtc_probe(struct platform_device *pdev)
|
|
|
dev_name(&rtc->rtcdev->dev), rtc);
|
|
|
if (ret) {
|
|
|
dev_dbg(&pdev->dev, "can't share IRQ %d?\n", rtc->irq);
|
|
|
- return ret;
|
|
|
+ goto err_clk;
|
|
|
}
|
|
|
|
|
|
/* NOTE: sam9260 rev A silicon has a ROM bug which resets the
|
|
@@ -474,6 +476,11 @@ static int at91_rtc_probe(struct platform_device *pdev)
|
|
|
dev_name(&rtc->rtcdev->dev));
|
|
|
|
|
|
return 0;
|
|
|
+
|
|
|
+err_clk:
|
|
|
+ clk_disable_unprepare(rtc->sclk);
|
|
|
+
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
/*
|