[PATCH] rpi: copy /chosen/bootloader partition and set boot_partition

Matthias Brugger mbrugger at suse.com
Wed Jul 8 12:48:08 CEST 2026



On 08/07/2026 08:30, Gregor Herburger wrote:
> The Raspberry Pi has the "tryboot" feature where it can boot from a
> different partition enabling failsafe A/B updates. After boot the
> firmware sets 'partition' property in /chosen/bootloader. Copy this
> property to the device tree and set the env variable boot_partition.
> This allows boards to create a bootcmd based on the boot partition.
> 
> Signed-off-by: Gregor Herburger <gregor.herburger at linutronix.de>

Reviewed-by: Matthias Brugger <mbrugger at suse.com>

> ---
>   board/raspberrypi/rpi/rpi.c | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
> 
> diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
> index 1da5df92351..7a2ff646ac8 100644
> --- a/board/raspberrypi/rpi/rpi.c
> +++ b/board/raspberrypi/rpi/rpi.c
> @@ -480,6 +480,20 @@ static void set_serial_number(void)
>   	env_set("serial#", serial_string);
>   }
>   
> +static void set_boot_partition_fdt(void)
> +{
> +	void *fdtp = (void *)gd->fdt_blob;
> +	u32 partition;
> +
> +	partition = fdt_getprop_u32_default(fdtp, "/chosen/bootloader", "partition", 1);
> +	if (!partition) {
> +		printf("Failed to the get partition property.\n");
> +		return;
> +	}
> +
> +	env_set_ulong("boot_partition", partition);
> +}
> +
>   int misc_init_r(void)
>   {
>   	set_fdt_addr();
> @@ -489,6 +503,7 @@ int misc_init_r(void)
>   	set_board_info();
>   #endif
>   	set_serial_number();
> +	set_boot_partition_fdt();
>   
>   	return 0;
>   }
> @@ -641,6 +656,9 @@ void  update_fdt_from_fw(void *fdt, void *fw_fdt)
>   
>   	/* copy uart clk as provided by the firmware */
>   	copy_property(fdt, fw_fdt, "/clocks/clk-uart", "clock-frequency");
> +
> +	/* Copy the boot partition */
> +	copy_property(fdt, fw_fdt, "/chosen/bootloader", "partition");
>   }
>   
>   int ft_board_setup(void *blob, struct bd_info *bd)
> 
> ---
> base-commit: ee5d46b45ec0c63f8f9dd1e816e0dac3452ccc3d
> change-id: 20260708-tryboot-c11aa44bf1cc
> 
> Best regards,
> --
> Gregor Herburger <gregor.herburger at linutronix.de>
> 



More information about the U-Boot mailing list