]>
Commit | Line | Data |
---|---|---|
f31dac4e IR |
1 | # |
2 | # Boot count configuration | |
3 | # | |
4 | ||
c1e1c1ec | 5 | menuconfig BOOTCOUNT_LIMIT |
d1ec9461 LM |
6 | bool "Enable support for checking boot count limit" |
7 | help | |
8 | Enable checking for exceeding the boot count limit. | |
7387be52 | 9 | More information: https://docs.u-boot.org/en/latest/api/bootcount.html |
d1ec9461 | 10 | |
3dccc10e | 11 | if BOOTCOUNT_LIMIT |
f31dac4e | 12 | |
c1e1c1ec AK |
13 | choice |
14 | prompt "Boot count device" | |
c35e2d91 | 15 | default BOOTCOUNT_AM33XX if AM33XX || SOC_DA8XX |
aa5a8632 AK |
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. | |
c1e1c1ec | 26 | |
1d7e2120 VA |
27 | config BOOTCOUNT_FS |
28 | bool "Boot counter on a filesystem" | |
f31dac4e | 29 | help |
1d7e2120 VA |
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 | |
7f050668 | 32 | that will be used by the partition that you configure this feature |
1d7e2120 | 33 | for. |
f31dac4e | 34 | |
c35e2d91 AK |
35 | config BOOTCOUNT_AM33XX |
36 | bool "Boot counter in AM33XX RTC IP block" | |
37 | depends on AM33XX || SOC_DA8XX | |
3bf5f13c | 38 | select SPL_AM33XX_ENABLE_RTC32K_OSC if AM33XX |
c35e2d91 AK |
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 | ||
caf94786 GH |
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 | ||
04c96ed2 AK |
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 | |
fc1383ae MO |
70 | 0, "bootcount" is always 0. If "upgrade_available" is 1, |
71 | "bootcount" is incremented in the environment. | |
04c96ed2 | 72 | So the Userspace Application must set the "upgrade_available" |
fc1383ae | 73 | and "bootcount" variables to 0, if the system booted successfully. |
04c96ed2 | 74 | |
ff5410d3 AK |
75 | config BOOTCOUNT_RAM |
76 | bool "Boot counter in RAM" | |
77 | help | |
fc1383ae | 78 | Store the bootcount in DRAM protected against bit errors |
ff5410d3 AK |
79 | due to short power loss or holding a system in RESET. |
80 | ||
bec8c647 AK |
81 | config BOOTCOUNT_AT91 |
82 | bool "Boot counter for Atmel AT91SAM9XE" | |
83 | depends on AT91SAM9XE | |
84 | ||
ebb73de1 PT |
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 | ||
c1e1c1ec AK |
93 | endchoice |
94 | ||
482734aa PT |
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 | ||
5b6ee512 PRO |
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 | ||
ae3d38f3 RB |
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 | ||
c537a368 PO |
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. | |
bda5f3e7 | 136 | This works only, if the PMIC is not connected to a battery. |
c537a368 | 137 | |
cfe89496 SR |
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 | ||
80e8b8ad HS |
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 | ||
c50b21b7 NH |
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 | ||
159dfef2 VA |
167 | config 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 | ||
482734aa PT |
174 | endmenu |
175 | ||
176 | endif | |
177 | ||
c9ad6bc2 AK |
178 | config 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. | |
fc1383ae | 184 | If set to 0, do not set a boot limit in the environment. |
c9ad6bc2 | 185 | |
c1e1c1ec AK |
186 | config SYS_BOOTCOUNT_SINGLEWORD |
187 | bool "Use single word to pack boot count and magic value" | |
aa5a8632 | 188 | depends on BOOTCOUNT_GENERIC |
c1e1c1ec AK |
189 | help |
190 | This option enables packing boot count magic value and boot count | |
191 | into single word (32 bits). | |
f31dac4e | 192 | |
1d7e2120 VA |
193 | config SYS_BOOTCOUNT_FS_INTERFACE |
194 | string "Interface on which to find boot counter filesystem" | |
f31dac4e | 195 | default "mmc" |
1d7e2120 | 196 | depends on BOOTCOUNT_FS |
f31dac4e IR |
197 | help |
198 | Set the interface to use when locating the filesystem to use for the | |
199 | boot counter. | |
200 | ||
1d7e2120 VA |
201 | config SYS_BOOTCOUNT_FS_DEVPART |
202 | string "Partition of the boot counter filesystem" | |
f31dac4e | 203 | default "0:1" |
1d7e2120 | 204 | depends on BOOTCOUNT_FS |
f31dac4e IR |
205 | help |
206 | Set the partition to use when locating the filesystem to use for the | |
207 | boot counter. | |
208 | ||
1d7e2120 VA |
209 | config SYS_BOOTCOUNT_FS_NAME |
210 | string "Path and filename of the FS filesystem based boot counter" | |
f31dac4e | 211 | default "/boot/failures" |
1d7e2120 | 212 | depends on BOOTCOUNT_FS |
f31dac4e IR |
213 | help |
214 | Set the filename and path of the file used to store the boot counter. | |
215 | ||
216 | config SYS_BOOTCOUNT_ADDR | |
217 | hex "RAM address used for reading and writing the boot counter" | |
caf94786 | 218 | default 0x44E3E000 if BOOTCOUNT_AM33XX || BOOTCOUNT_AM33XX_NVMEM |
39bcbb77 | 219 | default 0xE0115FF8 if ARCH_LS1043A || ARCH_LS1021A |
1d7e2120 | 220 | depends on BOOTCOUNT_AM33XX || BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \ |
31f4ee4b | 221 | BOOTCOUNT_AM33XX_NVMEM |
f31dac4e IR |
222 | help |
223 | Set the address used for reading and writing the boot counter. | |
224 | ||
758694ff MV |
225 | config SYS_BOOTCOUNT_MAGIC |
226 | hex "Magic value for the boot counter" | |
1d7e2120 | 227 | default 0xB001C041 if BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \ |
caf94786 | 228 | BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \ |
31f4ee4b | 229 | BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT |
caf94786 | 230 | default 0xB0 if BOOTCOUNT_AM33XX_NVMEM |
1d7e2120 | 231 | depends on BOOTCOUNT_GENERIC || BOOTCOUNT_FS || \ |
caf94786 | 232 | BOOTCOUNT_AM33XX || BOOTCOUNT_ENV || \ |
31f4ee4b | 233 | BOOTCOUNT_RAM || BOOTCOUNT_AT91 || DM_BOOTCOUNT || \ |
caf94786 | 234 | BOOTCOUNT_AM33XX_NVMEM |
758694ff MV |
235 | help |
236 | Set the magic value used for the boot counter. | |
237 | ||
64a2a7b0 TR |
238 | choice |
239 | prompt "Endianness of bootcount accessors" | |
240 | default SYS_BOOTCOUNT_LE | |
241 | ||
242 | config SYS_BOOTCOUNT_LE | |
243 | bool "Little endian accessors" | |
244 | ||
245 | config SYS_BOOTCOUNT_BE | |
246 | bool "Big endian accessors" | |
247 | ||
248 | endchoice | |
f31dac4e | 249 | endif |