diff options
author | Haojian Zhuang <haojian.zhuang@linaro.org> | 2017-10-18 19:52:20 +0800 |
---|---|---|
committer | Haojian Zhuang <haojian.zhuang@linaro.org> | 2017-10-18 20:02:12 +0800 |
commit | f715bfdd6c3f45ffcd38e5f7b095cb4cfcb0dc23 (patch) | |
tree | 7e32cbb5a814e26f6150b666540681cbb9e5f98a /plat/hisilicon/hikey | |
parent | 38f5d3f3404d239e5040ff08ce9bd1158273df93 (diff) | |
download | arm-trusted-firmware-f715bfdd6c3f45ffcd38e5f7b095cb4cfcb0dc23.tar.gz |
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>
Diffstat (limited to 'plat/hisilicon/hikey')
-rw-r--r-- | plat/hisilicon/hikey/hikey_bl31_setup.c | 17 | ||||
-rw-r--r-- | plat/hisilicon/hikey/include/hi6220.h | 7 |
2 files changed, 24 insertions, 0 deletions
diff --git a/plat/hisilicon/hikey/hikey_bl31_setup.c b/plat/hisilicon/hikey/hikey_bl31_setup.c index c592fc78..412b5935 100644 --- a/plat/hisilicon/hikey/hikey_bl31_setup.c +++ b/plat/hisilicon/hikey/hikey_bl31_setup.c @@ -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(); } diff --git a/plat/hisilicon/hikey/include/hi6220.h b/plat/hisilicon/hikey/include/hi6220.h index a9c408de..fe7720a6 100644 --- a/plat/hisilicon/hikey/include/hi6220.h +++ b/plat/hisilicon/hikey/include/hi6220.h @@ -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 |