]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/rtc/rtc-test.c
byteorder: only use linux/swab.h
[linux-2.6-omap-h63xx.git] / drivers / rtc / rtc-test.c
index bc4bd24508a2d4beb23458c3b6ee3a86b7e41e26..e478280ff6283d130c9cd456d09189a17f5f472c 100644 (file)
@@ -34,14 +34,9 @@ static int test_rtc_read_time(struct device *dev,
        return 0;
 }
 
-static int test_rtc_set_time(struct device *dev,
-       struct rtc_time *tm)
-{
-       return 0;
-}
-
 static int test_rtc_set_mmss(struct device *dev, unsigned long secs)
 {
+       dev_info(dev, "%s, secs = %lu\n", __func__, secs);
        return 0;
 }
 
@@ -78,7 +73,6 @@ static int test_rtc_ioctl(struct device *dev, unsigned int cmd,
 static const struct rtc_class_ops test_rtc_ops = {
        .proc = test_rtc_proc,
        .read_time = test_rtc_read_time,
-       .set_time = test_rtc_set_time,
        .read_alarm = test_rtc_read_alarm,
        .set_alarm = test_rtc_set_alarm,
        .set_mmss = test_rtc_set_mmss,
@@ -99,14 +93,16 @@ static ssize_t test_irq_store(struct device *dev,
        struct rtc_device *rtc = platform_get_drvdata(plat_dev);
 
        retval = count;
+       local_irq_disable();
        if (strncmp(buf, "tick", 4) == 0)
-               rtc_update_irq(&rtc->class_dev, 1, RTC_PF | RTC_IRQF);
+               rtc_update_irq(rtc, 1, RTC_PF | RTC_IRQF);
        else if (strncmp(buf, "alarm", 5) == 0)
-               rtc_update_irq(&rtc->class_dev, 1, RTC_AF | RTC_IRQF);
+               rtc_update_irq(rtc, 1, RTC_AF | RTC_IRQF);
        else if (strncmp(buf, "update", 6) == 0)
-               rtc_update_irq(&rtc->class_dev, 1, RTC_UF | RTC_IRQF);
+               rtc_update_irq(rtc, 1, RTC_UF | RTC_IRQF);
        else
                retval = -EINVAL;
+       local_irq_enable();
 
        return retval;
 }
@@ -121,11 +117,18 @@ static int test_probe(struct platform_device *plat_dev)
                err = PTR_ERR(rtc);
                return err;
        }
-       device_create_file(&plat_dev->dev, &dev_attr_irq);
+
+       err = device_create_file(&plat_dev->dev, &dev_attr_irq);
+       if (err)
+               goto err;
 
        platform_set_drvdata(plat_dev, rtc);
 
        return 0;
+
+err:
+       rtc_device_unregister(rtc);
+       return err;
 }
 
 static int __devexit test_remove(struct platform_device *plat_dev)
@@ -138,7 +141,7 @@ static int __devexit test_remove(struct platform_device *plat_dev)
        return 0;
 }
 
-static struct platform_driver test_drv = {
+static struct platform_driver test_driver = {
        .probe  = test_probe,
        .remove = __devexit_p(test_remove),
        .driver = {
@@ -151,7 +154,7 @@ static int __init test_init(void)
 {
        int err;
 
-       if ((err = platform_driver_register(&test_drv)))
+       if ((err = platform_driver_register(&test_driver)))
                return err;
 
        if ((test0 = platform_device_alloc("rtc-test", 0)) == NULL) {
@@ -182,7 +185,7 @@ exit_free_test0:
        platform_device_put(test0);
 
 exit_driver_unregister:
-       platform_driver_unregister(&test_drv);
+       platform_driver_unregister(&test_driver);
        return err;
 }
 
@@ -190,7 +193,7 @@ static void __exit test_exit(void)
 {
        platform_device_unregister(test0);
        platform_device_unregister(test1);
-       platform_driver_unregister(&test_drv);
+       platform_driver_unregister(&test_driver);
 }
 
 MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");