1 /* 2 * Copyright (c) 2019 Piotr Mienkowski 3 * Copyright (c) 2018 Linaro Limited 4 * 5 * SPDX-License-Identifier: Apache-2.0 6 */ 7 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_GPIO_H_ 8 #define ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_GPIO_H_ 9 10 /** 11 * @brief GPIO Driver APIs 12 * @defgroup gpio_interface GPIO Driver APIs 13 * @ingroup io_interfaces 14 * @{ 15 */ 16 17 /** Mask for DT GPIO flags. */ 18 #define GPIO_DT_FLAGS_MASK 0x3F 19 20 /** 21 * @name GPIO pin active level flags 22 * @{ 23 */ 24 25 /** GPIO pin is active (has logical value '1') in low state. */ 26 #define GPIO_ACTIVE_LOW (1 << 0) 27 /** GPIO pin is active (has logical value '1') in high state. */ 28 #define GPIO_ACTIVE_HIGH (0 << 0) 29 30 /** @} */ 31 32 /** 33 * @name GPIO pin drive flags 34 * @{ 35 */ 36 37 /** @cond INTERNAL_HIDDEN */ 38 39 /* Configures GPIO output in single-ended mode (open drain or open source). */ 40 #define GPIO_SINGLE_ENDED (1 << 1) 41 /* Configures GPIO output in push-pull mode */ 42 #define GPIO_PUSH_PULL (0 << 1) 43 44 /* Indicates single ended open drain mode (wired AND). */ 45 #define GPIO_LINE_OPEN_DRAIN (1 << 2) 46 /* Indicates single ended open source mode (wired OR). */ 47 #define GPIO_LINE_OPEN_SOURCE (0 << 2) 48 49 /** @endcond */ 50 51 /** Configures GPIO output in open drain mode (wired AND). 52 * 53 * @note 'Open Drain' mode also known as 'Open Collector' is an output 54 * configuration which behaves like a switch that is either connected to ground 55 * or disconnected. 56 */ 57 #define GPIO_OPEN_DRAIN (GPIO_SINGLE_ENDED | GPIO_LINE_OPEN_DRAIN) 58 /** Configures GPIO output in open source mode (wired OR). 59 * 60 * @note 'Open Source' is a term used by software engineers to describe output 61 * mode opposite to 'Open Drain'. It behaves like a switch that is either 62 * connected to power supply or disconnected. There exist no corresponding 63 * hardware schematic and the term is generally unknown to hardware engineers. 64 */ 65 #define GPIO_OPEN_SOURCE (GPIO_SINGLE_ENDED | GPIO_LINE_OPEN_SOURCE) 66 67 /** @} */ 68 69 /** 70 * @name GPIO pin bias flags 71 * @{ 72 */ 73 74 /** Enables GPIO pin pull-up. */ 75 #define GPIO_PULL_UP (1 << 4) 76 77 /** Enable GPIO pin pull-down. */ 78 #define GPIO_PULL_DOWN (1 << 5) 79 80 /** @} */ 81 82 /* Note: Bits 15 downto 8 are reserved for SoC specific flags. */ 83 84 /** 85 * @} 86 */ 87 88 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_GPIO_H_ */ 89