mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 17:44:19 +00:00
feat(fvp): add platform hooks for DRTM DMA protection
Added necessary platform hooks for DRTM DMA protection. These calls will be used by the subsequent DRTM implementation patches. DRTM platform API declarations have been listed down in a separate header file. Signed-off-by: Manish V Badarkhe <manish.badarkhe@arm.com> Signed-off-by: Lucian Paul-Trifu <lucian.paultrifu@gmail.com> Change-Id: Ib9726d1d3570800241bde702ee7006a64f1739ec
This commit is contained in:
parent
6f70cce625
commit
d72c486b52
4 changed files with 85 additions and 1 deletions
17
include/plat/common/plat_drtm.h
Normal file
17
include/plat/common/plat_drtm.h
Normal file
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef PLAT_DRTM_H
|
||||
#define PLAT_DRTM_H
|
||||
|
||||
/* platform-specific DMA protection functions */
|
||||
bool plat_has_non_host_platforms(void);
|
||||
bool plat_has_unmanaged_dma_peripherals(void);
|
||||
unsigned int plat_get_total_smmus(void);
|
||||
void plat_enumerate_smmus(const uintptr_t **smmus_out,
|
||||
size_t *smmu_count_out);
|
||||
|
||||
#endif /* PLAT_DRTM_H */
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2022, ARM Limited and Contributors. All rights reserved.
|
||||
* Copyright (c) 2013-2022, Arm Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -20,6 +20,9 @@
|
|||
#include "plat_trng.h"
|
||||
#endif
|
||||
#include <drivers/fwu/fwu_metadata.h>
|
||||
#if DRTM_SUPPORT
|
||||
#include "plat_drtm.h"
|
||||
#endif /* DRTM_SUPPORT */
|
||||
|
||||
/*******************************************************************************
|
||||
* Forward declarations
|
||||
|
|
60
plat/arm/board/fvp/fvp_drtm_dma_prot.c
Normal file
60
plat/arm/board/fvp/fvp_drtm_dma_prot.c
Normal file
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include <drivers/arm/smmu_v3.h>
|
||||
#include <lib/utils_def.h>
|
||||
#include <plat/arm/common/arm_config.h>
|
||||
#include <plat/common/platform.h>
|
||||
|
||||
#include <platform_def.h>
|
||||
|
||||
/**
|
||||
* Array mentioning number of SMMUs supported by FVP
|
||||
*/
|
||||
static const uintptr_t fvp_smmus[] = {
|
||||
PLAT_FVP_SMMUV3_BASE,
|
||||
};
|
||||
|
||||
bool plat_has_non_host_platforms(void)
|
||||
{
|
||||
/* FVP base platforms typically have GPU, as per FVP Reference guide */
|
||||
return true;
|
||||
}
|
||||
|
||||
bool plat_has_unmanaged_dma_peripherals(void)
|
||||
{
|
||||
/*
|
||||
* FVP Reference guide does not show devices that are described as
|
||||
* DMA-capable but not managed by an SMMU in the FVP documentation.
|
||||
* However, the SMMU seems to have only been introduced in the RevC
|
||||
* revision.
|
||||
*/
|
||||
return (arm_config.flags & ARM_CONFIG_FVP_HAS_SMMUV3) == 0;
|
||||
}
|
||||
|
||||
unsigned int plat_get_total_smmus(void)
|
||||
{
|
||||
if ((arm_config.flags & ARM_CONFIG_FVP_HAS_SMMUV3) != 0U) {
|
||||
return ARRAY_SIZE(fvp_smmus);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void plat_enumerate_smmus(const uintptr_t **smmus_out,
|
||||
size_t *smmu_count_out)
|
||||
{
|
||||
if ((arm_config.flags & ARM_CONFIG_FVP_HAS_SMMUV3) != 0U) {
|
||||
*smmus_out = fvp_smmus;
|
||||
*smmu_count_out = ARRAY_SIZE(fvp_smmus);
|
||||
} else {
|
||||
*smmus_out = NULL;
|
||||
*smmu_count_out = 0;
|
||||
}
|
||||
}
|
|
@ -413,6 +413,10 @@ endif
|
|||
|
||||
endif
|
||||
|
||||
ifeq (${DRTM_SUPPORT}, 1)
|
||||
BL31_SOURCES += plat/arm/board/fvp/fvp_drtm_dma_prot.c
|
||||
endif
|
||||
|
||||
ifeq (${TRUSTED_BOARD_BOOT}, 1)
|
||||
BL1_SOURCES += plat/arm/board/fvp/fvp_trusted_boot.c
|
||||
BL2_SOURCES += plat/arm/board/fvp/fvp_trusted_boot.c
|
||||
|
|
Loading…
Add table
Reference in a new issue