aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-m48t59.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/rtc-m48t59.c')
-rw-r--r--drivers/rtc/rtc-m48t59.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/rtc/rtc-m48t59.c b/drivers/rtc/rtc-m48t59.c
index 33921a6b1707..365ff3ac2348 100644
--- a/drivers/rtc/rtc-m48t59.c
+++ b/drivers/rtc/rtc-m48t59.c
@@ -19,6 +19,7 @@
19#include <linux/rtc.h> 19#include <linux/rtc.h>
20#include <linux/rtc/m48t59.h> 20#include <linux/rtc/m48t59.h>
21#include <linux/bcd.h> 21#include <linux/bcd.h>
22#include <linux/slab.h>
22 23
23#ifndef NO_IRQ 24#ifndef NO_IRQ
24#define NO_IRQ (-1) 25#define NO_IRQ (-1)
@@ -481,6 +482,9 @@ static int __devinit m48t59_rtc_probe(struct platform_device *pdev)
481 goto out; 482 goto out;
482 } 483 }
483 484
485 spin_lock_init(&m48t59->lock);
486 platform_set_drvdata(pdev, m48t59);
487
484 m48t59->rtc = rtc_device_register(name, &pdev->dev, ops, THIS_MODULE); 488 m48t59->rtc = rtc_device_register(name, &pdev->dev, ops, THIS_MODULE);
485 if (IS_ERR(m48t59->rtc)) { 489 if (IS_ERR(m48t59->rtc)) {
486 ret = PTR_ERR(m48t59->rtc); 490 ret = PTR_ERR(m48t59->rtc);
@@ -490,16 +494,14 @@ static int __devinit m48t59_rtc_probe(struct platform_device *pdev)
490 m48t59_nvram_attr.size = pdata->offset; 494 m48t59_nvram_attr.size = pdata->offset;
491 495
492 ret = sysfs_create_bin_file(&pdev->dev.kobj, &m48t59_nvram_attr); 496 ret = sysfs_create_bin_file(&pdev->dev.kobj, &m48t59_nvram_attr);
493 if (ret) 497 if (ret) {
498 rtc_device_unregister(m48t59->rtc);
494 goto out; 499 goto out;
500 }
495 501
496 spin_lock_init(&m48t59->lock);
497 platform_set_drvdata(pdev, m48t59);
498 return 0; 502 return 0;
499 503
500out: 504out:
501 if (!IS_ERR(m48t59->rtc))
502 rtc_device_unregister(m48t59->rtc);
503 if (m48t59->irq != NO_IRQ) 505 if (m48t59->irq != NO_IRQ)
504 free_irq(m48t59->irq, &pdev->dev); 506 free_irq(m48t59->irq, &pdev->dev);
505 if (m48t59->ioaddr) 507 if (m48t59->ioaddr)