#include <linux/bcd.h>
 #include <linux/io.h>
 #include <linux/platform_device.h>
+#include <linux/delay.h>
 
 
 #define RTC_TIME_REG_OFFS      0
                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);