mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-11 05:42:58 +00:00
eda0ba38a8
If no softreset save registers are found on the hardware "bootcount" is stored in the environment. To prevent a saveenv on all reboots, the environment variable "upgrade_available" is introduced. If "upgrade_available" is 0, "bootcount" is always 0 therefore no need to save the environment on u-boot boot, if "upgrade_available" is 1 "bootcount" is incremented in the environment and environment gets written on u-boot start. So the Userspace Applikation must set the "upgrade_available" and "bootcount" variable to 0 (for example with fw_setenv), if a boot was successfully. Signed-off-by: Heiko Schocher <hs@denx.de>
29 lines
521 B
C
29 lines
521 B
C
/*
|
|
* (C) Copyright 2013
|
|
* Heiko Schocher, DENX Software Engineering, hs@denx.de.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
#include <common.h>
|
|
|
|
void bootcount_store(ulong a)
|
|
{
|
|
int upgrade_available = getenv_ulong("upgrade_available", 10, 0);
|
|
|
|
if (upgrade_available) {
|
|
setenv_ulong("bootcount", a);
|
|
saveenv();
|
|
}
|
|
}
|
|
|
|
ulong bootcount_load(void)
|
|
{
|
|
int upgrade_available = getenv_ulong("upgrade_available", 10, 0);
|
|
ulong val = 0;
|
|
|
|
if (upgrade_available)
|
|
val = getenv_ulong("bootcount", 10, 0);
|
|
|
|
return val;
|
|
}
|