summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTom Rini <trini@ti.com>2013-08-28 09:00:29 -0400
committerTom Rini <trini@ti.com>2013-11-01 15:30:22 -0400
commit22ee39750431c0695497ffab412bb29564c68a80 (patch)
tree851319e134dc2ee56775eed3b86c0659d6e8f457 /drivers
parent155d424a9a0228e2f38ce21a92b20c31896d61d2 (diff)
downloadu-boot-imx-22ee39750431c0695497ffab412bb29564c68a80.zip
u-boot-imx-22ee39750431c0695497ffab412bb29564c68a80.tar.gz
u-boot-imx-22ee39750431c0695497ffab412bb29564c68a80.tar.bz2
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: Tom Rini <trini@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/bootcount/bootcount_davinci.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/bootcount/bootcount_davinci.c b/drivers/bootcount/bootcount_davinci.c
index eddd940..f0acfad 100644
--- a/drivers/bootcount/bootcount_davinci.c
+++ b/drivers/bootcount/bootcount_davinci.c
@@ -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;
}