#include <string.h>
#include <tegra_def.h>
#include <tegra_private.h>
+#include <utils.h>
#include <utils_def.h>
/* length of Trusty's input parameters (in bytes) */
#define TRUSTY_PARAMS_LEN_BYTES (4096*2)
extern void memcpy16(void *dest, const void *src, unsigned int length);
-extern void zeromem16(void *mem, unsigned int length);
/*******************************************************************************
* Declarations of linker defined symbols which will help us find the layout
; /* do nothing */
}
-bl31_params_t *plat_get_bl31_params(void)
+struct tegra_bl31_params *plat_get_bl31_params(void)
{
return NULL;
}
* Perform any BL31 specific platform actions. Populate the BL33 and BL32 image
* info.
******************************************************************************/
-void bl31_early_platform_setup(bl31_params_t *from_bl2,
- void *plat_params_from_bl2)
+void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1,
+ u_register_t arg2, u_register_t arg3)
{
- plat_params_from_bl2_t *plat_params =
- (plat_params_from_bl2_t *)plat_params_from_bl2;
+ struct tegra_bl31_params *arg_from_bl2 = (struct tegra_bl31_params *) arg0;
+ plat_params_from_bl2_t *plat_params = (plat_params_from_bl2_t *)arg1;
image_info_t bl32_img_info = { {0} };
uint64_t tzdram_start, tzdram_end, bl32_start, bl32_end;
* might use custom ways to get arguments, so provide handlers which
* they can override.
*/
- if (from_bl2 == NULL)
- from_bl2 = plat_get_bl31_params();
+ if (arg_from_bl2 == NULL)
+ arg_from_bl2 = plat_get_bl31_params();
if (plat_params == NULL)
plat_params = plat_get_bl31_plat_params();
* Copy BL3-3, BL3-2 entry point information.
* They are stored in Secure RAM, in BL2's address space.
*/
- assert(from_bl2);
- assert(from_bl2->bl33_ep_info);
- bl33_image_ep_info = *from_bl2->bl33_ep_info;
-
- if (from_bl2->bl32_ep_info) {
- bl32_image_ep_info = *from_bl2->bl32_ep_info;
- bl32_mem_size = from_bl2->bl32_ep_info->args.arg0;
- bl32_boot_params = from_bl2->bl32_ep_info->args.arg2;
+ assert(arg_from_bl2);
+ assert(arg_from_bl2->bl33_ep_info);
+ bl33_image_ep_info = *arg_from_bl2->bl33_ep_info;
+
+ if (arg_from_bl2->bl32_ep_info) {
+ bl32_image_ep_info = *arg_from_bl2->bl32_ep_info;
+ bl32_mem_size = arg_from_bl2->bl32_ep_info->args.arg0;
+ bl32_boot_params = arg_from_bl2->bl32_ep_info->args.arg2;
}
/*
* inside the TZDRAM. We check the BL32 image info to find out
* the base/PC values and relocate the image if necessary.
*/
- if (from_bl2->bl32_image_info) {
+ if (arg_from_bl2->bl32_image_info) {
- bl32_img_info = *from_bl2->bl32_image_info;
+ bl32_img_info = *arg_from_bl2->bl32_image_info;
/* Relocate BL32 if it resides outside of the TZDRAM */
tzdram_start = plat_bl31_params_from_bl2.tzdram_base;
bl32_img_info.image_size);
/* clean up non-secure intermediate buffer */
- zeromem16((void *)(uintptr_t)bl32_start,
+ zeromem((void *)(uintptr_t)bl32_start,
bl32_img_info.image_size);
}
}
*/
#include <arch_helpers.h>
-#include <arm_gic.h>
#include <assert.h>
#include <bl_common.h>
#include <debug.h>
-#include <gic_v2.h>
#include <interrupt_mgmt.h>
#include <platform.h>
#include <stdint.h>
* both normal and secure worlds are using ARM GICv2. This parameter
* will be used when the secure world starts using GICv3.
*/
-#if ARM_GIC_ARCH == 2
return gicv2_interrupt_type_to_line(TEGRA_GICC_BASE, type);
-#else
-#error "Invalid ARM GIC architecture version specified for platform port"
-#endif /* ARM_GIC_ARCH */
}
-#if ARM_GIC_ARCH == 2
/*******************************************************************************
* This function returns the type of the highest priority pending interrupt at
* the GIC cpu interface. INTR_TYPE_INVAL is returned when there is no
return ret;
}
-#else
-#error "Invalid ARM GIC architecture version specified for platform port"
-#endif /* ARM_GIC_ARCH */
-
uint32_t plat_ic_get_pending_interrupt_id(void)
{
return tegra_gic_get_pending_interrupt_id();
uint32_t type;
} irq_sec_cfg_t;
+/*******************************************************************************
+ * Struct describing parameters passed to bl31
+ ******************************************************************************/
+struct tegra_bl31_params {
+ param_header_t h;
+ image_info_t *bl31_image_info;
+ entry_point_info_t *bl32_ep_info;
+ image_info_t *bl32_image_info;
+ entry_point_info_t *bl33_ep_info;
+ image_info_t *bl33_image_info;
+};
+
/* Declarations for plat_psci_handlers.c */
int32_t tegra_soc_validate_power_state(unsigned int power_state,
psci_power_state_t *req_state);
const mmap_region_t *plat_get_mmio_map(void);
uint32_t plat_get_console_from_id(int id);
void plat_gic_setup(void);
-bl31_params_t *plat_get_bl31_params(void);
+struct tegra_bl31_params *plat_get_bl31_params(void);
plat_params_from_bl2_t *plat_get_bl31_plat_params(void);
/* Declarations for plat_secondary.c */