diff options
Diffstat (limited to 'drivers/rtc/rtc-ds1742.c')
| -rw-r--r-- | drivers/rtc/rtc-ds1742.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/rtc/rtc-ds1742.c b/drivers/rtc/rtc-ds1742.c index 8e47e5a06d2a..6273a3d240a2 100644 --- a/drivers/rtc/rtc-ds1742.c +++ b/drivers/rtc/rtc-ds1742.c | |||
| @@ -17,7 +17,7 @@ | |||
| 17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
| 18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
| 19 | 19 | ||
| 20 | #define DRV_VERSION "0.1" | 20 | #define DRV_VERSION "0.2" |
| 21 | 21 | ||
| 22 | #define RTC_REG_SIZE 0x800 | 22 | #define RTC_REG_SIZE 0x800 |
| 23 | #define RTC_OFFSET 0x7f8 | 23 | #define RTC_OFFSET 0x7f8 |
| @@ -116,7 +116,7 @@ static int ds1742_rtc_read_time(struct device *dev, struct rtc_time *tm) | |||
| 116 | return 0; | 116 | return 0; |
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | static struct rtc_class_ops ds1742_rtc_ops = { | 119 | static const struct rtc_class_ops ds1742_rtc_ops = { |
| 120 | .read_time = ds1742_rtc_read_time, | 120 | .read_time = ds1742_rtc_read_time, |
| 121 | .set_time = ds1742_rtc_set_time, | 121 | .set_time = ds1742_rtc_set_time, |
| 122 | }; | 122 | }; |
| @@ -196,7 +196,7 @@ static int __init ds1742_rtc_probe(struct platform_device *pdev) | |||
| 196 | writeb(sec, ioaddr + RTC_SECONDS); | 196 | writeb(sec, ioaddr + RTC_SECONDS); |
| 197 | writeb(cen & RTC_CENTURY_MASK, ioaddr + RTC_CONTROL); | 197 | writeb(cen & RTC_CENTURY_MASK, ioaddr + RTC_CONTROL); |
| 198 | } | 198 | } |
| 199 | if (readb(ioaddr + RTC_DAY) & RTC_BATT_FLAG) | 199 | if (!(readb(ioaddr + RTC_DAY) & RTC_BATT_FLAG)) |
| 200 | dev_warn(&pdev->dev, "voltage-low detected.\n"); | 200 | dev_warn(&pdev->dev, "voltage-low detected.\n"); |
| 201 | 201 | ||
| 202 | rtc = rtc_device_register(pdev->name, &pdev->dev, | 202 | rtc = rtc_device_register(pdev->name, &pdev->dev, |
| @@ -208,9 +208,13 @@ static int __init ds1742_rtc_probe(struct platform_device *pdev) | |||
| 208 | pdata->rtc = rtc; | 208 | pdata->rtc = rtc; |
| 209 | pdata->last_jiffies = jiffies; | 209 | pdata->last_jiffies = jiffies; |
| 210 | platform_set_drvdata(pdev, pdata); | 210 | platform_set_drvdata(pdev, pdata); |
| 211 | sysfs_create_bin_file(&pdev->dev.kobj, &ds1742_nvram_attr); | 211 | ret = sysfs_create_bin_file(&pdev->dev.kobj, &ds1742_nvram_attr); |
| 212 | if (ret) | ||
| 213 | goto out; | ||
| 212 | return 0; | 214 | return 0; |
| 213 | out: | 215 | out: |
| 216 | if (pdata->rtc) | ||
| 217 | rtc_device_unregister(pdata->rtc); | ||
| 214 | if (ioaddr) | 218 | if (ioaddr) |
| 215 | iounmap(ioaddr); | 219 | iounmap(ioaddr); |
| 216 | if (pdata->baseaddr) | 220 | if (pdata->baseaddr) |
