Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 1 | # |
| 2 | # Boot count configuration |
| 3 | # |
| 4 | |
Alex Kiernan | aa0abed | 2018-02-16 15:50:39 +0000 | [diff] [blame] | 5 | menuconfig BOOTCOUNT_LIMIT |
Lukasz Majewski | 6dd8c90 | 2018-02-09 23:50:57 +0100 | [diff] [blame] | 6 | bool "Enable support for checking boot count limit" |
| 7 | help |
| 8 | Enable checking for exceeding the boot count limit. |
Tom Rini | 14e9a3a | 2024-08-26 10:49:56 -0600 | [diff] [blame] | 9 | More information: https://docs.u-boot.org/en/latest/api/bootcount.html |
Lukasz Majewski | 6dd8c90 | 2018-02-09 23:50:57 +0100 | [diff] [blame] | 10 | |
Alex Kiernan | 4aa943f | 2018-02-16 15:50:38 +0000 | [diff] [blame] | 11 | if BOOTCOUNT_LIMIT |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 12 | |
Alex Kiernan | aa0abed | 2018-02-16 15:50:39 +0000 | [diff] [blame] | 13 | choice |
| 14 | prompt "Boot count device" |
Alex Kiernan | 8845635 | 2018-02-16 15:50:40 +0000 | [diff] [blame] | 15 | default BOOTCOUNT_AM33XX if AM33XX || SOC_DA8XX |
Alex Kiernan | 4a80f1d | 2018-02-16 15:50:46 +0000 | [diff] [blame] | 16 | default BOOTCOUNT_GENERIC |
| 17 | |
| 18 | config 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. |
Alex Kiernan | aa0abed | 2018-02-16 15:50:39 +0000 | [diff] [blame] | 26 | |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 27 | config BOOTCOUNT_FS |
| 28 | bool "Boot counter on a filesystem" |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 29 | help |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 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 |
Tom Rini | b8fa440 | 2024-07-16 12:46:39 -0600 | [diff] [blame] | 32 | that will be used by the partition that you configure this feature |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 33 | for. |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 34 | |
Alex Kiernan | 8845635 | 2018-02-16 15:50:40 +0000 | [diff] [blame] | 35 | config BOOTCOUNT_AM33XX |
| 36 | bool "Boot counter in AM33XX RTC IP block" |
| 37 | depends on AM33XX || SOC_DA8XX |
Alex Kiernan | 10238ef | 2018-03-15 22:11:46 +0000 | [diff] [blame] | 38 | select SPL_AM33XX_ENABLE_RTC32K_OSC if AM33XX |
Alex Kiernan | 8845635 | 2018-02-16 15:50:40 +0000 | [diff] [blame] | 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 | |
Gireesh Hiremath | c900eb1 | 2021-06-11 16:13:48 +0000 | [diff] [blame] | 44 | config 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 | |
Alex Kiernan | c5037a8 | 2018-02-16 15:50:41 +0000 | [diff] [blame] | 63 | config 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 |
Michael Opdenacker | 0ed5c7a | 2022-03-02 16:56:02 +0100 | [diff] [blame] | 70 | 0, "bootcount" is always 0. If "upgrade_available" is 1, |
| 71 | "bootcount" is incremented in the environment. |
Alex Kiernan | c5037a8 | 2018-02-16 15:50:41 +0000 | [diff] [blame] | 72 | So the Userspace Application must set the "upgrade_available" |
Michael Opdenacker | 0ed5c7a | 2022-03-02 16:56:02 +0100 | [diff] [blame] | 73 | and "bootcount" variables to 0, if the system booted successfully. |
Alex Kiernan | c5037a8 | 2018-02-16 15:50:41 +0000 | [diff] [blame] | 74 | |
Alex Kiernan | 2a69429 | 2018-02-16 15:50:42 +0000 | [diff] [blame] | 75 | config BOOTCOUNT_RAM |
| 76 | bool "Boot counter in RAM" |
| 77 | help |
Michael Opdenacker | 0ed5c7a | 2022-03-02 16:56:02 +0100 | [diff] [blame] | 78 | Store the bootcount in DRAM protected against bit errors |
Alex Kiernan | 2a69429 | 2018-02-16 15:50:42 +0000 | [diff] [blame] | 79 | due to short power loss or holding a system in RESET. |
| 80 | |
Alex Kiernan | 48bfd65 | 2018-02-16 15:50:45 +0000 | [diff] [blame] | 81 | config BOOTCOUNT_AT91 |
| 82 | bool "Boot counter for Atmel AT91SAM9XE" |
| 83 | depends on AT91SAM9XE |
| 84 | |
Philipp Tomsich | ce86031 | 2018-11-27 23:00:18 +0100 | [diff] [blame] | 85 | config 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 | |
Alex Kiernan | aa0abed | 2018-02-16 15:50:39 +0000 | [diff] [blame] | 93 | endchoice |
| 94 | |
Philipp Tomsich | 57be882 | 2018-11-27 23:00:19 +0100 | [diff] [blame] | 95 | if DM_BOOTCOUNT |
| 96 | |
| 97 | menu "Backing stores for device-model backed bootcount" |
| 98 | config 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 | |
Philip Richard Oberfichtner | f451e80 | 2023-10-31 08:38:48 +0100 | [diff] [blame] | 111 | config 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 | |
Robert Beckett | a8c32b5 | 2019-10-28 18:44:06 +0000 | [diff] [blame] | 121 | config 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 | |
Philip Oberfichtner | 7503e27 | 2022-03-18 12:04:38 +0100 | [diff] [blame] | 131 | config 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. |
Philip Oberfichtner | 33e48bf | 2022-09-19 10:11:00 +0200 | [diff] [blame] | 136 | This works only, if the PMIC is not connected to a battery. |
Philip Oberfichtner | 7503e27 | 2022-03-18 12:04:38 +0100 | [diff] [blame] | 137 | |
Sebastian Reichel | 40e7751 | 2020-09-02 19:31:38 +0200 | [diff] [blame] | 138 | config 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 | |
Heiko Schocher | e298192 | 2020-03-02 15:43:59 +0100 | [diff] [blame] | 148 | config 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 | |
Nandor Han | 8889581 | 2021-06-10 15:40:38 +0300 | [diff] [blame] | 155 | config 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 | |
Philipp Tomsich | 57be882 | 2018-11-27 23:00:19 +0100 | [diff] [blame] | 167 | endmenu |
| 168 | |
| 169 | endif |
| 170 | |
Alex Kiernan | cf9888f | 2018-07-21 20:25:32 +0000 | [diff] [blame] | 171 | config BOOTCOUNT_BOOTLIMIT |
| 172 | int "Maximum number of reboot cycles allowed" |
| 173 | default 0 |
| 174 | help |
| 175 | Set the Maximum number of reboot cycles allowed without the boot |
| 176 | counter being cleared. |
Michael Opdenacker | 0ed5c7a | 2022-03-02 16:56:02 +0100 | [diff] [blame] | 177 | If set to 0, do not set a boot limit in the environment. |
Alex Kiernan | cf9888f | 2018-07-21 20:25:32 +0000 | [diff] [blame] | 178 | |
Alex Kiernan | aa0abed | 2018-02-16 15:50:39 +0000 | [diff] [blame] | 179 | config SYS_BOOTCOUNT_SINGLEWORD |
| 180 | bool "Use single word to pack boot count and magic value" |
Alex Kiernan | 4a80f1d | 2018-02-16 15:50:46 +0000 | [diff] [blame] | 181 | depends on BOOTCOUNT_GENERIC |
Alex Kiernan | aa0abed | 2018-02-16 15:50:39 +0000 | [diff] [blame] | 182 | help |
| 183 | This option enables packing boot count magic value and boot count |
| 184 | into single word (32 bits). |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 185 | |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 186 | config SYS_BOOTCOUNT_FS_INTERFACE |
| 187 | string "Interface on which to find boot counter filesystem" |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 188 | default "mmc" |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 189 | depends on BOOTCOUNT_FS |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 190 | help |
| 191 | Set the interface to use when locating the filesystem to use for the |
| 192 | boot counter. |
| 193 | |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 194 | config SYS_BOOTCOUNT_FS_DEVPART |
| 195 | string "Partition of the boot counter filesystem" |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 196 | default "0:1" |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 197 | depends on BOOTCOUNT_FS |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 198 | help |
| 199 | Set the partition to use when locating the filesystem to use for the |
| 200 | boot counter. |
| 201 | |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 202 | config SYS_BOOTCOUNT_FS_NAME |
| 203 | string "Path and filename of the FS filesystem based boot counter" |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 204 | default "/boot/failures" |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 205 | depends on BOOTCOUNT_FS |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 206 | help |
| 207 | Set the filename and path of the file used to store the boot counter. |
| 208 | |
| 209 | config SYS_BOOTCOUNT_ADDR |
| 210 | hex "RAM address used for reading and writing the boot counter" |
Gireesh Hiremath | c900eb1 | 2021-06-11 16:13:48 +0000 | [diff] [blame] | 211 | default 0x44E3E000 if BOOTCOUNT_AM33XX || BOOTCOUNT_AM33XX_NVMEM |
Tom Rini | c98ed5f | 2018-02-24 16:50:41 -0500 | [diff] [blame] | 212 | default 0xE0115FF8 if ARCH_LS1043A || ARCH_LS1021A |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 213 | depends on BOOTCOUNT_AM33XX || BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \ |
Philip Richard Oberfichtner | f3b55f1 | 2023-10-31 08:38:44 +0100 | [diff] [blame] | 214 | BOOTCOUNT_AM33XX_NVMEM |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 215 | help |
| 216 | Set the address used for reading and writing the boot counter. |
| 217 | |
Marek Vasut | 6ae0ded | 2018-10-11 00:13:54 +0200 | [diff] [blame] | 218 | config SYS_BOOTCOUNT_MAGIC |
| 219 | hex "Magic value for the boot counter" |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 220 | default 0xB001C041 if BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \ |
Gireesh Hiremath | c900eb1 | 2021-06-11 16:13:48 +0000 | [diff] [blame] | 221 | BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \ |
Philip Richard Oberfichtner | f3b55f1 | 2023-10-31 08:38:44 +0100 | [diff] [blame] | 222 | BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT |
Gireesh Hiremath | c900eb1 | 2021-06-11 16:13:48 +0000 | [diff] [blame] | 223 | default 0xB0 if BOOTCOUNT_AM33XX_NVMEM |
Vasileios Amoiridis | 604e30d | 2024-06-28 19:35:41 +0200 | [diff] [blame] | 224 | depends on BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \ |
Gireesh Hiremath | c900eb1 | 2021-06-11 16:13:48 +0000 | [diff] [blame] | 225 | BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \ |
Philip Richard Oberfichtner | f3b55f1 | 2023-10-31 08:38:44 +0100 | [diff] [blame] | 226 | BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT || \ |
Gireesh Hiremath | c900eb1 | 2021-06-11 16:13:48 +0000 | [diff] [blame] | 227 | BOOTCOUNT_AM33XX_NVMEM |
Marek Vasut | 6ae0ded | 2018-10-11 00:13:54 +0200 | [diff] [blame] | 228 | help |
| 229 | Set the magic value used for the boot counter. |
| 230 | |
Tom Rini | 5f4f84e | 2022-06-25 11:02:49 -0400 | [diff] [blame] | 231 | choice |
| 232 | prompt "Endianness of bootcount accessors" |
| 233 | default SYS_BOOTCOUNT_LE |
| 234 | |
| 235 | config SYS_BOOTCOUNT_LE |
| 236 | bool "Little endian accessors" |
| 237 | |
| 238 | config SYS_BOOTCOUNT_BE |
| 239 | bool "Big endian accessors" |
| 240 | |
| 241 | endchoice |
Ian Ray | 542a48e | 2017-11-08 15:35:13 +0000 | [diff] [blame] | 242 | endif |