+#define BOOT_CAUSE_MASK (RTC_PERSISTENT0_EXTERNAL_RESET | \
+ RTC_PERSISTENT0_ALARM_WAKE | \
+ RTC_PERSISTENT0_THERMAL_RESET)
+
+static int wait_rtc_stat(u32 mask)
+{
+ int timeout = 5000;
+ u32 val;
+ struct mxs_rtc_regs *rtc_regs = (void *)MXS_RTC_BASE;
+ u32 old_val = readl(&rtc_regs->hw_rtc_stat);
+
+ debug("stat=%x\n", old_val);
+
+ while ((val = readl(&rtc_regs->hw_rtc_stat)) & mask) {
+ if (val != old_val) {
+ old_val = val;
+ debug("stat: %x -> %x\n", old_val, val);
+ }
+ udelay(1);
+ if (timeout-- < 0)
+ break;
+ }
+ return !!(readl(&rtc_regs->hw_rtc_stat) & mask);
+}
+