From bc5a86f767471e34a3410c6ddefe338086222238 Mon Sep 17 00:00:00 2001 From: Steven Kao Date: Tue, 25 Jul 2017 11:29:46 +0800 Subject: [PATCH] Tegra: smmu: add a hook to get number of devices This patch adds a hook to get the number of smmu devices and removes the NUM_SMMU_DEVICES macro. Change-Id: Ia8dba7e9304224976b5da688b9e4b5438f11cc41 Signed-off-by: Steven Kao --- plat/nvidia/tegra/common/drivers/smmu/smmu.c | 4 +++- plat/nvidia/tegra/include/drivers/smmu.h | 1 + plat/nvidia/tegra/soc/t186/plat_smmu.c | 10 ++++++++++ plat/nvidia/tegra/soc/t186/platform_t186.mk | 3 --- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/plat/nvidia/tegra/common/drivers/smmu/smmu.c b/plat/nvidia/tegra/common/drivers/smmu/smmu.c index 0bda5e689..2186deaa0 100644 --- a/plat/nvidia/tegra/common/drivers/smmu/smmu.c +++ b/plat/nvidia/tegra/common/drivers/smmu/smmu.c @@ -137,8 +137,10 @@ void tegra_smmu_save_context(uint64_t smmu_ctx_addr) void tegra_smmu_init(void) { uint32_t val, cb_idx, smmu_id, ctx_base; + uint32_t smmu_counter = plat_get_num_smmu_devices(); + + for (smmu_id = 0UL; smmu_id < smmu_counter; smmu_id++) { - for (smmu_id = 0; smmu_id < NUM_SMMU_DEVICES; smmu_id++) { /* Program the SMMU pagesize and reset CACHE_LOCK bit */ val = tegra_smmu_read_32(smmu_id, SMMU_GSR0_SECURE_ACR); val |= SMMU_GSR0_PGSIZE_64K; diff --git a/plat/nvidia/tegra/include/drivers/smmu.h b/plat/nvidia/tegra/include/drivers/smmu.h index 1d04ef0bf..0f38e3d59 100644 --- a/plat/nvidia/tegra/include/drivers/smmu.h +++ b/plat/nvidia/tegra/include/drivers/smmu.h @@ -705,5 +705,6 @@ typedef struct smmu_regs { void tegra_smmu_init(void); void tegra_smmu_save_context(uint64_t smmu_ctx_addr); smmu_regs_t *plat_get_smmu_ctx(void); +uint32_t plat_get_num_smmu_devices(void); #endif /* SMMU_H */ diff --git a/plat/nvidia/tegra/soc/t186/plat_smmu.c b/plat/nvidia/tegra/soc/t186/plat_smmu.c index 2751fcbdd..b9541e830 100644 --- a/plat/nvidia/tegra/soc/t186/plat_smmu.c +++ b/plat/nvidia/tegra/soc/t186/plat_smmu.c @@ -9,6 +9,8 @@ #include #include +#define MAX_NUM_SMMU_DEVICES U(1) + /******************************************************************************* * Array to hold SMMU context for Tegra186 ******************************************************************************/ @@ -309,3 +311,11 @@ smmu_regs_t *plat_get_smmu_ctx(void) return tegra186_smmu_context; } + +/******************************************************************************* + * Handler to return the support SMMU devices number + ******************************************************************************/ +uint32_t plat_get_num_smmu_devices(void) +{ + return MAX_NUM_SMMU_DEVICES; +} diff --git a/plat/nvidia/tegra/soc/t186/platform_t186.mk b/plat/nvidia/tegra/soc/t186/platform_t186.mk index 31f015477..9dae8cd67 100644 --- a/plat/nvidia/tegra/soc/t186/platform_t186.mk +++ b/plat/nvidia/tegra/soc/t186/platform_t186.mk @@ -20,9 +20,6 @@ $(eval $(call add_define,ENABLE_CHIP_VERIFICATION_HARNESS)) ENABLE_SMMU_DEVICE := 1 $(eval $(call add_define,ENABLE_SMMU_DEVICE)) -NUM_SMMU_DEVICES := 1 -$(eval $(call add_define,NUM_SMMU_DEVICES)) - RESET_TO_BL31 := 1 PROGRAMMABLE_RESET_ADDRESS := 1