blob: 3c56253b1eaa2113a9139d424912e34576ebc169 [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.
9 More information: http://www.denx.de/wiki/DULG/UBootBootCountLimit
10
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 Kiernan48bfd652018-02-16 15:50:45 +000016 default BOOTCOUNT_AT91 if AT91SAM9XE
Alex Kiernan4a80f1d2018-02-16 15:50:46 +000017 default BOOTCOUNT_GENERIC
18
19config BOOTCOUNT_GENERIC
20 bool "Generic default boot counter"
21 help
22 Generic bootcount stored at SYS_BOOTCOUNT_ADDR.
23
24 SYS_BOOTCOUNT_ADDR:
25 Set to the address where the bootcount and bootcount magic
26 will be stored.
Alex Kiernanaa0abed2018-02-16 15:50:39 +000027
Ian Ray542a48e2017-11-08 15:35:13 +000028config BOOTCOUNT_EXT
29 bool "Boot counter on EXT filesystem"
Frédéric Danis884bc8a2020-05-20 09:13:26 +020030 depends on FS_EXT4
31 select EXT4_WRITE
Ian Ray542a48e2017-11-08 15:35:13 +000032 help
33 Add support for maintaining boot count in a file on an EXT
34 filesystem.
35
Alex Kiernan88456352018-02-16 15:50:40 +000036config BOOTCOUNT_AM33XX
37 bool "Boot counter in AM33XX RTC IP block"
38 depends on AM33XX || SOC_DA8XX
Alex Kiernan10238ef2018-03-15 22:11:46 +000039 select SPL_AM33XX_ENABLE_RTC32K_OSC if AM33XX
Alex Kiernan88456352018-02-16 15:50:40 +000040 help
41 A bootcount driver for the RTC IP block found on many TI platforms.
42 This requires the RTC clocks, etc, to be enabled prior to use and
43 not all boards with this IP block on it will have the RTC in use.
44
Gireesh Hiremathc900eb12021-06-11 16:13:48 +000045config BOOTCOUNT_AM33XX_NVMEM
46 bool "Boot counter in AM33XX RTC IP block with upgrade_available flag"
47 depends on AM33XX
48 select SPL_AM33XX_ENABLE_RTC32K_OSC if AM33XX
49 help
50 Add support for maintaining bootcount,upgrade_available,
51 version and BOOTMAGIC in a AM33xx RTC IP block
52 scratch register2.
53
54 A bootcount driver for the RTC IP block found on many TI platforms.
55 This requires the RTC clocks, etc, to be enabled prior to use and
56 not all boards with this IP block on it will have the RTC in use.
57
58 If there is upgrade in software then "upgrade_available" is 1,
59 "bootcount" is incremented otherwise "upgrade_available" and
60 "bootcount" is always 0. So the Userspace Application must set
61 the "upgrade_available" and "bootcount" variable to 0, if a boot
62 was successfully.
63
Alex Kiernanc5037a82018-02-16 15:50:41 +000064config BOOTCOUNT_ENV
65 bool "Boot counter in environment"
66 help
67 If no softreset save registers are found on the hardware
68 "bootcount" is stored in the environment. To prevent a
69 saveenv on all reboots, the environment variable
70 "upgrade_available" is used. If "upgrade_available" is
Michael Opdenacker0ed5c7a2022-03-02 16:56:02 +010071 0, "bootcount" is always 0. If "upgrade_available" is 1,
72 "bootcount" is incremented in the environment.
Alex Kiernanc5037a82018-02-16 15:50:41 +000073 So the Userspace Application must set the "upgrade_available"
Michael Opdenacker0ed5c7a2022-03-02 16:56:02 +010074 and "bootcount" variables to 0, if the system booted successfully.
Alex Kiernanc5037a82018-02-16 15:50:41 +000075
Alex Kiernan2a694292018-02-16 15:50:42 +000076config BOOTCOUNT_RAM
77 bool "Boot counter in RAM"
78 help
Michael Opdenacker0ed5c7a2022-03-02 16:56:02 +010079 Store the bootcount in DRAM protected against bit errors
Alex Kiernan2a694292018-02-16 15:50:42 +000080 due to short power loss or holding a system in RESET.
81
Alex Kiernan48bfd652018-02-16 15:50:45 +000082config BOOTCOUNT_AT91
83 bool "Boot counter for Atmel AT91SAM9XE"
84 depends on AT91SAM9XE
85
Philipp Tomsichce860312018-11-27 23:00:18 +010086config DM_BOOTCOUNT
87 bool "Boot counter in a device-model device"
88 help
89 Enables reading/writing the bootcount in a device-model based
90 backing store. If an entry in /chosen/u-boot,bootcount-device
91 exists, this will be the preferred bootcount device; otherwise
92 the first available bootcount device will be used.
93
Alex Kiernanaa0abed2018-02-16 15:50:39 +000094endchoice
95
Philipp Tomsich57be8822018-11-27 23:00:19 +010096if DM_BOOTCOUNT
97
98menu "Backing stores for device-model backed bootcount"
99config DM_BOOTCOUNT_RTC
100 bool "Support RTC devices as a backing store for bootcount"
101 depends on DM_RTC
102 help
103 Enabled reading/writing the bootcount in a DM RTC device.
104 The wrapper device is to be specified with the compatible string
105 'u-boot,bootcount-rtc' and the 'rtc'-property (a phandle pointing
106 to the underlying RTC device) and an optional 'offset' property
107 are supported.
108
109 Accesses to the backing store are performed using the write16
110 and read16 ops of DM RTC devices.
111
Philip Richard Oberfichtnerf451e802023-10-31 08:38:48 +0100112config DM_BOOTCOUNT_I2C
113 bool "Driver Model boot counter on I2C device"
114 depends on DM_I2C
115 help
116 Enable support for the bootcounter on a generic i2c device, like a RTC
117 or PMIC. The bootcounter is configured in the device tree using the
118 "u-boot,bootcount-i2c" compatible string. It requires a phandle
119 'i2cbcdev' for the i2c device and an 'offset' property used within the
120 device.
121
Robert Becketta8c32b52019-10-28 18:44:06 +0000122config DM_BOOTCOUNT_I2C_EEPROM
123 bool "Support i2c eeprom devices as a backing store for bootcount"
124 depends on I2C_EEPROM
125 help
126 Enabled reading/writing the bootcount in a DM i2c eeprom device.
127 The wrapper device is to be specified with the compatible string
128 'u-boot,bootcount-i2c-eeprom' and the 'i2c-eeprom'-property (a phandle
129 pointing to the underlying i2c eeprom device) and an optional 'offset'
130 property are supported.
131
Philip Oberfichtner7503e272022-03-18 12:04:38 +0100132config DM_BOOTCOUNT_PMIC_PFUZE100
133 bool "Enable Bootcount driver for PMIC PFUZE100"
134 depends on DM_PMIC_PFUZE100
135 help
136 Enable support for the bootcounter using PMIC PFUZE100 registers.
Philip Oberfichtner33e48bf2022-09-19 10:11:00 +0200137 This works only, if the PMIC is not connected to a battery.
Philip Oberfichtner7503e272022-03-18 12:04:38 +0100138
Sebastian Reichel40e77512020-09-02 19:31:38 +0200139config DM_BOOTCOUNT_SPI_FLASH
140 bool "Support SPI flash devices as a backing store for bootcount"
141 depends on DM_SPI_FLASH
142 help
143 Enabled reading/writing the bootcount in a DM SPI flash device.
144 The wrapper device is to be specified with the compatible string
145 'u-boot,bootcount-spi-flash' and the 'spi-flash'-property (a phandle
146 pointing to the underlying SPI flash device) and an optional 'offset'
147 property are supported.
148
Heiko Schochere2981922020-03-02 15:43:59 +0100149config BOOTCOUNT_MEM
150 bool "Support memory based bootcounter"
151 help
152 Enabling Memory based bootcount, typically in a SoC register which
153 is not cleared on softreset.
154 compatible = "u-boot,bootcount";
155
Nandor Han88895812021-06-10 15:40:38 +0300156config DM_BOOTCOUNT_SYSCON
157 bool "Support SYSCON devices as a backing store for bootcount"
158 select REGMAP
159 select SYSCON
160 help
161 Enable reading/writing the bootcount value in a DM SYSCON device.
162 The driver supports a fixed 32 bits size register using the native
163 endianness. However, this can be controlled from the SYSCON DT node
164 configuration.
165
166 Accessing the backend is done using the regmap interface.
167
Philipp Tomsich57be8822018-11-27 23:00:19 +0100168endmenu
169
170endif
171
Alex Kiernancf9888f2018-07-21 20:25:32 +0000172config BOOTCOUNT_BOOTLIMIT
173 int "Maximum number of reboot cycles allowed"
174 default 0
175 help
176 Set the Maximum number of reboot cycles allowed without the boot
177 counter being cleared.
Michael Opdenacker0ed5c7a2022-03-02 16:56:02 +0100178 If set to 0, do not set a boot limit in the environment.
Alex Kiernancf9888f2018-07-21 20:25:32 +0000179
Alex Kiernanaa0abed2018-02-16 15:50:39 +0000180config SYS_BOOTCOUNT_SINGLEWORD
181 bool "Use single word to pack boot count and magic value"
Alex Kiernan4a80f1d2018-02-16 15:50:46 +0000182 depends on BOOTCOUNT_GENERIC
Alex Kiernanaa0abed2018-02-16 15:50:39 +0000183 help
184 This option enables packing boot count magic value and boot count
185 into single word (32 bits).
Ian Ray542a48e2017-11-08 15:35:13 +0000186
187config SYS_BOOTCOUNT_EXT_INTERFACE
188 string "Interface on which to find boot counter EXT filesystem"
189 default "mmc"
190 depends on BOOTCOUNT_EXT
191 help
192 Set the interface to use when locating the filesystem to use for the
193 boot counter.
194
195config SYS_BOOTCOUNT_EXT_DEVPART
196 string "Partition of the boot counter EXT filesystem"
197 default "0:1"
198 depends on BOOTCOUNT_EXT
199 help
200 Set the partition to use when locating the filesystem to use for the
201 boot counter.
202
203config SYS_BOOTCOUNT_EXT_NAME
204 string "Path and filename of the EXT filesystem based boot counter"
205 default "/boot/failures"
206 depends on BOOTCOUNT_EXT
207 help
208 Set the filename and path of the file used to store the boot counter.
209
210config SYS_BOOTCOUNT_ADDR
211 hex "RAM address used for reading and writing the boot counter"
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000212 default 0x44E3E000 if BOOTCOUNT_AM33XX || BOOTCOUNT_AM33XX_NVMEM
Tom Rinic98ed5f2018-02-24 16:50:41 -0500213 default 0xE0115FF8 if ARCH_LS1043A || ARCH_LS1021A
214 depends on BOOTCOUNT_AM33XX || BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
Philip Richard Oberfichtnerf3b55f12023-10-31 08:38:44 +0100215 BOOTCOUNT_AM33XX_NVMEM
Ian Ray542a48e2017-11-08 15:35:13 +0000216 help
217 Set the address used for reading and writing the boot counter.
218
Marek Vasut6ae0ded2018-10-11 00:13:54 +0200219config SYS_BOOTCOUNT_MAGIC
220 hex "Magic value for the boot counter"
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000221 default 0xB001C041 if BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
222 BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \
Philip Richard Oberfichtnerf3b55f12023-10-31 08:38:44 +0100223 BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000224 default 0xB0 if BOOTCOUNT_AM33XX_NVMEM
225 depends on BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
226 BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \
Philip Richard Oberfichtnerf3b55f12023-10-31 08:38:44 +0100227 BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT || \
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000228 BOOTCOUNT_AM33XX_NVMEM
Marek Vasut6ae0ded2018-10-11 00:13:54 +0200229 help
230 Set the magic value used for the boot counter.
231
Tom Rini5f4f84e2022-06-25 11:02:49 -0400232choice
233 prompt "Endianness of bootcount accessors"
234 default SYS_BOOTCOUNT_LE
235
236config SYS_BOOTCOUNT_LE
237 bool "Little endian accessors"
238
239config SYS_BOOTCOUNT_BE
240 bool "Big endian accessors"
241
242endchoice
Ian Ray542a48e2017-11-08 15:35:13 +0000243endif