* Add set_reboot_order API and config.txt properties
If set_reboot_order is defined in config.txt or set via vcmailbox
then this will override the bootloader config BOOT_ORDER property
on the next reboot. The parameter is stored in a reset safe register
and is cleared by the bootloader after reading it.
Typically, the config.txt value only be used via rpiboot to
override the boot-order on the next reboot. Otherwise, it should
reside in a conditional section so that the boot order is not
overridden on every reboot.
Example, test network boot
sudo vcmailbox 0x0003808b 4 4 0xf4612; sudo reboot
* Improved SDRAM refresh timings for Pi5 - 16GB
* Add an option to wait for the power button to be pressed before booting.
If POWER_OFF_ON_HALT=1 and WAIT_FOR_POWER_BTN=1 in the bootloader
config then the bootloader will wait for either the power button
to be pressed or an RTC alarm before booting. The wait state
switches the PMIC to STANDBY mode which is the lowest possible
power state.
* Stop the fan after after fan-probe
After the fan-probe has completed drive the fan PWM GPIO
to high if a fan was detected and let the OS take over.
* Add SD_QUIRKS for hardware bringup / workarounds
Add a new SD_QUIRKS flags property which can be used to
disable high-speed mode (bit 0). Other bits are reserved for
future use.
* Change uart_2ndstage default to 1 on Pi5
Change the default to 1 because this gives useful diagnostics
for device-tree loading with minimal overhead. Set uart_2ndstage=0
or BOOT_UART=0 to disable this.
* Move M.2 HAT+ detection to early boot.
Initialse M.2 HAT+ detection before DDR init to give NVMe
drive firmware more time to boot.
* Disable fan PWM before shutdown
Drive the RP1 fan PWM GPIO high before entering the VPU
sleep (POWER_OFF_ON_HALT=0) to stop the fan spinning.
* Disable fan PWM GPIO between RP1 init and fan probe
Drive fan PWM GPIO high during early boot to disable the fan
until it is probed during the device-tree setup stage.
This stops the spinning at max rpm during network-install.
* arm_dt: enable_uart defaults to 0 on 2712
The default value of enable_uart on 2712 is 0, regardless of the
presence of the debug UART cable, so guarantee that the default is
always set correctly.
* Enable banklow (and so NUMA) by default
banklow=1 (2712) and banklow=3 (2711) give the best performance.
* enable_uart=1 now enables a Linix UART console on the 40-pin header
unless a cable is detected on the dedicated boot-uart.
* Recreate internal bl31 stub from clean git tree to fix dirty commit
message.
* rp1fw: Add FIFO_STATE & DRAIN_TX, fix CAN_ADD_PROGRAM
RP1 firmware eb39cfd516f8c90628aa9d91f52370aade5d0a55 adds
methods to drain the TX FIFO and retrieve the state of both FIFOs. It
also fixes the CAN_ADD_PROGRAM implementation, which was fatally
broken.
* network-install - Update the UI to display the board model / variant.
* net-install: Fix keyboard detection on hubs
* recovery: Always enable UART debug output on 2712
* Set POWER_OFF_ON_HALT defaults
The default value for POWER_OFF_ON_HALT on CM5 and Pi 500 will be 1.
Pi5 defaults to 0 for backwards compatibility.
* boot-time: Remove unnecessary 1 second delay when configuring DWC2 controller.
* Enable initial_turbo=60 by default
This reduces the time to get load and decompress the kernel.
* logging: Remove superfluous newline on SDRAM refresh changed messages
* Fix initial_turbo duration
The timeout counter for the previous implementation could run too quickly
causing the initial-turbo timeout to end earlier than expected.
* rp1-fw: Add the mailbox firmware interface, and PIO support that uses it.
* rp1-fw: Turn off unused 25MHz Ethernet refclk
Move everything older than the last automatic update (2024-09-23) to the
old firmware directory which is not included in the APT package. This
reduces the size of the APT updates.
* Fix PCIe BAR setup issue which prevented NVMe boot from working with some PCIe switches
See: https://github.com/raspberrypi/firmware/issues/1833
* Boot-menu improvements
Remain in the forced boot mode until the menu is used to select a different
boot-mode or reset to the original boot-order.
* Introduce a new boot-menu feature where pressing SPACE at power on
gives the user a one-shot option to select a different boot mode.
e.g. Select USB boot if the default SD card is corrupted or unavailable.
* Display the bootloader network-install UI for longer on a cold boot to make
this feature more visible to first time users.
To revert to the previous behaviour remove NET_INSTALL_AT_POWER_ON=1
from the bootloader config.
* Support non-UUID HAT mapping
Extend the HAT map support to allow matching on product and vendor
strings, as well as product ID and version. As a minimum, there must
be a product string - if that matches, the other keys are considered.
Without a product key, the UUID is compared as before.
* Remove requirement for GPT ptable array to be at LBA-2
See: https://github.com/raspberrypi/rpi-eeprom/issues/585
* 2712C1 clock manager improvements to slightly reduce idle power ~50mW saving
* Adjust SDRAM page-hold and auto-precharge to improve performance.
~2% improvement with Geekbench 6
* armstubs: 2712: Rebuild with updated max-power throttle and direct stream settings
See: fc45bc492d
* debug: Only display the program_pubkey log if configuring secure-boot
* arm_dt: Consult the hat_map for all HATs
* USB boot - ignore RP2 / RP3 MSD device in BOOTSEL mode.
* recovery.bin - Fix erase_eeprom to not block reboot_recovery
* Fix self-update to continue to boot instead of retrying forever
if the EEPROM is write protected.
https://github.com/raspberrypi/rpi-eeprom/issues/597
- 2024-07-30 is marked `default` here, but the image is actually in `latest`
- 2024-07-25 doesn't specify default or latest - fix that
(Aside: neither seem to have found their way to apt yet).
* Optimize all-banks/per-bank refresh timings for Pi5 8GB
* Improve compatibility for booting from some USB SD card readers
https://github.com/raspberrypi/rpi-eeprom/issues/527
* Add enable_rp1_uart=1 to config.txt to initialise RP1 UART0 immediately
prior to starting the ARMs get earlycon on 40-pin header (pins 14,15)
Also requires pciex4_reset=0 in config.txt
earlycon=pl011,0x1f00030000,115200n8
* The [pi5] conditional statement should apply to the entire pi5
family i.e. include cm5 as well.
* Bump SDIO bus priorities to that a GPU/RAM intensive processes
can't unnecessarily stall an I/O processes.
* Assorted log message tidyups.
Interesting changes since the last automatic update:
* Enable network install
* Enable over-clocking frequencies > 3GHz
See: ttps://github.com/raspberrypi/firmware/issues/1876
* Adjust SDRAM refresh rate according to temperature and address a performance
gap between 4GB and 8GB parts in benchmarks.
See: https://github.com/raspberrypi/firmware/issues/1854
* Support custom CA certs with HTTPS boot
* Move non Kernel ARM stages back to 512KB
https://github.com/raspberrypi/firmware/issues/1868
* Assorted HAT+ and NVMe interop improvements.
* Fix TRYBOOT if secure-boot is enabled.
* Preliminary support for D0 and CM5.
* Switch to building the Pi4 firmware from the common Pi4/Pi5
mainline release. This doesn't change the Pi4 features
but should make it quicker to release bug fixes in common code.
* Fix issue that caused the TRYBOOT flag to be lost in secure-boot mode.
* dtoverlay: Use %u when converting u32s to strings
See: https://github.com/raspberrypi/linux/issues/6039
* Improved debug messages for secure-boot.
* Generate the bootloader diagnostics qrcode at run time.
* bootloader: clock_2712: Remove restriction on arm_freq <= 3000
See: https://github.com/raspberrypi/firmware/issues/1876
* arm_dt: Update max_current to match HAT value
* arm_dt: Remove unused legacy parameters (core_freq, arm_freq, uart0_clkrate and cache_line_size)
* Add support for custom CA cert for network install
You need to specify
HTTP_HOST=myhost.com
HTTP_PATH=/path/to/files
HTTP_CACERT_HASH=<hash>
where <hash> is a sha256 hash of the der encoded ca certificate.
CA cert is added using rpi-eeprom-config.
* Optimise Vbat current draw with charging disabled
* Display OTP boot status in UART log messages.
* Preliminary support for secure-boot OTP provisioning.
* Update PCIE DET_WAKE pinmux for D0 products
* Adjust the SDRAM refresh interval based on the temperature. This
addresses the gap in performance between the 8GB and 4GB variants.
See https://github.com/raspberrypi/firmware/issues/1864
* Preliminary support for signed boot.
* Adjust the SDRAM refresh interval based on the temperature. This
addresses the gap in performance between the 8GB and 4GB variants.
See https://github.com/raspberrypi/firmware/issues/1854
* Preliminary support for signed boot