]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/rtc/rtc-mv.c
Merge branch 'origin' into devel
[linux-2.6-omap-h63xx.git] / drivers / rtc / rtc-mv.c
index 45f12dcd37160986e014345018f065f9cc75c6fb..e0263d2005eeba6beb78c73809bae192f9c40bfb 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/bcd.h>
 #include <linux/io.h>
 #include <linux/platform_device.h>
+#include <linux/delay.h>
 
 
 #define RTC_TIME_REG_OFFS      0
@@ -119,6 +120,16 @@ static int __init mv_rtc_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
+       /* make sure it is actually functional */
+       if (rtc_time == 0x01000000) {
+               ssleep(1);
+               rtc_time = readl(pdata->ioaddr + RTC_TIME_REG_OFFS);
+               if (rtc_time == 0x01000000) {
+                       dev_err(&pdev->dev, "internal RTC not ticking\n");
+                       return -ENODEV;
+               }
+       }
+
        platform_set_drvdata(pdev, pdata);
        pdata->rtc = rtc_device_register(pdev->name, &pdev->dev,
                                         &mv_rtc_ops, THIS_MODULE);