diff --git a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_hw.h b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_hw.h index aab204dd..93ae0cf6 100644 --- a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_hw.h +++ b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_hw.h @@ -488,6 +488,13 @@ extern "C" { #define XFSBL_PMU_RAM_START_ADDRESS (0xFFDC0000U) #define XFSBL_PMU_RAM_END_ADDRESS (0xFFDDFFFFU) +/** + * If address where bitstream need to be copied is not configured, below will + * be the default address to indicate it is invalid address. In such cases, + * XFSBL_DDR_TEMP_ADDRESS is used as load address. + */ +#define XFSBL_DUMMY_PL_ADDR (0xFFFFFFFFU) + /** * ARM Processor defines */ diff --git a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_image_header.c b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_image_header.c index 540396b9..6cc8e997 100644 --- a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_image_header.c +++ b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_image_header.c @@ -499,6 +499,16 @@ static u32 XFsbl_CheckValidMemoryAddress(u64 Address, u32 CpuId, u32 DevId) } #endif + /** + * If destination device is PL and load address is not configured, + * don't consider this as error as we will use temp load address + * to load PL bitstream + */ + if ((DevId == XIH_PH_ATTRB_DEST_DEVICE_PL) && + (Address == XFSBL_DUMMY_PL_ADDR)) + { + goto END; + } /** * Not a valid address diff --git a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_partition_load.c b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_partition_load.c index 79c5a869..922b56b8 100644 --- a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_partition_load.c +++ b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_partition_load.c @@ -816,7 +816,7 @@ static u32 XFsbl_PartitionCopy(XFsblPs * FsblInstancePtr, u32 PartitionNum) { #ifdef XFSBL_BS - if (LoadAddress == 0U) + if (LoadAddress == XFSBL_DUMMY_PL_ADDR) { LoadAddress = XFSBL_DDR_TEMP_ADDRESS; }