HiKey: init EDMA controller with non secure mode

Init EDMA controller with non secure mode. A lot of peripherals are
depend on EDMA controller. But EDMA controller is in secure mode
by default. And this operation has to be executed in secure mode.

Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
This commit is contained in:
Haojian Zhuang 2017-10-18 19:52:20 +08:00
parent 38f5d3f340
commit f715bfdd6c
2 changed files with 24 additions and 0 deletions

View File

@ -16,6 +16,7 @@
#include <hi6220.h>
#include <hisi_ipc.h>
#include <hisi_pwrc.h>
#include <mmio.h>
#include <platform_def.h>
#include "hikey_def.h"
@ -152,6 +153,20 @@ void bl31_plat_arch_setup(void)
BL31_COHERENT_RAM_LIMIT);
}
/* Initialize EDMAC controller with non-secure mode. */
static void hikey_edma_init(void)
{
int i;
uint32_t non_secure;
non_secure = EDMAC_SEC_CTRL_INTR_SEC | EDMAC_SEC_CTRL_GLOBAL_SEC;
mmio_write_32(EDMAC_SEC_CTRL, non_secure);
for (i = 0; i < EDMAC_CHANNEL_NUMS; i++) {
mmio_write_32(EDMAC_AXI_CONF(i), (1 << 6) | (1 << 18));
}
}
void bl31_platform_setup(void)
{
/* Initialize the GIC driver, cpu and distributor interfaces */
@ -160,6 +175,8 @@ void bl31_platform_setup(void)
gicv2_pcpu_distif_init();
gicv2_cpuif_enable();
hikey_edma_init();
hisi_ipc_init();
hisi_pwrc_setup();
}

View File

@ -42,6 +42,13 @@
#define DWUSB_BASE 0xF72C0000
#define EDMAC_BASE 0xf7370000
#define EDMAC_SEC_CTRL (EDMAC_BASE + 0x694)
#define EDMAC_AXI_CONF(x) (EDMAC_BASE + 0x820 + (x << 6))
#define EDMAC_SEC_CTRL_INTR_SEC (1 << 1)
#define EDMAC_SEC_CTRL_GLOBAL_SEC (1 << 0)
#define EDMAC_CHANNEL_NUMS 16
#define PMUSSI_BASE 0xF8000000
#define SP804_TIMER0_BASE 0xF8008000