2017-11-08 15:35:13 +00:00
|
|
|
#
|
|
|
|
# Boot count configuration
|
|
|
|
#
|
|
|
|
|
2018-02-16 15:50:39 +00:00
|
|
|
menuconfig BOOTCOUNT_LIMIT
|
2018-02-09 22:50:57 +00:00
|
|
|
bool "Enable support for checking boot count limit"
|
|
|
|
help
|
|
|
|
Enable checking for exceeding the boot count limit.
|
|
|
|
More information: http://www.denx.de/wiki/DULG/UBootBootCountLimit
|
|
|
|
|
2018-02-16 15:50:38 +00:00
|
|
|
if BOOTCOUNT_LIMIT
|
2017-11-08 15:35:13 +00:00
|
|
|
|
2018-02-16 15:50:39 +00:00
|
|
|
choice
|
|
|
|
prompt "Boot count device"
|
2018-02-16 15:50:40 +00:00
|
|
|
default BOOTCOUNT_AM33XX if AM33XX || SOC_DA8XX
|
2018-02-16 15:50:45 +00:00
|
|
|
default BOOTCOUNT_AT91 if AT91SAM9XE
|
2018-02-16 15:50:46 +00:00
|
|
|
default BOOTCOUNT_GENERIC
|
|
|
|
|
|
|
|
config BOOTCOUNT_GENERIC
|
|
|
|
bool "Generic default boot counter"
|
|
|
|
help
|
|
|
|
Generic bootcount stored at SYS_BOOTCOUNT_ADDR.
|
|
|
|
|
|
|
|
SYS_BOOTCOUNT_ADDR:
|
|
|
|
Set to the address where the bootcount and bootcount magic
|
|
|
|
will be stored.
|
2018-02-16 15:50:39 +00:00
|
|
|
|
2017-11-08 15:35:13 +00:00
|
|
|
config BOOTCOUNT_EXT
|
|
|
|
bool "Boot counter on EXT filesystem"
|
2020-05-20 07:13:26 +00:00
|
|
|
depends on FS_EXT4
|
|
|
|
select EXT4_WRITE
|
2017-11-08 15:35:13 +00:00
|
|
|
help
|
|
|
|
Add support for maintaining boot count in a file on an EXT
|
|
|
|
filesystem.
|
|
|
|
|
2018-02-16 15:50:40 +00:00
|
|
|
config BOOTCOUNT_AM33XX
|
|
|
|
bool "Boot counter in AM33XX RTC IP block"
|
|
|
|
depends on AM33XX || SOC_DA8XX
|
2018-03-15 22:11:46 +00:00
|
|
|
select SPL_AM33XX_ENABLE_RTC32K_OSC if AM33XX
|
2018-02-16 15:50:40 +00:00
|
|
|
help
|
|
|
|
A bootcount driver for the RTC IP block found on many TI platforms.
|
|
|
|
This requires the RTC clocks, etc, to be enabled prior to use and
|
|
|
|
not all boards with this IP block on it will have the RTC in use.
|
|
|
|
|
2021-06-11 16:13:48 +00:00
|
|
|
config BOOTCOUNT_AM33XX_NVMEM
|
|
|
|
bool "Boot counter in AM33XX RTC IP block with upgrade_available flag"
|
|
|
|
depends on AM33XX
|
|
|
|
select SPL_AM33XX_ENABLE_RTC32K_OSC if AM33XX
|
|
|
|
help
|
|
|
|
Add support for maintaining bootcount,upgrade_available,
|
|
|
|
version and BOOTMAGIC in a AM33xx RTC IP block
|
|
|
|
scratch register2.
|
|
|
|
|
|
|
|
A bootcount driver for the RTC IP block found on many TI platforms.
|
|
|
|
This requires the RTC clocks, etc, to be enabled prior to use and
|
|
|
|
not all boards with this IP block on it will have the RTC in use.
|
|
|
|
|
|
|
|
If there is upgrade in software then "upgrade_available" is 1,
|
|
|
|
"bootcount" is incremented otherwise "upgrade_available" and
|
|
|
|
"bootcount" is always 0. So the Userspace Application must set
|
|
|
|
the "upgrade_available" and "bootcount" variable to 0, if a boot
|
|
|
|
was successfully.
|
|
|
|
|
2018-02-16 15:50:41 +00:00
|
|
|
config BOOTCOUNT_ENV
|
|
|
|
bool "Boot counter in environment"
|
|
|
|
help
|
|
|
|
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 used. If "upgrade_available" is
|
2022-03-02 15:56:02 +00:00
|
|
|
0, "bootcount" is always 0. If "upgrade_available" is 1,
|
|
|
|
"bootcount" is incremented in the environment.
|
2018-02-16 15:50:41 +00:00
|
|
|
So the Userspace Application must set the "upgrade_available"
|
2022-03-02 15:56:02 +00:00
|
|
|
and "bootcount" variables to 0, if the system booted successfully.
|
2018-02-16 15:50:41 +00:00
|
|
|
|
2018-02-16 15:50:42 +00:00
|
|
|
config BOOTCOUNT_RAM
|
|
|
|
bool "Boot counter in RAM"
|
|
|
|
help
|
2022-03-02 15:56:02 +00:00
|
|
|
Store the bootcount in DRAM protected against bit errors
|
2018-02-16 15:50:42 +00:00
|
|
|
due to short power loss or holding a system in RESET.
|
|
|
|
|
2018-02-16 15:50:43 +00:00
|
|
|
config BOOTCOUNT_I2C
|
|
|
|
bool "Boot counter on I2C device"
|
|
|
|
help
|
|
|
|
Enable support for the bootcounter on an i2c (like RTC) device.
|
2022-11-16 18:10:41 +00:00
|
|
|
CFG_SYS_I2C_RTC_ADDR = i2c chip address
|
2018-02-16 15:50:43 +00:00
|
|
|
CONFIG_SYS_BOOTCOUNT_ADDR = i2c addr which is used for
|
|
|
|
the bootcounter.
|
|
|
|
|
2018-02-16 15:50:45 +00:00
|
|
|
config BOOTCOUNT_AT91
|
|
|
|
bool "Boot counter for Atmel AT91SAM9XE"
|
|
|
|
depends on AT91SAM9XE
|
|
|
|
|
2018-11-27 22:00:18 +00:00
|
|
|
config DM_BOOTCOUNT
|
|
|
|
bool "Boot counter in a device-model device"
|
|
|
|
help
|
|
|
|
Enables reading/writing the bootcount in a device-model based
|
|
|
|
backing store. If an entry in /chosen/u-boot,bootcount-device
|
|
|
|
exists, this will be the preferred bootcount device; otherwise
|
|
|
|
the first available bootcount device will be used.
|
|
|
|
|
2018-02-16 15:50:39 +00:00
|
|
|
endchoice
|
|
|
|
|
2018-11-27 22:00:19 +00:00
|
|
|
if DM_BOOTCOUNT
|
|
|
|
|
|
|
|
menu "Backing stores for device-model backed bootcount"
|
|
|
|
config DM_BOOTCOUNT_RTC
|
|
|
|
bool "Support RTC devices as a backing store for bootcount"
|
|
|
|
depends on DM_RTC
|
|
|
|
help
|
|
|
|
Enabled reading/writing the bootcount in a DM RTC device.
|
|
|
|
The wrapper device is to be specified with the compatible string
|
|
|
|
'u-boot,bootcount-rtc' and the 'rtc'-property (a phandle pointing
|
|
|
|
to the underlying RTC device) and an optional 'offset' property
|
|
|
|
are supported.
|
|
|
|
|
|
|
|
Accesses to the backing store are performed using the write16
|
|
|
|
and read16 ops of DM RTC devices.
|
|
|
|
|
2019-10-28 18:44:06 +00:00
|
|
|
config DM_BOOTCOUNT_I2C_EEPROM
|
|
|
|
bool "Support i2c eeprom devices as a backing store for bootcount"
|
|
|
|
depends on I2C_EEPROM
|
|
|
|
help
|
|
|
|
Enabled reading/writing the bootcount in a DM i2c eeprom device.
|
|
|
|
The wrapper device is to be specified with the compatible string
|
|
|
|
'u-boot,bootcount-i2c-eeprom' and the 'i2c-eeprom'-property (a phandle
|
|
|
|
pointing to the underlying i2c eeprom device) and an optional 'offset'
|
|
|
|
property are supported.
|
|
|
|
|
2022-03-18 11:04:38 +00:00
|
|
|
config DM_BOOTCOUNT_PMIC_PFUZE100
|
|
|
|
bool "Enable Bootcount driver for PMIC PFUZE100"
|
|
|
|
depends on DM_PMIC_PFUZE100
|
|
|
|
help
|
|
|
|
Enable support for the bootcounter using PMIC PFUZE100 registers.
|
2022-09-19 08:11:00 +00:00
|
|
|
This works only, if the PMIC is not connected to a battery.
|
2022-03-18 11:04:38 +00:00
|
|
|
|
2020-09-02 17:31:38 +00:00
|
|
|
config DM_BOOTCOUNT_SPI_FLASH
|
|
|
|
bool "Support SPI flash devices as a backing store for bootcount"
|
|
|
|
depends on DM_SPI_FLASH
|
|
|
|
help
|
|
|
|
Enabled reading/writing the bootcount in a DM SPI flash device.
|
|
|
|
The wrapper device is to be specified with the compatible string
|
|
|
|
'u-boot,bootcount-spi-flash' and the 'spi-flash'-property (a phandle
|
|
|
|
pointing to the underlying SPI flash device) and an optional 'offset'
|
|
|
|
property are supported.
|
|
|
|
|
2020-03-02 14:43:59 +00:00
|
|
|
config BOOTCOUNT_MEM
|
|
|
|
bool "Support memory based bootcounter"
|
|
|
|
help
|
|
|
|
Enabling Memory based bootcount, typically in a SoC register which
|
|
|
|
is not cleared on softreset.
|
|
|
|
compatible = "u-boot,bootcount";
|
|
|
|
|
2021-06-10 12:40:38 +00:00
|
|
|
config DM_BOOTCOUNT_SYSCON
|
|
|
|
bool "Support SYSCON devices as a backing store for bootcount"
|
|
|
|
select REGMAP
|
|
|
|
select SYSCON
|
|
|
|
help
|
|
|
|
Enable reading/writing the bootcount value in a DM SYSCON device.
|
|
|
|
The driver supports a fixed 32 bits size register using the native
|
|
|
|
endianness. However, this can be controlled from the SYSCON DT node
|
|
|
|
configuration.
|
|
|
|
|
|
|
|
Accessing the backend is done using the regmap interface.
|
|
|
|
|
2018-11-27 22:00:19 +00:00
|
|
|
endmenu
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
2018-07-21 20:25:32 +00:00
|
|
|
config BOOTCOUNT_BOOTLIMIT
|
|
|
|
int "Maximum number of reboot cycles allowed"
|
|
|
|
default 0
|
|
|
|
help
|
|
|
|
Set the Maximum number of reboot cycles allowed without the boot
|
|
|
|
counter being cleared.
|
2022-03-02 15:56:02 +00:00
|
|
|
If set to 0, do not set a boot limit in the environment.
|
2018-07-21 20:25:32 +00:00
|
|
|
|
2018-02-16 15:50:47 +00:00
|
|
|
config BOOTCOUNT_ALEN
|
|
|
|
int "I2C address length"
|
|
|
|
default 1
|
|
|
|
depends on BOOTCOUNT_I2C
|
|
|
|
help
|
|
|
|
Length of the the I2C address at SYS_BOOTCOUNT_ADDR for storing
|
|
|
|
the boot counter.
|
|
|
|
|
2018-02-16 15:50:39 +00:00
|
|
|
config SYS_BOOTCOUNT_SINGLEWORD
|
|
|
|
bool "Use single word to pack boot count and magic value"
|
2018-02-16 15:50:46 +00:00
|
|
|
depends on BOOTCOUNT_GENERIC
|
2018-02-16 15:50:39 +00:00
|
|
|
help
|
|
|
|
This option enables packing boot count magic value and boot count
|
|
|
|
into single word (32 bits).
|
2017-11-08 15:35:13 +00:00
|
|
|
|
|
|
|
config SYS_BOOTCOUNT_EXT_INTERFACE
|
|
|
|
string "Interface on which to find boot counter EXT filesystem"
|
|
|
|
default "mmc"
|
|
|
|
depends on BOOTCOUNT_EXT
|
|
|
|
help
|
|
|
|
Set the interface to use when locating the filesystem to use for the
|
|
|
|
boot counter.
|
|
|
|
|
|
|
|
config SYS_BOOTCOUNT_EXT_DEVPART
|
|
|
|
string "Partition of the boot counter EXT filesystem"
|
|
|
|
default "0:1"
|
|
|
|
depends on BOOTCOUNT_EXT
|
|
|
|
help
|
|
|
|
Set the partition to use when locating the filesystem to use for the
|
|
|
|
boot counter.
|
|
|
|
|
|
|
|
config SYS_BOOTCOUNT_EXT_NAME
|
|
|
|
string "Path and filename of the EXT filesystem based boot counter"
|
|
|
|
default "/boot/failures"
|
|
|
|
depends on BOOTCOUNT_EXT
|
|
|
|
help
|
|
|
|
Set the filename and path of the file used to store the boot counter.
|
|
|
|
|
|
|
|
config SYS_BOOTCOUNT_ADDR
|
|
|
|
hex "RAM address used for reading and writing the boot counter"
|
2021-06-11 16:13:48 +00:00
|
|
|
default 0x44E3E000 if BOOTCOUNT_AM33XX || BOOTCOUNT_AM33XX_NVMEM
|
2018-02-24 21:50:41 +00:00
|
|
|
default 0xE0115FF8 if ARCH_LS1043A || ARCH_LS1021A
|
|
|
|
depends on BOOTCOUNT_AM33XX || BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
|
2021-06-11 16:13:48 +00:00
|
|
|
BOOTCOUNT_I2C || BOOTCOUNT_AM33XX_NVMEM
|
2017-11-08 15:35:13 +00:00
|
|
|
help
|
|
|
|
Set the address used for reading and writing the boot counter.
|
|
|
|
|
2018-10-10 22:13:54 +00:00
|
|
|
config SYS_BOOTCOUNT_MAGIC
|
|
|
|
hex "Magic value for the boot counter"
|
2021-06-11 16:13:48 +00:00
|
|
|
default 0xB001C041 if BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
|
|
|
|
BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \
|
|
|
|
BOOTCOUNT_RAM || BOOTCOUNT_I2C || \
|
|
|
|
BOOTCOUNT_AT91 || DM_BOOTCOUNT
|
|
|
|
default 0xB0 if BOOTCOUNT_AM33XX_NVMEM
|
|
|
|
depends on BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
|
|
|
|
BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \
|
|
|
|
BOOTCOUNT_RAM || BOOTCOUNT_I2C || \
|
|
|
|
BOOTCOUNT_AT91 || DM_BOOTCOUNT || \
|
|
|
|
BOOTCOUNT_AM33XX_NVMEM
|
2018-10-10 22:13:54 +00:00
|
|
|
help
|
|
|
|
Set the magic value used for the boot counter.
|
|
|
|
|
2022-06-25 15:02:49 +00:00
|
|
|
choice
|
|
|
|
prompt "Endianness of bootcount accessors"
|
|
|
|
default SYS_BOOTCOUNT_LE
|
|
|
|
|
|
|
|
config SYS_BOOTCOUNT_LE
|
|
|
|
bool "Little endian accessors"
|
|
|
|
|
|
|
|
config SYS_BOOTCOUNT_BE
|
|
|
|
bool "Big endian accessors"
|
|
|
|
|
|
|
|
endchoice
|
2017-11-08 15:35:13 +00:00
|
|
|
endif
|