1# 2# Boot count configuration 3# 4 5menuconfig BOOTCOUNT_LIMIT 6 bool "Enable support for checking boot count limit" 7 help 8 Enable checking for exceeding the boot count limit. 9 More information: https://docs.u-boot.org/en/latest/api/bootcount.html 10 11if BOOTCOUNT_LIMIT 12 13choice 14 prompt "Boot count device" 15 default BOOTCOUNT_AM33XX if AM33XX || SOC_DA8XX 16 default BOOTCOUNT_GENERIC 17 18config BOOTCOUNT_GENERIC 19 bool "Generic default boot counter" 20 help 21 Generic bootcount stored at SYS_BOOTCOUNT_ADDR. 22 23 SYS_BOOTCOUNT_ADDR: 24 Set to the address where the bootcount and bootcount magic 25 will be stored. 26 27config BOOTCOUNT_FS 28 bool "Boot counter on a filesystem" 29 help 30 Add support for maintaining boot count in a file on a filesystem. 31 This requires that you have enabled write support for the filesystem 32 that will be used by the partition that you configure this feature 33 for. 34 35config BOOTCOUNT_AM33XX 36 bool "Boot counter in AM33XX RTC IP block" 37 depends on AM33XX || SOC_DA8XX 38 select SPL_AM33XX_ENABLE_RTC32K_OSC if AM33XX 39 help 40 A bootcount driver for the RTC IP block found on many TI platforms. 41 This requires the RTC clocks, etc, to be enabled prior to use and 42 not all boards with this IP block on it will have the RTC in use. 43 44config BOOTCOUNT_AM33XX_NVMEM 45 bool "Boot counter in AM33XX RTC IP block with upgrade_available flag" 46 depends on AM33XX 47 select SPL_AM33XX_ENABLE_RTC32K_OSC if AM33XX 48 help 49 Add support for maintaining bootcount,upgrade_available, 50 version and BOOTMAGIC in a AM33xx RTC IP block 51 scratch register2. 52 53 A bootcount driver for the RTC IP block found on many TI platforms. 54 This requires the RTC clocks, etc, to be enabled prior to use and 55 not all boards with this IP block on it will have the RTC in use. 56 57 If there is upgrade in software then "upgrade_available" is 1, 58 "bootcount" is incremented otherwise "upgrade_available" and 59 "bootcount" is always 0. So the Userspace Application must set 60 the "upgrade_available" and "bootcount" variable to 0, if a boot 61 was successfully. 62 63config BOOTCOUNT_ENV 64 bool "Boot counter in environment" 65 help 66 If no softreset save registers are found on the hardware 67 "bootcount" is stored in the environment. To prevent a 68 saveenv on all reboots, the environment variable 69 "upgrade_available" is used. If "upgrade_available" is 70 0, "bootcount" is always 0. If "upgrade_available" is 1, 71 "bootcount" is incremented in the environment. 72 So the Userspace Application must set the "upgrade_available" 73 and "bootcount" variables to 0, if the system booted successfully. 74 75config BOOTCOUNT_RAM 76 bool "Boot counter in RAM" 77 help 78 Store the bootcount in DRAM protected against bit errors 79 due to short power loss or holding a system in RESET. 80 81config BOOTCOUNT_AT91 82 bool "Boot counter for Atmel AT91SAM9XE" 83 depends on AT91SAM9XE 84 85config DM_BOOTCOUNT 86 bool "Boot counter in a device-model device" 87 help 88 Enables reading/writing the bootcount in a device-model based 89 backing store. If an entry in /chosen/u-boot,bootcount-device 90 exists, this will be the preferred bootcount device; otherwise 91 the first available bootcount device will be used. 92 93endchoice 94 95if DM_BOOTCOUNT 96 97menu "Backing stores for device-model backed bootcount" 98config DM_BOOTCOUNT_RTC 99 bool "Support RTC devices as a backing store for bootcount" 100 depends on DM_RTC 101 help 102 Enabled reading/writing the bootcount in a DM RTC device. 103 The wrapper device is to be specified with the compatible string 104 'u-boot,bootcount-rtc' and the 'rtc'-property (a phandle pointing 105 to the underlying RTC device) and an optional 'offset' property 106 are supported. 107 108 Accesses to the backing store are performed using the write16 109 and read16 ops of DM RTC devices. 110 111config DM_BOOTCOUNT_I2C 112 bool "Driver Model boot counter on I2C device" 113 depends on DM_I2C 114 help 115 Enable support for the bootcounter on a generic i2c device, like a RTC 116 or PMIC. The bootcounter is configured in the device tree using the 117 "u-boot,bootcount-i2c" compatible string. It requires a phandle 118 'i2cbcdev' for the i2c device and an 'offset' property used within the 119 device. 120 121config DM_BOOTCOUNT_I2C_EEPROM 122 bool "Support i2c eeprom devices as a backing store for bootcount" 123 depends on I2C_EEPROM 124 help 125 Enabled reading/writing the bootcount in a DM i2c eeprom device. 126 The wrapper device is to be specified with the compatible string 127 'u-boot,bootcount-i2c-eeprom' and the 'i2c-eeprom'-property (a phandle 128 pointing to the underlying i2c eeprom device) and an optional 'offset' 129 property are supported. 130 131config DM_BOOTCOUNT_PMIC_PFUZE100 132 bool "Enable Bootcount driver for PMIC PFUZE100" 133 depends on DM_PMIC_PFUZE100 134 help 135 Enable support for the bootcounter using PMIC PFUZE100 registers. 136 This works only, if the PMIC is not connected to a battery. 137 138config DM_BOOTCOUNT_SPI_FLASH 139 bool "Support SPI flash devices as a backing store for bootcount" 140 depends on DM_SPI_FLASH 141 help 142 Enabled reading/writing the bootcount in a DM SPI flash device. 143 The wrapper device is to be specified with the compatible string 144 'u-boot,bootcount-spi-flash' and the 'spi-flash'-property (a phandle 145 pointing to the underlying SPI flash device) and an optional 'offset' 146 property are supported. 147 148config BOOTCOUNT_MEM 149 bool "Support memory based bootcounter" 150 help 151 Enabling Memory based bootcount, typically in a SoC register which 152 is not cleared on softreset. 153 compatible = "u-boot,bootcount"; 154 155config DM_BOOTCOUNT_SYSCON 156 bool "Support SYSCON devices as a backing store for bootcount" 157 select REGMAP 158 select SYSCON 159 help 160 Enable reading/writing the bootcount value in a DM SYSCON device. 161 The driver supports a fixed 32 bits size register using the native 162 endianness. However, this can be controlled from the SYSCON DT node 163 configuration. 164 165 Accessing the backend is done using the regmap interface. 166 167config DM_BOOTCOUNT_ZYNQMP 168 bool "Support ZynqMP PMUFW as a backing store for bootcount" 169 depends on ARCH_ZYNQMP 170 help 171 Enable support for the bootcount API by utilising the Persistent 172 Global General Storage Register 2 of the PMU. 173 174endmenu 175 176endif 177 178config BOOTCOUNT_BOOTLIMIT 179 int "Maximum number of reboot cycles allowed" 180 default 0 181 help 182 Set the Maximum number of reboot cycles allowed without the boot 183 counter being cleared. 184 If set to 0, do not set a boot limit in the environment. 185 186config BOOTCOUNT_ALTBOOTCMD 187 string "Alternative boot command when BOOTLIMIT is reached" 188 189config SYS_BOOTCOUNT_SINGLEWORD 190 bool "Use single word to pack boot count and magic value" 191 depends on BOOTCOUNT_GENERIC 192 help 193 This option enables packing boot count magic value and boot count 194 into single word (32 bits). 195 196config SYS_BOOTCOUNT_FS_INTERFACE 197 string "Interface on which to find boot counter filesystem" 198 default "mmc" 199 depends on BOOTCOUNT_FS 200 help 201 Set the interface to use when locating the filesystem to use for the 202 boot counter. 203 204config SYS_BOOTCOUNT_FS_DEVPART 205 string "Partition of the boot counter filesystem" 206 default "0:1" 207 depends on BOOTCOUNT_FS 208 help 209 Set the partition to use when locating the filesystem to use for the 210 boot counter. 211 212config SYS_BOOTCOUNT_FS_NAME 213 string "Path and filename of the FS filesystem based boot counter" 214 default "/boot/failures" 215 depends on BOOTCOUNT_FS 216 help 217 Set the filename and path of the file used to store the boot counter. 218 219config SYS_BOOTCOUNT_ADDR 220 hex "RAM address used for reading and writing the boot counter" 221 default 0x44E3E000 if BOOTCOUNT_AM33XX || BOOTCOUNT_AM33XX_NVMEM 222 default 0xE0115FF8 if ARCH_LS1043A || ARCH_LS1021A 223 depends on BOOTCOUNT_AM33XX || BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \ 224 BOOTCOUNT_AM33XX_NVMEM 225 help 226 Set the address used for reading and writing the boot counter. 227 228config SYS_BOOTCOUNT_MAGIC 229 hex "Magic value for the boot counter" 230 default 0xB001C041 if BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \ 231 BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \ 232 BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT 233 default 0xB0 if BOOTCOUNT_AM33XX_NVMEM 234 depends on BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \ 235 BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \ 236 BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT || \ 237 BOOTCOUNT_AM33XX_NVMEM 238 help 239 Set the magic value used for the boot counter. 240 241choice 242 prompt "Endianness of bootcount accessors" 243 default SYS_BOOTCOUNT_LE 244 245config SYS_BOOTCOUNT_LE 246 bool "Little endian accessors" 247 248config SYS_BOOTCOUNT_BE 249 bool "Big endian accessors" 250 251endchoice 252endif 253