|
@@ -20,17 +20,19 @@ void bootcount_store(ulong a)
|
|
|
*/
|
|
|
writel(RTC_KICK0R_WE, ®->kick0r);
|
|
|
writel(RTC_KICK1R_WE, ®->kick1r);
|
|
|
- raw_bootcount_store(®->scratch0, a);
|
|
|
- raw_bootcount_store(®->scratch1, BOOTCOUNT_MAGIC);
|
|
|
+ raw_bootcount_store(®->scratch2,
|
|
|
+ (BOOTCOUNT_MAGIC & 0xffff0000) | (a & 0x0000ffff));
|
|
|
}
|
|
|
|
|
|
ulong bootcount_load(void)
|
|
|
{
|
|
|
+ unsigned long val;
|
|
|
struct davinci_rtc *reg =
|
|
|
(struct davinci_rtc *)CONFIG_SYS_BOOTCOUNT_ADDR;
|
|
|
|
|
|
- if (raw_bootcount_load(®->scratch1) != BOOTCOUNT_MAGIC)
|
|
|
+ val = raw_bootcount_load(®->scratch2);
|
|
|
+ if ((val & 0xffff0000) != (BOOTCOUNT_MAGIC & 0xffff0000))
|
|
|
return 0;
|
|
|
else
|
|
|
- return raw_bootcount_load(®->scratch0);
|
|
|
+ return val & 0x0000ffff;
|
|
|
}
|