blob: fa6d8e71281add74e979c2b39a9328c86e871cd5 [file] [log] [blame]
Ian Ray542a48e2017-11-08 15:35:13 +00001#
2# Boot count configuration
3#
4
Alex Kiernanaa0abed2018-02-16 15:50:39 +00005menuconfig BOOTCOUNT_LIMIT
Lukasz Majewski6dd8c902018-02-09 23:50:57 +01006 bool "Enable support for checking boot count limit"
7 help
8 Enable checking for exceeding the boot count limit.
Tom Rini14e9a3a2024-08-26 10:49:56 -06009 More information: https://docs.u-boot.org/en/latest/api/bootcount.html
Lukasz Majewski6dd8c902018-02-09 23:50:57 +010010
Alex Kiernan4aa943f2018-02-16 15:50:38 +000011if BOOTCOUNT_LIMIT
Ian Ray542a48e2017-11-08 15:35:13 +000012
Alex Kiernanaa0abed2018-02-16 15:50:39 +000013choice
14 prompt "Boot count device"
Alex Kiernan88456352018-02-16 15:50:40 +000015 default BOOTCOUNT_AM33XX if AM33XX || SOC_DA8XX
Alex Kiernan4a80f1d2018-02-16 15:50:46 +000016 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.
Alex Kiernanaa0abed2018-02-16 15:50:39 +000026
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +020027config BOOTCOUNT_FS
28 bool "Boot counter on a filesystem"
Ian Ray542a48e2017-11-08 15:35:13 +000029 help
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +020030 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 Rinib8fa4402024-07-16 12:46:39 -060032 that will be used by the partition that you configure this feature
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +020033 for.
Ian Ray542a48e2017-11-08 15:35:13 +000034
Alex Kiernan88456352018-02-16 15:50:40 +000035config BOOTCOUNT_AM33XX
36 bool "Boot counter in AM33XX RTC IP block"
37 depends on AM33XX || SOC_DA8XX
Alex Kiernan10238ef2018-03-15 22:11:46 +000038 select SPL_AM33XX_ENABLE_RTC32K_OSC if AM33XX
Alex Kiernan88456352018-02-16 15:50:40 +000039 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 Hiremathc900eb12021-06-11 16:13:48 +000044config 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 Kiernanc5037a82018-02-16 15:50:41 +000063config 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 Opdenacker0ed5c7a2022-03-02 16:56:02 +010070 0, "bootcount" is always 0. If "upgrade_available" is 1,
71 "bootcount" is incremented in the environment.
Alex Kiernanc5037a82018-02-16 15:50:41 +000072 So the Userspace Application must set the "upgrade_available"
Michael Opdenacker0ed5c7a2022-03-02 16:56:02 +010073 and "bootcount" variables to 0, if the system booted successfully.
Alex Kiernanc5037a82018-02-16 15:50:41 +000074
Alex Kiernan2a694292018-02-16 15:50:42 +000075config BOOTCOUNT_RAM
76 bool "Boot counter in RAM"
77 help
Michael Opdenacker0ed5c7a2022-03-02 16:56:02 +010078 Store the bootcount in DRAM protected against bit errors
Alex Kiernan2a694292018-02-16 15:50:42 +000079 due to short power loss or holding a system in RESET.
80
Alex Kiernan48bfd652018-02-16 15:50:45 +000081config BOOTCOUNT_AT91
82 bool "Boot counter for Atmel AT91SAM9XE"
83 depends on AT91SAM9XE
84
Philipp Tomsichce860312018-11-27 23:00:18 +010085config 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 Kiernanaa0abed2018-02-16 15:50:39 +000093endchoice
94
Philipp Tomsich57be8822018-11-27 23:00:19 +010095if 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
Philip Richard Oberfichtnerf451e802023-10-31 08:38:48 +0100111config 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 Becketta8c32b52019-10-28 18:44:06 +0000121config 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 Oberfichtner7503e272022-03-18 12:04:38 +0100131config 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 Oberfichtner33e48bf2022-09-19 10:11:00 +0200136 This works only, if the PMIC is not connected to a battery.
Philip Oberfichtner7503e272022-03-18 12:04:38 +0100137
Sebastian Reichel40e77512020-09-02 19:31:38 +0200138config 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 Schochere2981922020-03-02 15:43:59 +0100148config 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 Han88895812021-06-10 15:40:38 +0300155config 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 Tomsich57be8822018-11-27 23:00:19 +0100167endmenu
168
169endif
170
Alex Kiernancf9888f2018-07-21 20:25:32 +0000171config 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 Opdenacker0ed5c7a2022-03-02 16:56:02 +0100177 If set to 0, do not set a boot limit in the environment.
Alex Kiernancf9888f2018-07-21 20:25:32 +0000178
Alex Kiernanaa0abed2018-02-16 15:50:39 +0000179config SYS_BOOTCOUNT_SINGLEWORD
180 bool "Use single word to pack boot count and magic value"
Alex Kiernan4a80f1d2018-02-16 15:50:46 +0000181 depends on BOOTCOUNT_GENERIC
Alex Kiernanaa0abed2018-02-16 15:50:39 +0000182 help
183 This option enables packing boot count magic value and boot count
184 into single word (32 bits).
Ian Ray542a48e2017-11-08 15:35:13 +0000185
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +0200186config SYS_BOOTCOUNT_FS_INTERFACE
187 string "Interface on which to find boot counter filesystem"
Ian Ray542a48e2017-11-08 15:35:13 +0000188 default "mmc"
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +0200189 depends on BOOTCOUNT_FS
Ian Ray542a48e2017-11-08 15:35:13 +0000190 help
191 Set the interface to use when locating the filesystem to use for the
192 boot counter.
193
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +0200194config SYS_BOOTCOUNT_FS_DEVPART
195 string "Partition of the boot counter filesystem"
Ian Ray542a48e2017-11-08 15:35:13 +0000196 default "0:1"
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +0200197 depends on BOOTCOUNT_FS
Ian Ray542a48e2017-11-08 15:35:13 +0000198 help
199 Set the partition to use when locating the filesystem to use for the
200 boot counter.
201
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +0200202config SYS_BOOTCOUNT_FS_NAME
203 string "Path and filename of the FS filesystem based boot counter"
Ian Ray542a48e2017-11-08 15:35:13 +0000204 default "/boot/failures"
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +0200205 depends on BOOTCOUNT_FS
Ian Ray542a48e2017-11-08 15:35:13 +0000206 help
207 Set the filename and path of the file used to store the boot counter.
208
209config SYS_BOOTCOUNT_ADDR
210 hex "RAM address used for reading and writing the boot counter"
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000211 default 0x44E3E000 if BOOTCOUNT_AM33XX || BOOTCOUNT_AM33XX_NVMEM
Tom Rinic98ed5f2018-02-24 16:50:41 -0500212 default 0xE0115FF8 if ARCH_LS1043A || ARCH_LS1021A
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +0200213 depends on BOOTCOUNT_AM33XX || BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \
Philip Richard Oberfichtnerf3b55f12023-10-31 08:38:44 +0100214 BOOTCOUNT_AM33XX_NVMEM
Ian Ray542a48e2017-11-08 15:35:13 +0000215 help
216 Set the address used for reading and writing the boot counter.
217
Marek Vasut6ae0ded2018-10-11 00:13:54 +0200218config SYS_BOOTCOUNT_MAGIC
219 hex "Magic value for the boot counter"
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +0200220 default 0xB001C041 if BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000221 BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \
Philip Richard Oberfichtnerf3b55f12023-10-31 08:38:44 +0100222 BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000223 default 0xB0 if BOOTCOUNT_AM33XX_NVMEM
Vasileios Amoiridis604e30d2024-06-28 19:35:41 +0200224 depends on BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000225 BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \
Philip Richard Oberfichtnerf3b55f12023-10-31 08:38:44 +0100226 BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT || \
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000227 BOOTCOUNT_AM33XX_NVMEM
Marek Vasut6ae0ded2018-10-11 00:13:54 +0200228 help
229 Set the magic value used for the boot counter.
230
Tom Rini5f4f84e2022-06-25 11:02:49 -0400231choice
232 prompt "Endianness of bootcount accessors"
233 default SYS_BOOTCOUNT_LE
234
235config SYS_BOOTCOUNT_LE
236 bool "Little endian accessors"
237
238config SYS_BOOTCOUNT_BE
239 bool "Big endian accessors"
240
241endchoice
Ian Ray542a48e2017-11-08 15:35:13 +0000242endif