1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef IMX_WDOG_H 8*91f16700Schasinglulu #define IMX_WDOG_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <stdint.h> 11*91f16700Schasinglulu 12*91f16700Schasinglulu #include <arch.h> 13*91f16700Schasinglulu 14*91f16700Schasinglulu struct wdog_regs { 15*91f16700Schasinglulu uint16_t wcr; 16*91f16700Schasinglulu uint16_t wsr; 17*91f16700Schasinglulu uint16_t wrsr; 18*91f16700Schasinglulu uint16_t wicr; 19*91f16700Schasinglulu uint16_t wmcr; 20*91f16700Schasinglulu }; 21*91f16700Schasinglulu 22*91f16700Schasinglulu /* WCR bits */ 23*91f16700Schasinglulu #define WCR_WDZST BIT(0) 24*91f16700Schasinglulu #define WCR_WDBG BIT(1) 25*91f16700Schasinglulu #define WCR_WDE BIT(2) 26*91f16700Schasinglulu #define WCR_WDT BIT(3) 27*91f16700Schasinglulu #define WCR_SRS BIT(4) 28*91f16700Schasinglulu #define WCR_WDA BIT(5) 29*91f16700Schasinglulu #define WCR_SRE BIT(6) 30*91f16700Schasinglulu #define WCR_WDW BIT(7) 31*91f16700Schasinglulu #define WCR_WT(x) ((x) << 8) 32*91f16700Schasinglulu 33*91f16700Schasinglulu /* WSR bits */ 34*91f16700Schasinglulu #define WSR_FIRST 0x5555 35*91f16700Schasinglulu #define WSR_SECOND 0xAAAA 36*91f16700Schasinglulu 37*91f16700Schasinglulu /* WRSR bits */ 38*91f16700Schasinglulu #define WRSR_SFTW BIT(0) 39*91f16700Schasinglulu #define WRSR_TOUT BIT(1) 40*91f16700Schasinglulu #define WRSR_POR BIT(4) 41*91f16700Schasinglulu 42*91f16700Schasinglulu /* WICR bits */ 43*91f16700Schasinglulu static inline int wicr_calc_wict(int sec, int half_sec) 44*91f16700Schasinglulu { 45*91f16700Schasinglulu int wict_bits; 46*91f16700Schasinglulu 47*91f16700Schasinglulu /* Represents WICR bits 7 - 0 */ 48*91f16700Schasinglulu wict_bits = ((sec << 1) | (half_sec ? 1 : 0)); 49*91f16700Schasinglulu 50*91f16700Schasinglulu return wict_bits; 51*91f16700Schasinglulu } 52*91f16700Schasinglulu 53*91f16700Schasinglulu #define WICR_WTIS BIT(14) 54*91f16700Schasinglulu #define WICR_WIE BIT(15) 55*91f16700Schasinglulu 56*91f16700Schasinglulu /* WMCR bits */ 57*91f16700Schasinglulu #define WMCR_PDE BIT(0) 58*91f16700Schasinglulu 59*91f16700Schasinglulu /* External facing API */ 60*91f16700Schasinglulu void imx_wdog_init(void); 61*91f16700Schasinglulu 62*91f16700Schasinglulu #endif /* IMX_WDOG_H */ 63