aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/rtc/rtc-pcf50633.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/rtc/rtc-pcf50633.c b/drivers/rtc/rtc-pcf50633.c
index e9f3135d305f..e6b6911c8e05 100644
--- a/drivers/rtc/rtc-pcf50633.c
+++ b/drivers/rtc/rtc-pcf50633.c
@@ -252,20 +252,17 @@ static int pcf50633_rtc_probe(struct platform_device *pdev)
252{ 252{
253 struct pcf50633_rtc *rtc; 253 struct pcf50633_rtc *rtc;
254 254
255 rtc = kzalloc(sizeof(*rtc), GFP_KERNEL); 255 rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL);
256 if (!rtc) 256 if (!rtc)
257 return -ENOMEM; 257 return -ENOMEM;
258 258
259 rtc->pcf = dev_to_pcf50633(pdev->dev.parent); 259 rtc->pcf = dev_to_pcf50633(pdev->dev.parent);
260 platform_set_drvdata(pdev, rtc); 260 platform_set_drvdata(pdev, rtc);
261 rtc->rtc_dev = rtc_device_register("pcf50633-rtc", &pdev->dev, 261 rtc->rtc_dev = devm_rtc_device_register(&pdev->dev, "pcf50633-rtc",
262 &pcf50633_rtc_ops, THIS_MODULE); 262 &pcf50633_rtc_ops, THIS_MODULE);
263 263
264 if (IS_ERR(rtc->rtc_dev)) { 264 if (IS_ERR(rtc->rtc_dev))
265 int ret = PTR_ERR(rtc->rtc_dev); 265 return PTR_ERR(rtc->rtc_dev);
266 kfree(rtc);
267 return ret;
268 }
269 266
270 pcf50633_register_irq(rtc->pcf, PCF50633_IRQ_ALARM, 267 pcf50633_register_irq(rtc->pcf, PCF50633_IRQ_ALARM,
271 pcf50633_rtc_irq, rtc); 268 pcf50633_rtc_irq, rtc);
@@ -277,12 +274,8 @@ static int pcf50633_rtc_remove(struct platform_device *pdev)
277 struct pcf50633_rtc *rtc; 274 struct pcf50633_rtc *rtc;
278 275
279 rtc = platform_get_drvdata(pdev); 276 rtc = platform_get_drvdata(pdev);
280
281 pcf50633_free_irq(rtc->pcf, PCF50633_IRQ_ALARM); 277 pcf50633_free_irq(rtc->pcf, PCF50633_IRQ_ALARM);
282 278
283 rtc_device_unregister(rtc->rtc_dev);
284 kfree(rtc);
285
286 return 0; 279 return 0;
287} 280}
288 281