xref: /optee_os/core/include/drivers/atmel_shdwc.h (revision 5d5d7d0b1c038a6836be9f0b38585f5aa6a4dd01)
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright (c) 2015 Atmel Corporation,
4  *                    Nicolas Ferre <nicolas.ferre@atmel.com>
5  * Copyright (c) 2021, Microchip
6  */
7 
8 #ifndef __DRIVERS_ATMEL_SHDWC_H
9 #define __DRIVERS_ATMEL_SHDWC_H
10 
11 #include <compiler.h>
12 #include <stdbool.h>
13 #include <stdint.h>
14 #include <util.h>
15 
16 /* Shut Down Control Register */
17 #define AT91_SHDW_CR		0x00
18 /* Shut Down command */
19 #define AT91_SHDW_SHDW		BIT(0)
20 /* KEY Password */
21 #define AT91_SHDW_KEY		SHIFT_U32(0xa5UL, 24)
22 
23 /* Shut Down Mode Register */
24 #define AT91_SHDW_MR		0x04
25 #define AT91_SHDW_WKUPDBC_SHIFT	24
26 #define AT91_SHDW_WKUPDBC_MASK	GENMASK_32(26, 24)
27 #define AT91_SHDW_WKUPDBC(x)	(SHIFT_U32((x), AT91_SHDW_WKUPDBC_SHIFT) & \
28 				 AT91_SHDW_WKUPDBC_MASK)
29 #define AT91_SHDW_RTCWKEN	BIT32(17)
30 #define AT91_SHDW_RTTWKEN	BIT32(16)
31 
32 /* Shut Down Status Register */
33 #define AT91_SHDW_SR		0x08
34 #define AT91_SHDW_WKUPIS_SHIFT	16
35 #define AT91_SHDW_WKUPIS_MASK	GENMASK_32(31, 16)
36 #define AT91_SHDW_WKUPIS(x)	(BIT32((x) + AT91_SHDW_WKUPIS_SHIFT))
37 
38 /* Shutdown Wake-up Inputs Register */
39 #define AT91_SHDW_WUIR		0x0c
40 #define AT91_SHDW_WKUPEN_MASK	GENMASK_32(15, 0)
41 #define AT91_SHDW_WKUPEN(x)	(BIT32(x) & AT91_SHDW_WKUPEN_MASK)
42 #define AT91_SHDW_WKUPT_SHIFT	16
43 #define AT91_SHDW_WKUPT_MASK	GENMASK_32(31, 16)
44 #define AT91_SHDW_WKUPT(x)	(BIT32((x) + AT91_SHDW_WKUPT_SHIFT))
45 
46 #ifndef __ASSEMBLER__
47 #if defined(CFG_ATMEL_SHDWC)
48 
49 void __atmel_shdwc_shutdown(uint32_t mpddrc_base, uint32_t shdwc_base,
50 			    uint32_t pmc_base);
51 
52 bool atmel_shdwc_available(void);
53 
54 void __noreturn atmel_shdwc_shutdown(void);
55 #else
56 static inline bool atmel_shdwc_available(void)
57 {
58 	return false;
59 }
60 
61 static inline void atmel_shdwc_shutdown(void) {}
62 #endif /* defined(CFG_ATMEL_SHDWC) */
63 #endif /* __ASSEMBLER__*/
64 
65 #endif /* __DRIVERS_ATMEL_SHDWC_H */
66