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