提交 22ee3975 编写于 作者: T Tom Rini

bootcount_davinci: Switch to scratch register #2

The RTC IP block here provides 3 scratch registers.  Currently when
using DeepSleep on am335x the scratch0/1 registers are used so moving
ourself to scratch2 makes cooperation easier.
Signed-off-by: NTom Rini <trini@ti.com>
上级 155d424a
......@@ -20,17 +20,19 @@ void bootcount_store(ulong a)
*/
writel(RTC_KICK0R_WE, &reg->kick0r);
writel(RTC_KICK1R_WE, &reg->kick1r);
raw_bootcount_store(&reg->scratch0, a);
raw_bootcount_store(&reg->scratch1, BOOTCOUNT_MAGIC);
raw_bootcount_store(&reg->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(&reg->scratch1) != BOOTCOUNT_MAGIC)
val = raw_bootcount_load(&reg->scratch2);
if ((val & 0xffff0000) != (BOOTCOUNT_MAGIC & 0xffff0000))
return 0;
else
return raw_bootcount_load(&reg->scratch0);
return val & 0x0000ffff;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册