mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-31 22:39:08 +09:00
![Sumit Garg](/assets/img/avatar_default.png)
As part of Chain of Trust for Secure boot, the SPL U-Boot will validate the next level U-boot image. Add a new function spl_validate_uboot to perform the validation. Enable hardware crypto operations in SPL using SEC block. In case of Secure Boot, PAMU is not bypassed. For allowing SEC block access to CPC configured as SRAM, configure PAMU. Reviewed-by: Ruchika Gupta <ruchika.gupta@nxp.com> Signed-off-by: Aneesh Bansal <aneesh.bansal@nxp.com> Signed-off-by: Sumit Garg <sumit.garg@nxp.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: York Sun <york.sun@nxp.com>
64 lines
1.5 KiB
C
64 lines
1.5 KiB
C
/*
|
|
* Copyright 2012-2016 Freescale Semiconductor, Inc.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <asm/fsl_pamu.h>
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
void construct_pamu_addr_table(struct pamu_addr_tbl *tbl, int *num_entries)
|
|
{
|
|
int i = 0;
|
|
int j;
|
|
|
|
tbl->start_addr[i] =
|
|
(uint64_t)virt_to_phys((void *)CONFIG_SYS_SDRAM_BASE);
|
|
tbl->size[i] = (phys_size_t)(min(gd->ram_size, CONFIG_MAX_MEM_MAPPED));
|
|
tbl->end_addr[i] = tbl->start_addr[i] + tbl->size[i] - 1;
|
|
|
|
i++;
|
|
#ifdef CONFIG_SYS_FLASH_BASE_PHYS
|
|
tbl->start_addr[i] =
|
|
(uint64_t)virt_to_phys((void *)CONFIG_SYS_FLASH_BASE_PHYS);
|
|
tbl->size[i] = 256 * 1024 * 1024; /* 256MB flash */
|
|
tbl->end_addr[i] = tbl->start_addr[i] + tbl->size[i] - 1;
|
|
|
|
i++;
|
|
#endif
|
|
#if (defined(CONFIG_SPL_BUILD) && (CONFIG_SYS_INIT_L3_VADDR))
|
|
tbl->start_addr[i] =
|
|
(uint64_t)virt_to_phys((void *)CONFIG_SYS_INIT_L3_VADDR);
|
|
tbl->size[i] = 256 * 1024; /* 256K CPC flash */
|
|
tbl->end_addr[i] = tbl->start_addr[i] + tbl->size[i] - 1;
|
|
|
|
i++;
|
|
#endif
|
|
debug("PAMU address\t\t\tsize\n");
|
|
for (j = 0; j < i ; j++)
|
|
debug("%llx \t\t\t%llx\n", tbl->start_addr[j], tbl->size[j]);
|
|
|
|
*num_entries = i;
|
|
}
|
|
|
|
int sec_config_pamu_table(uint32_t liodn_ns, uint32_t liodn_s)
|
|
{
|
|
struct pamu_addr_tbl tbl;
|
|
int num_entries = 0;
|
|
int ret = 0;
|
|
|
|
construct_pamu_addr_table(&tbl, &num_entries);
|
|
|
|
ret = config_pamu(&tbl, num_entries, liodn_ns);
|
|
if (ret)
|
|
return ret;
|
|
|
|
ret = config_pamu(&tbl, num_entries, liodn_s);
|
|
if (ret)
|
|
return ret;
|
|
|
|
return ret;
|
|
}
|