xref: /optee_os/core/include/dt-bindings/gpio/atmel,piobu.h (revision 1fe98f82de00a5c739e919300532980955e9e62a)
1*1fe98f82SClément Léger /* SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) */
2*1fe98f82SClément Léger /*
3*1fe98f82SClément Léger  * Copyright (C) 2022 Microchip
4*1fe98f82SClément Léger  */
5*1fe98f82SClément Léger 
6*1fe98f82SClément Léger #ifndef _DT_BINDINGS_GPIO_ATMEL_PIOBU_H
7*1fe98f82SClément Léger #define _DT_BINDINGS_GPIO_ATMEL_PIOBU_H
8*1fe98f82SClément Léger 
9*1fe98f82SClément Léger #define PIOBU_PIN_AFV_SHIFT		0
10*1fe98f82SClément Léger #define PIOBU_PIN_AFV_MASK		0xF
11*1fe98f82SClément Léger #define PIOBU_PIN_AFV(val)		(((val) & PIOBU_PIN_AFV_MASK) >> \
12*1fe98f82SClément Léger 					 PIOBU_PIN_AFV_SHIFT)
13*1fe98f82SClément Léger 
14*1fe98f82SClément Léger #define PIOBU_PIN_RFV_SHIFT		4
15*1fe98f82SClément Léger #define PIOBU_PIN_RFV_MASK		0xF0
16*1fe98f82SClément Léger #define PIOBU_PIN_RFV(val)		(((val) & PIOBU_PIN_RFV_MASK) >> \
17*1fe98f82SClément Léger 					 PIOBU_PIN_RFV_SHIFT)
18*1fe98f82SClément Léger 
19*1fe98f82SClément Léger #define PIOBU_PIN_PULL_MODE_SHIFT	8
20*1fe98f82SClément Léger #define PIOBU_PIN_PULL_MODE_MASK	(0x3 << PIOBU_PIN_PULL_MODE_SHIFT)
21*1fe98f82SClément Léger #define PIOBU_PIN_PULL_MODE(val)	(((val) & PIOBU_PIN_PULL_MODE_MASK) >> \
22*1fe98f82SClément Léger 					 PIOBU_PIN_PULL_MODE_SHIFT)
23*1fe98f82SClément Léger #define PIOBU_PIN_PULL_NONE		0
24*1fe98f82SClément Léger #define PIOBU_PIN_PULL_UP		1
25*1fe98f82SClément Léger #define PIOBU_PIN_PULL_DOWN		2
26*1fe98f82SClément Léger 
27*1fe98f82SClément Léger #define PIOBU_PIN_DEF_LEVEL_SHIFT	10
28*1fe98f82SClément Léger #define PIOBU_PIN_DEF_LEVEL_MASK	(BIT(PIOBU_PIN_DEF_LEVEL_SHIFT))
29*1fe98f82SClément Léger #define PIOBU_PIN_DEF_LEVEL(val)	(((val) & PIOBU_PIN_DEF_LEVEL_MASK) >> \
30*1fe98f82SClément Léger 					 PIOBU_PIN_DEF_LEVEL_SHIFT)
31*1fe98f82SClément Léger #define PIOBU_PIN_DEF_LEVEL_LOW		0
32*1fe98f82SClément Léger #define PIOBU_PIN_DEF_LEVEL_HIGH	1
33*1fe98f82SClément Léger 
34*1fe98f82SClément Léger #define PIOBU_PIN_WAKEUP_SHIFT		11
35*1fe98f82SClément Léger #define PIOBU_PIN_WAKEUP_MASK		(BIT(PIOBU_PIN_WAKEUP_SHIFT))
36*1fe98f82SClément Léger #define PIOBU_PIN_WAKEUP(val)		(((val) & PIOBU_PIN_WAKEUP_MASK) >> \
37*1fe98f82SClément Léger 					 PIOBU_PIN_WAKEUP_SHIFT)
38*1fe98f82SClément Léger #define PIOBU_PIN_WAKEUP_DISABLE	0
39*1fe98f82SClément Léger #define PIOBU_PIN_WAKEUP_ENABLE		1
40*1fe98f82SClément Léger 
41*1fe98f82SClément Léger #define PIOBU_PIN_INPUT(afv, rfv, pull_mode, def_level, wakeup) \
42*1fe98f82SClément Léger 	((afv) | \
43*1fe98f82SClément Léger 	 ((rfv) << PIOBU_PIN_RFV_SHIFT) & PIOBU_PIN_RFV_MASK | \
44*1fe98f82SClément Léger 	 ((pull_mode) << PIOBU_PIN_PULL_MODE_SHIFT) & \
45*1fe98f82SClément Léger 	  PIOBU_PIN_PULL_MODE_MASK | \
46*1fe98f82SClément Léger 	 ((def_level) << PIOBU_PIN_DEF_LEVEL_SHIFT) & \
47*1fe98f82SClément Léger 	  PIOBU_PIN_DEF_LEVEL_MASK | \
48*1fe98f82SClément Léger 	 ((wakeup) << PIOBU_PIN_WAKEUP_SHIFT) & PIOBU_PIN_WAKEUP_MASK)
49*1fe98f82SClément Léger 
50*1fe98f82SClément Léger #endif /* _DT_BINDINGS_GPIO_ATMEL_PIOBU_H */
51