diff options
author | Peng Fan <peng.fan@nxp.com> | 2017-12-11 13:18:36 +0800 |
---|---|---|
committer | Silvano di Ninno <silvano.dininno@nxp.com> | 2018-08-02 15:37:22 +0200 |
commit | c3add908eee3375a9856deefd468d0a12c8aaa57 (patch) | |
tree | 3524a146f10ceddfb5022baa7a3345eda1699939 /core | |
parent | 2737e479a9352be8f0e9eacdc9ab26323a525810 (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.c | 48 | ||||
-rw-r--r-- | core/include/drivers/imx_wdog.h | 42 |
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 |