blob: 7a2548ace21ae3da8b255742227d680711b5fef4 [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
Robert Becketta8c32b52019-10-28 18:44:06 +0000112config DM_BOOTCOUNT_I2C_EEPROM
113 bool "Support i2c eeprom devices as a backing store for bootcount"
114 depends on I2C_EEPROM
115 help
116 Enabled reading/writing the bootcount in a DM i2c eeprom device.
117 The wrapper device is to be specified with the compatible string
118 'u-boot,bootcount-i2c-eeprom' and the 'i2c-eeprom'-property (a phandle
119 pointing to the underlying i2c eeprom device) and an optional 'offset'
120 property are supported.
121
Philip Oberfichtner7503e272022-03-18 12:04:38 +0100122config DM_BOOTCOUNT_PMIC_PFUZE100
123 bool "Enable Bootcount driver for PMIC PFUZE100"
124 depends on DM_PMIC_PFUZE100
125 help
126 Enable support for the bootcounter using PMIC PFUZE100 registers.
Philip Oberfichtner33e48bf2022-09-19 10:11:00 +0200127 This works only, if the PMIC is not connected to a battery.
Philip Oberfichtner7503e272022-03-18 12:04:38 +0100128
Sebastian Reichel40e77512020-09-02 19:31:38 +0200129config DM_BOOTCOUNT_SPI_FLASH
130 bool "Support SPI flash devices as a backing store for bootcount"
131 depends on DM_SPI_FLASH
132 help
133 Enabled reading/writing the bootcount in a DM SPI flash device.
134 The wrapper device is to be specified with the compatible string
135 'u-boot,bootcount-spi-flash' and the 'spi-flash'-property (a phandle
136 pointing to the underlying SPI flash device) and an optional 'offset'
137 property are supported.
138
Heiko Schochere2981922020-03-02 15:43:59 +0100139config BOOTCOUNT_MEM
140 bool "Support memory based bootcounter"
141 help
142 Enabling Memory based bootcount, typically in a SoC register which
143 is not cleared on softreset.
144 compatible = "u-boot,bootcount";
145
Nandor Han88895812021-06-10 15:40:38 +0300146config DM_BOOTCOUNT_SYSCON
147 bool "Support SYSCON devices as a backing store for bootcount"
148 select REGMAP
149 select SYSCON
150 help
151 Enable reading/writing the bootcount value in a DM SYSCON device.
152 The driver supports a fixed 32 bits size register using the native
153 endianness. However, this can be controlled from the SYSCON DT node
154 configuration.
155
156 Accessing the backend is done using the regmap interface.
157
Philipp Tomsich57be8822018-11-27 23:00:19 +0100158endmenu
159
160endif
161
Alex Kiernancf9888f2018-07-21 20:25:32 +0000162config BOOTCOUNT_BOOTLIMIT
163 int "Maximum number of reboot cycles allowed"
164 default 0
165 help
166 Set the Maximum number of reboot cycles allowed without the boot
167 counter being cleared.
Michael Opdenacker0ed5c7a2022-03-02 16:56:02 +0100168 If set to 0, do not set a boot limit in the environment.
Alex Kiernancf9888f2018-07-21 20:25:32 +0000169
Alex Kiernanaa0abed2018-02-16 15:50:39 +0000170config SYS_BOOTCOUNT_SINGLEWORD
171 bool "Use single word to pack boot count and magic value"
Alex Kiernan4a80f1d2018-02-16 15:50:46 +0000172 depends on BOOTCOUNT_GENERIC
Alex Kiernanaa0abed2018-02-16 15:50:39 +0000173 help
174 This option enables packing boot count magic value and boot count
175 into single word (32 bits).
Ian Ray542a48e2017-11-08 15:35:13 +0000176
177config SYS_BOOTCOUNT_EXT_INTERFACE
178 string "Interface on which to find boot counter EXT filesystem"
179 default "mmc"
180 depends on BOOTCOUNT_EXT
181 help
182 Set the interface to use when locating the filesystem to use for the
183 boot counter.
184
185config SYS_BOOTCOUNT_EXT_DEVPART
186 string "Partition of the boot counter EXT filesystem"
187 default "0:1"
188 depends on BOOTCOUNT_EXT
189 help
190 Set the partition to use when locating the filesystem to use for the
191 boot counter.
192
193config SYS_BOOTCOUNT_EXT_NAME
194 string "Path and filename of the EXT filesystem based boot counter"
195 default "/boot/failures"
196 depends on BOOTCOUNT_EXT
197 help
198 Set the filename and path of the file used to store the boot counter.
199
200config SYS_BOOTCOUNT_ADDR
201 hex "RAM address used for reading and writing the boot counter"
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000202 default 0x44E3E000 if BOOTCOUNT_AM33XX || BOOTCOUNT_AM33XX_NVMEM
Tom Rinic98ed5f2018-02-24 16:50:41 -0500203 default 0xE0115FF8 if ARCH_LS1043A || ARCH_LS1021A
204 depends on BOOTCOUNT_AM33XX || BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
Philip Richard Oberfichtnerf3b55f12023-10-31 08:38:44 +0100205 BOOTCOUNT_AM33XX_NVMEM
Ian Ray542a48e2017-11-08 15:35:13 +0000206 help
207 Set the address used for reading and writing the boot counter.
208
Marek Vasut6ae0ded2018-10-11 00:13:54 +0200209config SYS_BOOTCOUNT_MAGIC
210 hex "Magic value for the boot counter"
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000211 default 0xB001C041 if BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
212 BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \
Philip Richard Oberfichtnerf3b55f12023-10-31 08:38:44 +0100213 BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000214 default 0xB0 if BOOTCOUNT_AM33XX_NVMEM
215 depends on BOOTCOUNT_GENERIC || BOOTCOUNT_EXT || \
216 BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \
Philip Richard Oberfichtnerf3b55f12023-10-31 08:38:44 +0100217 BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT || \
Gireesh Hiremathc900eb12021-06-11 16:13:48 +0000218 BOOTCOUNT_AM33XX_NVMEM
Marek Vasut6ae0ded2018-10-11 00:13:54 +0200219 help
220 Set the magic value used for the boot counter.
221
Tom Rini5f4f84e2022-06-25 11:02:49 -0400222choice
223 prompt "Endianness of bootcount accessors"
224 default SYS_BOOTCOUNT_LE
225
226config SYS_BOOTCOUNT_LE
227 bool "Little endian accessors"
228
229config SYS_BOOTCOUNT_BE
230 bool "Big endian accessors"
231
232endchoice
Ian Ray542a48e2017-11-08 15:35:13 +0000233endif