diff options
Diffstat (limited to 'core/drivers/imx_wdog.c')
-rw-r--r-- | core/drivers/imx_wdog.c | 23 |
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); |