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