diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.15/950-0311-firmware-raspberrypi-Add-support-for-tryonce-reboot-.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.15/950-0311-firmware-raspberrypi-Add-support-for-tryonce-reboot-.patch | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/target/linux/bcm27xx/patches-5.15/950-0311-firmware-raspberrypi-Add-support-for-tryonce-reboot-.patch b/target/linux/bcm27xx/patches-5.15/950-0311-firmware-raspberrypi-Add-support-for-tryonce-reboot-.patch deleted file mode 100644 index 682b945205..0000000000 --- a/target/linux/bcm27xx/patches-5.15/950-0311-firmware-raspberrypi-Add-support-for-tryonce-reboot-.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 7fd7e502a0d21e055291b994e487109982f74ed6 Mon Sep 17 00:00:00 2001 -From: Tim Gover <tim.gover@raspberrypi.com> -Date: Tue, 20 Oct 2020 11:55:37 +0100 -Subject: [PATCH] firmware: raspberrypi: Add support for tryonce reboot - flag - -Define a new mailbox (SET_REBOOT_FLAGS) which may be used to -pass optional flags to the Raspberry Pi firmware that changes -the behaviour of the bootloader and firmware during a reboot. - -Currently this just defines the 'tryboot' flag which causes -the firmware to load tryboot.txt instead config.txt. This -alternate configuration file can be used to specify the -path of an alternate firmware and kernels allowing a fallback -mechanism to be implemented for OS upgrades. ---- - drivers/firmware/raspberrypi.c | 25 ++++++++++++++++++++-- - include/soc/bcm2835/raspberrypi-firmware.h | 2 ++ - 2 files changed, 25 insertions(+), 2 deletions(-) - ---- a/drivers/firmware/raspberrypi.c -+++ b/drivers/firmware/raspberrypi.c -@@ -193,6 +193,7 @@ static int rpi_firmware_notify_reboot(st - { - struct rpi_firmware *fw; - struct platform_device *pdev = g_pdev; -+ u32 reboot_flags = 0; - - if (!pdev) - return 0; -@@ -201,8 +202,28 @@ static int rpi_firmware_notify_reboot(st - if (!fw) - return 0; - -- (void)rpi_firmware_property(fw, RPI_FIRMWARE_NOTIFY_REBOOT, -- 0, 0); -+ // The partition id is the first parameter followed by zero or -+ // more flags separated by spaces indicating the reason for the reboot. -+ // -+ // 'tryboot': Sets a one-shot flag which is cleared upon reboot and -+ // causes the tryboot.txt to be loaded instead of config.txt -+ // by the bootloader and the start.elf firmware. -+ // -+ // This is intended to allow automatic fallback to a known -+ // good image if an OS/FW upgrade fails. -+ // -+ // N.B. The firmware mechanism for storing reboot flags may vary -+ // on different Raspberry Pi models. -+ if (data && strstr(data, " tryboot")) -+ reboot_flags |= 0x1; -+ -+ // The mailbox might have been called earlier, directly via vcmailbox -+ // so only overwrite if reboot flags are passed to the reboot command. -+ if (reboot_flags) -+ (void)rpi_firmware_property(fw, RPI_FIRMWARE_SET_REBOOT_FLAGS, -+ &reboot_flags, sizeof(reboot_flags)); -+ -+ (void)rpi_firmware_property(fw, RPI_FIRMWARE_NOTIFY_REBOOT, NULL, 0); - - return 0; - } ---- a/include/soc/bcm2835/raspberrypi-firmware.h -+++ b/include/soc/bcm2835/raspberrypi-firmware.h -@@ -93,6 +93,8 @@ enum rpi_firmware_property_tag { - RPI_FIRMWARE_GET_POE_HAT_VAL = 0x00030049, - RPI_FIRMWARE_SET_POE_HAT_VAL = 0x00030050, - RPI_FIRMWARE_NOTIFY_XHCI_RESET = 0x00030058, -+ RPI_FIRMWARE_GET_REBOOT_FLAGS = 0x00030064, -+ RPI_FIRMWARE_SET_REBOOT_FLAGS = 0x00038064, - RPI_FIRMWARE_NOTIFY_DISPLAY_DONE = 0x00030066, - - /* Dispmanx TAGS */ |