From c33473d527ee5354abc3d169f68395179074f5df Mon Sep 17 00:00:00 2001
From: Varun Wadekar <vwadekar@nvidia.com>
Date: Mon, 19 Mar 2018 15:19:28 -0700
Subject: [PATCH] Tegra210: skip past sc7entry-fw signature header

This patch skips past the signature header added to the sc7entry-fw
binary by the previous level bootloader. Currently, the size of
the header is 1KB, so adjust the start address and the binary size
at the time of copy.

Change-Id: Id0494548009749035846d54df417a960c640c8f9
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
---
 plat/nvidia/tegra/include/t210/tegra_def.h      | 5 +++++
 plat/nvidia/tegra/soc/t210/plat_psci_handlers.c | 4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/plat/nvidia/tegra/include/t210/tegra_def.h b/plat/nvidia/tegra/include/t210/tegra_def.h
index 0f24f324c..7e3789c65 100644
--- a/plat/nvidia/tegra/include/t210/tegra_def.h
+++ b/plat/nvidia/tegra/include/t210/tegra_def.h
@@ -37,6 +37,11 @@
 #define PLAT_PHY_ADDR_SPACE_SIZE	(ULL(1) << 35)
 #define PLAT_VIRT_ADDR_SPACE_SIZE	(ULL(1) << 35)
 
+/*******************************************************************************
+ * SC7 entry firmware's header size
+ ******************************************************************************/
+#define SC7ENTRY_FW_HEADER_SIZE_BYTES	U(0x400)
+
 /*******************************************************************************
  * iRAM memory constants
  ******************************************************************************/
diff --git a/plat/nvidia/tegra/soc/t210/plat_psci_handlers.c b/plat/nvidia/tegra/soc/t210/plat_psci_handlers.c
index b6a0b69dc..d18a987b1 100644
--- a/plat/nvidia/tegra/soc/t210/plat_psci_handlers.c
+++ b/plat/nvidia/tegra/soc/t210/plat_psci_handlers.c
@@ -381,8 +381,8 @@ int tegra_soc_pwr_domain_power_down_wfi(const psci_power_state_t *target_state)
 
 			/* Copy the firmware to BPMP's internal RAM */
 			(void)memcpy((void *)(uintptr_t)TEGRA_IRAM_BASE,
-				(const void *)plat_params->sc7entry_fw_base,
-				plat_params->sc7entry_fw_size);
+				(const void *)(plat_params->sc7entry_fw_base + SC7ENTRY_FW_HEADER_SIZE_BYTES),
+				plat_params->sc7entry_fw_size - SC7ENTRY_FW_HEADER_SIZE_BYTES);
 
 			/* Power on the BPMP and execute from IRAM base */
 			tegra_fc_bpmp_on(TEGRA_IRAM_BASE);
-- 
GitLab