You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: documentation/asciidoc/computers/config_txt/conditional.adoc
+86-8
Original file line number
Diff line number
Diff line change
@@ -96,9 +96,6 @@ Some models of Raspberry Pi, including Zero, Compute Module, and Keyboard models
96
96
97
97
The `[none]` filter prevents any settings that follow from being applied to any hardware. Although there is nothing that you can't do without `[none]`, it can be a useful way to keep groups of unused settings in config.txt without having to comment out every line.
98
98
99
-
=== The `[partition=N]` filter
100
-
This `partition` filter can be be used to select alternate boot flows according to the requested partition number (`sudo reboot N`) or via direct usage of the `PM_RSTS` watchdog register.
The raw value of the `PM_RSTS` register at bootup is available via `/proc/device-tree/chosen/bootloader/rsts` and the final partition number used for booting is available via `/proc/device-tree/chosen/bootloader/partition`. These are big-endian binary values.
125
122
126
-
=== The `[boot_partition=N]` filter
127
-
The `boot_partition` filter can be used to select alternate OS files (e.g. `cmdline.txt`) to be loaded, depending on which partition `config.txt` was loaded from after processing `autoboot.txt`. This is intended for use with an `A/B` boot-system with `autoboot.txt` where it is desirable to be able to have identical files installed to the boot partition for both the `A` and `B` images.
123
+
=== The expression filter
124
+
125
+
The expression filter provides support for comparing unsigned integer "boot variables" to constants using a simple set of operators. It is intended to support OTA update mechanisms, debug and test.
126
+
127
+
* The "boot variables" are `boot_arg1`, `boot_count`, `boot_partition` and `partition`.
128
+
* Boot variables are always lower case.
129
+
* Integer constants may either be written as decimal or as hex.
130
+
* Expression conditional filters have no side-effects e.g. no assignment operators.
131
+
* As with other filter types the expression filter cannot be nested.
132
+
* Use the `[all]` filter to reset expressions and all other conditional filter types.
133
+
134
+
Syntax:
135
+
[source,ini]
136
+
----
137
+
# ARG is a boot-variable
138
+
# VALUE and MASK are unsigned integer constants
139
+
[ARG=VALUE] # selected if (ARG == VALUE)
140
+
[ARG&MASK] # selected if ((ARG & VALUE) != 0)
141
+
[ARG&MASK=VALUE] # selected if ((ARG & MASK) == VALUE)
142
+
[ARG<VALUE] # selected if (ARG < VALUE)
143
+
[ARG>VALUE] # selected if (ARG > VALUE)
144
+
145
+
----
146
+
147
+
==== `boot_arg1`
148
+
Raspberry Pi 5 and newer flagship devices only.
149
+
150
+
`boot_arg1` is a 32-bit user defined value which is stored in a reset-safe register allowing parameters can be passed accross a reboot.
128
151
129
-
Example `config.txt` - select the matching root filesystem for the `A/B` boot file-system.
152
+
Setting `boot_arg1` to 42 via `config.txt`:
130
153
[source,ini]
131
154
----
155
+
set_reboot_arg1=42
156
+
----
157
+
The `set_reboot_arg1` property sets the value for the next boot. It does not change the current value as seen by the config parser.
The value of the `boot_arg1` variable when the OS was started can be read via xref:configuration.adoc#part4[device-tree] at `/proc/device-tree/chosen/bootloader/arg1`
173
+
174
+
==== `boot_count`
175
+
Raspberry Pi 5 and newer flagship devices only.
176
+
177
+
`boot_count` variable is an 8-bit value stored in a reset-safe register that is incremented at boot (wrapping back to zero at 256). It is cleared if power is disconnected.
The value of `boot_count` when the OS was started can be read via xref:configuration.adoc#part4[device-tree] at `/proc/device-tree/chosen/bootloader/count`
194
+
195
+
==== `boot_partition`
196
+
The `boot_partition` variable can be used to select alternate OS files (e.g. `cmdline.txt`) to be loaded, depending on which partition `config.txt` was loaded from after processing `autoboot.txt`. This is intended for use with an `A/B` boot-system with `autoboot.txt` where it is desirable to be able to have identical files installed to the boot partition for both the `A` and `B` images.
197
+
198
+
The value of the `boot_partition` can be different to the `partition` variable because the required `partition` can be overriden by `autoboot.txt`.
199
+
200
+
Example `config.txt` - select the matching root filesystem for the `A/B` boot file-system:
201
+
[source,ini]
202
+
----
203
+
# Use different cmdline files to point to different root filesystems based on which partition the system booted from.
132
204
[boot_partition=1]
133
-
cmdline=cmdline_rootfs_a.txt
205
+
cmdline=cmdline_rootfs_a.txt # Points to root filesystem A
134
206
135
207
[boot_partition=2]
136
-
cmdline=cmdline_rootfs_b.txt
208
+
cmdline=cmdline_rootfs_b.txt # Points to root filesystem B
137
209
----
138
210
211
+
The value of `boot_partition` i.e. the partition used to boot the OS can be read from device-tree at `/proc/device-tree/chosen/bootloader/partition`
212
+
213
+
==== `partition`
214
+
This `partition` "boot variable" can be used to select alternate boot flows according to the requested partition number (`sudo reboot N`) or via direct usage of the `PM_RSTS` watchdog register.
215
+
216
+
139
217
=== The `[tryboot]` filter
140
218
141
219
This filter succeeds if the `tryboot` reboot flag was set.
Copy file name to clipboardExpand all lines: documentation/asciidoc/computers/configuration/device-tree.adoc
+17-2
Original file line number
Diff line number
Diff line change
@@ -833,7 +833,14 @@ For a list of supported overlays and parameters, see the https://github.com/rasp
833
833
[[part4]]
834
834
=== Firmware parameters
835
835
836
-
The firmware uses the special https://www.kernel.org/doc/html/latest/devicetree/usage-model.html#runtime-configuration[/chosen] node to pass parameters between the bootloader and/or firmware and the operating system. Each property is stored as a 32-bit integer unless indicated otherwise.
836
+
The firmware uses the special https://www.kernel.org/doc/html/latest/devicetree/usage-model.html#runtime-configuration[/chosen] node to pass parameters between the bootloader and/or firmware and the operating system. Each property is stored as a 32-bit unsigned integer unless indicated otherwise.
837
+
838
+
Numbers in device-tree are stored in binary and are big-endian.
839
+
[source,console]
840
+
----
841
+
# Example shell script for reading a 32-bit unsigned number from device-tree
`overlay_prefix`:: _(string)_ The xref:config_txt.adoc#overlay_prefix[overlay_prefix] string selected by `config.txt`.
839
846
@@ -859,9 +866,17 @@ Each property is stored as a 32-bit integer unless indicated otherwise.
859
866
860
867
`tryboot`:: Set to `1` if the `tryboot` flag was set at boot.
861
868
869
+
==== Boot variables `/chosen/bootloader`
870
+
871
+
Raspberry Pi 5 only. Each property is stored as a 32-bit unsigned integer unless indicated otherwise.
872
+
873
+
`arg1`:: The value of the user defined reboot argument from the previous boot. See xref:config_txt.adoc#boot_arg1[boot_arg1]
874
+
875
+
`count`:: The value of the 8-bit `boot_count` variable when the OS was started. See xref:config_txt.adoc#boot_count[boot_count]
876
+
862
877
==== Power supply properties `/chosen/power`
863
878
864
-
Raspberry Pi 5 only. Each property is stored as a 32-bit integer unless indicated otherwise.
879
+
Raspberry Pi 5 only. Each property is stored as a 32-bit unsigned integer unless indicated otherwise.
865
880
866
881
`max_current`:: The maximum current in mA that the power supply can supply. The firmware reports the value indicated by the USB-C, USB-PD or PoE interfaces. For bench power supplies (e.g. connected to the GPIO header) define `PSU_MAX_CURRENT` in the bootloader configuration to indicate the power supply current capability.
0 commit comments