xref: /rk3399_ARM-atf/plat/imx/common/include/imx_wdog.h (revision b42ceebb40ae57ea18e77e2270fb131fa981c906)
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