xilinx: versal: add firmware access to PMC multi Boot mode register
authorPrasad Kummari <prasad.kummari@amd.com>
Wed, 5 Mar 2025 13:48:46 +0000 (19:18 +0530)
committerMichal Simek <michal.simek@amd.com>
Wed, 16 Apr 2025 11:42:06 +0000 (13:42 +0200)
commit5ffab6ee1279fe86ab21b529a04b1638a6664eaf
tree7594d8021c3f6bf41a8cb0b85bf1b3d994a05fb3
parent253da1f0a2821bf741c8dc24ed2e568b7013f6e0
xilinx: versal: add firmware access to PMC multi Boot mode register

Added extended support for retrieving the PMC muti boot mode
register via the firmware interface, which is preferred when
U-Boot runs in EL2 and cannot directly access PMC registers
via raw reads. Ideally, all secure registers should be accessed
via xilinx_pm_request(). Introduced the secure
zynqmp_pm_get_pmc_multi_boot_reg() call, which uses
xilinx_pm_request() to read the PMC multi boot mode register.

BootROM increments the MultiBoot register (PMC_MULTI_BOOT) read
address offset by 32 KB and retries. For SD and eMMC boot modes,
it can search up to 8191 FAT files for the identification string.
A 13-bit mask (0x1FFF) is applied to PMC_MULTI_BOOT_MASK to obtain
the correct values in BootROM.

Signed-off-by: Prasad Kummari <prasad.kummari@amd.com>
Link: https://lore.kernel.org/r/20250305134845.3182193-1-prasad.kummari@amd.com
Signed-off-by: Michal Simek <michal.simek@amd.com>
arch/arm/mach-versal/include/mach/hardware.h
board/xilinx/versal/board.c
drivers/firmware/firmware-zynqmp.c
include/zynqmp_firmware.h