mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-19 05:31:32 +00:00
Add bootcount to AT91
Use AT91_GPBR 3 as a bootcount register. The bootmagic and the bootcount shares AT91_GPBR 3. Signed-off-by: Anders Darander <ad@datarespons.se>
This commit is contained in:
parent
5f35348409
commit
cade7d9577
1 changed files with 34 additions and 0 deletions
|
@ -35,6 +35,13 @@
|
|||
#define CONFIG_SYS_AT91_MAIN_CLOCK 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The at91sam9260 has 4 GPBR (0-3), we'll use the last one, nr 3,
|
||||
* to keep track of the bootcount.
|
||||
*/
|
||||
#define AT91_GPBR_BOOTCOUNT_REGISTER 3
|
||||
#define AT91_BOOTCOUNT_ADDRESS (AT91_GPBR + 4*AT91_GPBR_BOOTCOUNT_REGISTER)
|
||||
|
||||
int arch_cpu_init(void)
|
||||
{
|
||||
return at91_clock_init(CONFIG_SYS_AT91_MAIN_CLOCK);
|
||||
|
@ -56,3 +63,30 @@ int print_cpuinfo(void)
|
|||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BOOTCOUNT_LIMIT
|
||||
/*
|
||||
* Just as the mpc5xxx, we combine the BOOTCOUNT_MAGIC and boocount
|
||||
* in one 32-bit register. This is done, as the AT91SAM9260 only has
|
||||
* 4 GPBR.
|
||||
*/
|
||||
void bootcount_store (ulong a)
|
||||
{
|
||||
volatile ulong *save_addr =
|
||||
(volatile ulong *)(AT91_BASE_SYS + AT91_BOOTCOUNT_ADDRESS);
|
||||
|
||||
*save_addr = (BOOTCOUNT_MAGIC & 0xffff0000) | (a & 0x0000ffff);
|
||||
}
|
||||
|
||||
ulong bootcount_load (void)
|
||||
{
|
||||
volatile ulong *save_addr =
|
||||
(volatile ulong *)(AT91_BASE_SYS + AT91_BOOTCOUNT_ADDRESS);
|
||||
|
||||
if ((*save_addr & 0xffff0000) != (BOOTCOUNT_MAGIC & 0xffff0000))
|
||||
return 0;
|
||||
else
|
||||
return (*save_addr & 0x0000ffff);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_BOOTCOUNT_LIMIT */
|
||||
|
|
Loading…
Add table
Reference in a new issue