aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorPeng Fan <peng.fan@nxp.com>2017-12-11 13:18:36 +0800
committerSilvano di Ninno <silvano.dininno@nxp.com>2018-08-02 15:37:22 +0200
commitc3add908eee3375a9856deefd468d0a12c8aaa57 (patch)
tree3524a146f10ceddfb5022baa7a3345eda1699939 /core
parent2737e479a9352be8f0e9eacdc9ab26323a525810 (diff)
driver: imx_wdog: update wdog support for i.MX 7ulp SoC
update watchdog support Signed-off-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'core')
-rw-r--r--core/drivers/imx_wdog.c48
-rw-r--r--core/include/drivers/imx_wdog.h42
2 files changed, 44 insertions, 46 deletions
diff --git a/core/drivers/imx_wdog.c b/core/drivers/imx_wdog.c
index 44df9c00..2319a0c2 100644
--- a/core/drivers/imx_wdog.c
+++ b/core/drivers/imx_wdog.c
@@ -1,30 +1,8 @@
// SPDX-License-Identifier: BSD-2-Clause
/*
- * Copyright 2017 NXP
+ * Copyright 2017-2018 NXP
*
* Peng Fan <peng.fan@nxp.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
*/
#include <assert.h>
@@ -53,6 +31,17 @@ void imx_wdog_restart(void)
panic();
}
+#ifdef CFG_MX7ULP
+ val = read32(wdog_base + WDOG_CS);
+
+ write32(UNLOCK, wdog_base + WDOG_CNT);
+ /* Enable wdog */
+ write32(val | WDOG_CS_EN, wdog_base + WDOG_CS);
+
+ write32(UNLOCK, wdog_base + WDOG_CNT);
+ write32(1000, wdog_base + WDOG_TOVAL);
+ write32(REFRESH, wdog_base + WDOG_CNT);
+#else
if (ext_reset)
val = 0x14;
else
@@ -70,7 +59,7 @@ void imx_wdog_restart(void)
write16(val, wdog_base + WDT_WCR);
write16(val, wdog_base + WDT_WCR);
-
+#endif
while (1)
;
}
@@ -95,6 +84,17 @@ static TEE_Result imx_wdog_base(vaddr_t *wdog_vbase)
"/soc/aips-bus@30000000/wdog@302a0000",
"/soc/aips-bus@30000000/wdog@302b0000",
};
+#elif defined CFG_MX7ULP
+ static const char * const wdog_path[] = {
+ "/ahb-bridge0@40000000/wdog@403D0000",
+ "/ahb-bridge0@40000000/wdog@40430000",
+ };
+#elif defined CFG_MX6SX
+ static const char * const wdog_path[] = {
+ "/soc/aips-bus@02000000/wdog@020bc000",
+ "/soc/aips-bus@02000000/wdog@020c0000",
+ "/soc/aips-bus@02200000/wdog@02288000",
+ };
#else
static const char * const wdog_path[] = {
"/soc/aips-bus@02000000/wdog@020bc000",
diff --git a/core/include/drivers/imx_wdog.h b/core/include/drivers/imx_wdog.h
index 34a88a77..cebd647d 100644
--- a/core/include/drivers/imx_wdog.h
+++ b/core/include/drivers/imx_wdog.h
@@ -1,28 +1,7 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
- * Copyright 2017 NXP
+ * Copyright 2017-2018 NXP
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __IMX_WDOG_H
@@ -40,6 +19,25 @@
#define WDT_SEQ1 0x5555
#define WDT_SEQ2 0xAAAA
+/* 7ULP */
+#define WDOG_CNT 0x4
+#define WDOG_TOVAL 0x8
+
+#define REFRESH_SEQ0 0xA602
+#define REFRESH_SEQ1 0xB480
+#define REFRESH ((REFRESH_SEQ1 << 16) | (REFRESH_SEQ0))
+
+#define UNLOCK_SEQ0 0xC520
+#define UNLOCK_SEQ1 0xD928
+#define UNLOCK ((UNLOCK_SEQ1 << 16) | (UNLOCK_SEQ0))
+
+#define WDOG_CS 0x0
+#define WDOG_CS_CMD32EN BIT(13)
+#define WDOG_CS_ULK BIT(11)
+#define WDOG_CS_RCS BIT(10)
+#define WDOG_CS_EN BIT(7)
+#define WDOG_CS_UPDATE BIT(5)
+
/* Exposed for psci reset */
void imx_wdog_restart(void);
#endif