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