From 71d776930372886bccc1781ff3274d1b81c310a4 Mon Sep 17 00:00:00 2001 From: Sarat Chand Savitala Date: Fri, 14 Aug 2015 17:08:52 +0530 Subject: [PATCH] sw_apps:zynqmp_fsbl: Change of invalid load address value for PL bitstream When load address is not mentioned for PL bitstream, bootgen now makes this as 0xFFFFFFFF to indicate it is invalid. Hence, FSBL uses default address to load bitstream when load address from bootgen is 0xFFFFFFFF. Signed-off-by: Sarat Chand Savitala Acked-by: Krishna Chaitanya Patakamuri --- lib/sw_apps/zynqmp_fsbl/src/xfsbl_hw.h | 7 +++++++ lib/sw_apps/zynqmp_fsbl/src/xfsbl_image_header.c | 10 ++++++++++ lib/sw_apps/zynqmp_fsbl/src/xfsbl_partition_load.c | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) 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; }