1 /*
2  * Copyright (c) 2022 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_NORDIC_NRF_GPIO_H_
7 #define ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_NORDIC_NRF_GPIO_H_
8 
9 /**
10  * @brief nRF-specific GPIO Flags
11  * @defgroup gpio_interface_nrf nRF-specific GPIO Flags
12  * @ingroup gpio_interface
13  * @{
14  */
15 
16 /**
17  * @name nRF GPIO drive flags
18  * @brief nRF GPIO drive flags
19  *
20  * Standard (S) or High (H) drive modes can be applied to both pin levels, 0 or
21  * 1. High drive mode will increase current capabilities of the pin (refer to
22  * each SoC reference manual).
23  *
24  * When the pin is configured to operate in open-drain mode (wired-and), the
25  * drive mode can only be selected for the 0 level (1 is disconnected).
26  * Similarly, when the pin is configured to operate in open-source mode
27  * (wired-or), the drive mode can only be set for the 1 level
28  * (0 is disconnected).
29  *
30  * The drive flags are encoded in the 8 upper bits of @ref gpio_dt_flags_t as
31  * follows:
32  *
33  * - Bit 8: Drive mode for '0' (0=Standard, 1=High)
34  * - Bit 9: Drive mode for '1' (0=Standard, 1=High)
35  *
36  * @{
37  */
38 
39 /** @cond INTERNAL_HIDDEN */
40 /** Drive mode field mask */
41 #define NRF_GPIO_DRIVE_MSK	0x0300U
42 /** @endcond */
43 
44 /** Standard drive for '0' (default, used with GPIO_OPEN_DRAIN) */
45 #define NRF_GPIO_DRIVE_S0	(0U << 8U)
46 /** High drive for '0' (used with GPIO_OPEN_DRAIN) */
47 #define NRF_GPIO_DRIVE_H0	(1U << 8U)
48 /** Standard drive for '1' (default, used with GPIO_OPEN_SOURCE) */
49 #define NRF_GPIO_DRIVE_S1	(0U << 9U)
50 /** High drive for '1' (used with GPIO_OPEN_SOURCE) */
51 #define NRF_GPIO_DRIVE_H1	(1U << 9U)
52 /** Standard drive for '0' and '1' (default) */
53 #define NRF_GPIO_DRIVE_S0S1	(NRF_GPIO_DRIVE_S0 | NRF_GPIO_DRIVE_S1)
54 /** Standard drive for '0' and high for '1' */
55 #define NRF_GPIO_DRIVE_S0H1	(NRF_GPIO_DRIVE_S0 | NRF_GPIO_DRIVE_H1)
56 /** High drive for '0' and standard for '1' */
57 #define NRF_GPIO_DRIVE_H0S1	(NRF_GPIO_DRIVE_H0 | NRF_GPIO_DRIVE_S1)
58 /** High drive for '0' and '1' */
59 #define NRF_GPIO_DRIVE_H0H1	(NRF_GPIO_DRIVE_H0 | NRF_GPIO_DRIVE_H1)
60 
61 /** @} */
62 
63 /** @} */
64 
65 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_NORDIC_NRF_GPIO_H_ */
66