aboutsummaryrefslogtreecommitdiff
path: root/core/drivers/imx_wdog.c
diff options
context:
space:
mode:
Diffstat (limited to 'core/drivers/imx_wdog.c')
-rw-r--r--core/drivers/imx_wdog.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/core/drivers/imx_wdog.c b/core/drivers/imx_wdog.c
index fc8fa2c8..cb9b2bfa 100644
--- a/core/drivers/imx_wdog.c
+++ b/core/drivers/imx_wdog.c
@@ -34,7 +34,9 @@
#include <kernel/dt.h>
#include <kernel/generic_boot.h>
#include <kernel/panic.h>
+#ifdef CFG_DT
#include <libfdt.h>
+#endif
#include <mm/core_mmu.h>
#include <mm/core_memprot.h>
#include <util.h>
@@ -74,7 +76,8 @@ void imx_wdog_restart(void)
}
KEEP_PAGER(imx_wdog_restart);
-static TEE_Result imx_wdog_init(void)
+#ifdef CFG_DT
+static TEE_Result imx_wdog_base(vaddr_t *wdog_vbase)
{
enum teecore_memtypes mtype;
void *fdt;
@@ -155,8 +158,24 @@ static TEE_Result imx_wdog_init(void)
return TEE_ERROR_GENERIC;
}
- wdog_base = vbase;
+ *wdog_vbase = vbase;
return TEE_SUCCESS;
}
+#else
+register_phys_mem(MEM_AREA_IO_SEC, WDOG_BASE, CORE_MMU_DEVICE_SIZE);
+static TEE_Result imx_wdog_base(vaddr_t *wdog_vbase)
+{
+ *wdog_vbase = (vaddr_t)phys_to_virt(WDOG_BASE, MEM_AREA_IO_SEC);
+ return TEE_SUCCESS;
+}
+#endif
+
+static TEE_Result imx_wdog_init(void)
+{
+#ifdef PLATFORM_FLAVOR_mx7dsabresd
+ ext_reset = true;
+#endif
+ return imx_wdog_base(&wdog_base);
+}
driver_init(imx_wdog_init);