diff options
Diffstat (limited to 'drivers/marvell/mochi/cp110_setup.c')
-rw-r--r-- | drivers/marvell/mochi/cp110_setup.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/marvell/mochi/cp110_setup.c b/drivers/marvell/mochi/cp110_setup.c index 0fa049764..b9d1ec39f 100644 --- a/drivers/marvell/mochi/cp110_setup.c +++ b/drivers/marvell/mochi/cp110_setup.c @@ -12,6 +12,7 @@ #include <drivers/marvell/amb_adec.h> #include <drivers/marvell/iob.h> #include <drivers/marvell/mochi/cp110_setup.h> +#include <drivers/rambus/trng_ip_76.h> #include <plat_marvell.h> @@ -105,6 +106,11 @@ #define MVEBU_RTC_READ_OUTPUT_DELAY_MASK 0xFFFF #define MVEBU_RTC_READ_OUTPUT_DELAY_DEFAULT 0x1F +/******************************************************************************* + * TRNG Configuration + ******************************************************************************/ +#define MVEBU_TRNG_BASE (0x760000) + enum axi_attr { AXI_ADUNIT_ATTR = 0, AXI_COMUNIT_ATTR, @@ -378,6 +384,20 @@ static void cp110_amb_adec_init(uintptr_t base) init_amb_adec(base); } +static void cp110_trng_init(uintptr_t base) +{ + static bool done; + int ret; + + if (!done) { + ret = eip76_rng_probe(base + MVEBU_TRNG_BASE); + if (ret != 0) { + ERROR("Failed to init TRNG @ 0x%lx\n", base); + return; + } + done = true; + } +} void cp110_init(uintptr_t cp110_base, uint32_t stream_id) { INFO("%s: Initialize CPx - base = %lx\n", __func__, cp110_base); @@ -405,6 +425,9 @@ void cp110_init(uintptr_t cp110_base, uint32_t stream_id) /* Reset RTC if needed */ cp110_rtc_init(cp110_base); + + /* TRNG init - for CP0 only */ + cp110_trng_init(cp110_base); } /* Do the minimal setup required to configure the CP in BLE */ |