Skip to content

Commit 34eab17

Browse files
committed
pieeprom-2025-02-11: 2712: CM5 no-wifi stability improvements (latest)
* recovery: Walk partitions to delete recovery.bin Previously, recovery.bin would fail to delete itself if the bootrom loaded recovery.bin where there are multiple FAT partitions and the first partition does not contain recovery.bin Update the rename code to walk the partition table to find the recovery.bin file to delete. * pi5: Add config filter for simple boot variable expressions (experimental) Add support for a new bootloader/config.txt conditional filter which tests the partition, boot_count and boot_arg1 variables. Syntax (no spaces): ARG boot_arg1, boot_count or partition (EEPROM config stage only) [ARG=VALUE] selected if (ARG == VALUE) [ARG&MASK] selected if ((ARG & VALUE) != 0)) [ARG&MASK=VALUE] selected if ((ARG & MASK) == VALUE) [ARG<VALUE] selected if (ARG < VALUE) [ARG>VALUE] selected if (ARG > VALUE) where VALUE and MASK are unsigned integer constants and ARG corresponds to the value in the reset register before the config file is parsed. * pi5: Add a boot-count bootloader variable (experimental) Store the boot-count in a reset register and increment just before the boot-order state-machine. The boot-count variable is visible via device-tree /proc/device-tree/chosen/bootloader/count and can be read/set via vcmailbox GET: sudo vcmailbox 0x0003008d 4 4 0 SET to N: sudo vcmailbox 0x0003808d 4 4 N * pi5: Add user-defined reboot argument (boot_arg1) (experimental) Add support for a user-defined boot parameter stored in a reset-safe scratch register on BCM2712. This is visible via device-tree at /proc/device-tree/chosen/bootloader/arg1 and via vcmailboxes GET arg1: sudo vcmailbox 0x0003008c 8 8 1 0 SET arg1 to 42: sudo vcmailbox 0x0003808c 8 8 1 42 or via config.txt set_reboot_arg1=42 The variable is NOT cleared automatically and will persist until a power-on-reset. * Enable overriding of high partition numbers Previously, the PARTITION=N bootloader config setting would only be used at power on reset or if the partition number passed to reboot was zero. Change the behaviour so that the bootloader config PARTITION property can override the reboot partition number if the reboot parameter is > 31. * Disable WiFi PMIC output on CM5 modules without WiFi Disable the 3.7V WiFi power supply on CM5 modules which do not have a WiFi module fitted. This fixes some stability issues where a CM5 would shutdown due to a spurious over-voltage condition on the non-connected WiFi power supply. * Add memory barrier to the mbox handler Firmware issue 1944 reports receiving kernel warnings about firmware requests where the status return code is 0. This should not be possible, as handle_mbox_property always sets the top bit of the return code, with the bottom bit indicating success or failure. If the firmware had died, the firmware driver would report a timeout due to the lack of a mailbox interrupt, and that isn't happening. See: raspberrypi/firmware#1944 * support dts files with size-cells of 2 DTS files with a top-level #size-cells of 2 make a lot of sense for systems with a lot of RAM, but the firmware is currently inconsistent in its support for that. Fix up the other cases to honor #size-cells and #address-cells. * Disable SDIO2 for CM5s without WiFi It has been observed that CM5s without WiFi hang on reboot. To prevent that, disable the sdio2 node on those devices. See: raspberrypi/linux#6647 * arm_dt: Use dtoverlay_enable_node Convert the open-coded DT node status changes to use the new dtoverlay method dtoverlay_enable_node. * dtoverlay: Add dtoverlay_enable_node Add a helper function for setting the status of a node.
1 parent 0190dbc commit 34eab17

File tree

3 files changed

+73
-0
lines changed

3 files changed

+73
-0
lines changed
Binary file not shown.

firmware-2712/latest/recovery.bin

24 Bytes
Binary file not shown.

firmware-2712/release-notes.md

+73
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,78 @@
11
# Raspberry Pi5 bootloader EEPROM release notes
22

3+
## 2025-02-11: CM5 no-Wifi stability improvements (latest)
4+
5+
* recovery: Walk partitions to delete recovery.bin
6+
Previously, recovery.bin would fail to delete itself
7+
if the bootrom loaded recovery.bin where there are multiple FAT
8+
partitions and the first partition does not contain recovery.bin
9+
Update the rename code to walk the partition table to find
10+
the recovery.bin file to delete.
11+
* pi5: Add config filter for simple boot variable expressions (experimental)
12+
Add support for a new bootloader/config.txt conditional filter
13+
which tests the partition, boot_count and boot_arg1 variables.
14+
Syntax (no spaces):
15+
ARG boot_arg1, boot_count or partition (EEPROM config stage only)
16+
[ARG=VALUE] selected if (ARG == VALUE)
17+
[ARG&MASK] selected if ((ARG & VALUE) != 0))
18+
[ARG&MASK=VALUE] selected if ((ARG & MASK) == VALUE)
19+
[ARG<VALUE] selected if (ARG < VALUE)
20+
[ARG>VALUE] selected if (ARG > VALUE)
21+
where VALUE and MASK are unsigned integer constants and ARG
22+
corresponds to the value in the reset register before the
23+
config file is parsed.
24+
* pi5: Add a boot-count bootloader variable (experimental)
25+
Store the boot-count in a reset register and increment just
26+
before the boot-order state-machine. The boot-count variable
27+
is visible via device-tree /proc/device-tree/chosen/bootloader/count
28+
and can be read/set via vcmailbox
29+
GET: sudo vcmailbox 0x0003008d 4 4 0
30+
SET to N: sudo vcmailbox 0x0003808d 4 4 N
31+
* pi5: Add user-defined reboot argument (boot_arg1) (experimental)
32+
Add support for a user-defined boot parameter stored in a reset-safe
33+
scratch register on BCM2712. This is visible via device-tree at
34+
/proc/device-tree/chosen/bootloader/arg1 and via vcmailboxes
35+
GET arg1: sudo vcmailbox 0x0003008c 8 8 1 0
36+
SET arg1 to 42: sudo vcmailbox 0x0003808c 8 8 1 42
37+
or via config.txt
38+
set_reboot_arg1=42
39+
The variable is NOT cleared automatically and will persist until
40+
a power-on-reset.
41+
* Enable overriding of high partition numbers
42+
Previously, the PARTITION=N bootloader config setting would only
43+
be used at power on reset or if the partition number passed to
44+
reboot was zero.
45+
Change the behaviour so that the bootloader config PARTITION
46+
property can override the reboot partition number if the reboot
47+
parameter is > 31.
48+
* Disable WiFi PMIC output on CM5 modules without WiFi
49+
Disable the 3.7V WiFi power supply on CM5 modules which do not have a
50+
WiFi module fitted. This fixes some stability issues where a CM5
51+
would shutdown due to a spurious over-voltage condition on the
52+
non-connected WiFi power supply.
53+
* Add memory barrier to the mbox handler
54+
Firmware issue 1944 reports receiving kernel warnings about firmware
55+
requests where the status return code is 0. This should not be
56+
possible, as handle_mbox_property always sets the top bit of the return
57+
code, with the bottom bit indicating success or failure. If the firmware
58+
had died, the firmware driver would report a timeout due to the lack of
59+
a mailbox interrupt, and that isn't happening.
60+
See: https://github.com/raspberrypi/firmware/issues/1944
61+
* support dts files with size-cells of 2
62+
DTS files with a top-level #size-cells of 2 make a lot of sense for
63+
systems with a lot of RAM, but the firmware is currently inconsistent
64+
in its support for that. Fix up the other cases to honor #size-cells
65+
and #address-cells.
66+
* Disable SDIO2 for CM5s without WiFi
67+
It has been observed that CM5s without WiFi hang on reboot. To prevent
68+
that, disable the sdio2 node on those devices.
69+
See: https://github.com/raspberrypi/linux/issues/6647
70+
* arm_dt: Use dtoverlay_enable_node
71+
Convert the open-coded DT node status changes to use the new dtoverlay
72+
method dtoverlay_enable_node.
73+
* dtoverlay: Add dtoverlay_enable_node
74+
Add a helper function for setting the status of a node.
75+
376
## 2025-01-27: Walk the partition table if the requested partition is not bootable (latest)
477

578
* Walk the partition table if the requested partition is not bootable

0 commit comments

Comments
 (0)