1 /* 2 * Copyright (c) 2023 Elektronikutvecklingsbyrån EUB AB 3 * SPDX-License-Identifier: Apache-2.0 4 */ 5 6 /** 7 * @file 8 * @brief Pmod GPIO nexus signal index definitions 9 * 10 * Defines meant to be used in conjunction with the "digilent,pmod" 11 * GPIO nexus mapping. 12 * 13 * Example usage: 14 * 15 * @code{.dts} 16 * &spi1 { 17 * cs-gpios = <&pmod0 PMOD_SPI_CS GPIO_ACTIVE_LOW>; 18 * 19 * example_device: example-dev@0 { 20 * compatible = "vnd,spi-device"; 21 * reg = <0>; 22 * }; 23 * }; 24 * @endcode 25 */ 26 27 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_DIGILENT_PMOD_H_ 28 #define ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_DIGILENT_PMOD_H_ 29 30 /** 31 * For reference see the Pmod interface specification: 32 * https://digilent.com/reference/_media/reference/pmod/pmod-interface-specification-1_2_0.pdf 33 */ 34 35 /* GPIO */ 36 37 /** 38 * @brief IO[n] signal on a Pmod GPIO nexus node following 39 * Pmod Interface Type 1 or 1A (GPIO or expanded GPIO) 40 * 41 * The Pmod GPIO nexus maps pin indexes 0..7 to IO1..IO8. 42 */ 43 #define PMOD_IO(n) ((n) - 1) 44 45 /* SPI */ 46 47 /** 48 * @brief SPI CS signal index on a Pmod GPIO nexus node. 49 * Used with Pmod Interface Type 2 (SPI) peripherals. 50 */ 51 #define PMOD_SPI_CS PMOD_IO(1) 52 53 /** 54 * @brief SPI MOSI signal index on a Pmod GPIO nexus node. 55 * Used with Pmod Interface Type 2 (SPI) peripherals. 56 */ 57 #define PMOD_SPI_MOSI PMOD_IO(2) 58 59 /** 60 * @brief SPI MISO signal index on a Pmod GPIO nexus node. 61 * Used with Pmod Interface Type 2 (SPI) peripherals. 62 */ 63 #define PMOD_SPI_MISO PMOD_IO(3) 64 65 /** 66 * @brief SPI SCK signal index on a Pmod GPIO nexus node. 67 * Used with Pmod Interface Type 2 (SPI) peripherals. 68 */ 69 #define PMOD_SPI_SCK PMOD_IO(4) 70 71 /* Expanded SPI */ 72 73 /** 74 * @brief SPI CS signal index on a Pmod GPIO nexus node. 75 * Used with Pmod Interface Type 2A (expanded SPI) peripherals. 76 */ 77 #define PMOD_EXP_SPI_CS PMOD_IO(1) 78 79 /** 80 * @brief SPI MOSI signal index on a Pmod GPIO nexus node. 81 * Used with Pmod Interface Type 2A (expanded SPI) peripherals. 82 */ 83 #define PMOD_EXP_SPI_MOSI PMOD_IO(2) 84 85 /** 86 * @brief SPI MISO signal index on a Pmod GPIO nexus node. 87 * Used with Pmod Interface Type 2A (expanded SPI) peripherals. 88 */ 89 #define PMOD_EXP_SPI_MISO PMOD_IO(3) 90 91 /** 92 * @brief SPI SCK signal index on a Pmod GPIO nexus node. 93 * Used with Pmod Interface Type 2A (expanded SPI) peripherals. 94 */ 95 #define PMOD_EXP_SPI_SCK PMOD_IO(4) 96 97 /** 98 * @brief INT alternate signal index on a Pmod GPIO nexus node. 99 * Used with Pmod Interface Type 2A (expanded SPI) peripherals. 100 */ 101 #define PMOD_EXP_SPI_INT PMOD_IO(5) 102 103 /** 104 * @brief RESET alternate signal index on a Pmod GPIO nexus node. 105 * Used with Pmod Interface Type 2A (expanded SPI) peripherals. 106 */ 107 #define PMOD_EXP_SPI_RESET PMOD_IO(6) 108 109 /** 110 * @brief SPI CS2 alternate signal index on a Pmod GPIO nexus node. 111 * Used with Pmod Interface Type 2A (expanded SPI) peripherals. 112 */ 113 #define PMOD_EXP_SPI_CS2 PMOD_IO(7) 114 115 /** 116 * @brief SPI CS3 alternate signal index on a Pmod GPIO nexus node. 117 * Used with Pmod Interface Type 2A (expanded SPI) peripherals. 118 */ 119 #define PMOD_EXP_SPI_CS3 PMOD_IO(8) 120 121 /* Expanded UART */ 122 123 /** 124 * @brief INT alternate signal index on a Pmod GPIO nexus node. 125 * Used with Pmod Interface Type 3A (expanded UART) peripherals. 126 */ 127 #define PMOD_EXP_UART_INT PMOD_IO(5) 128 129 /** 130 * @brief RESET alternate signal index on a Pmod GPIO nexus node. 131 * Used with Pmod Interface Type 3A (expanded UART) peripherals. 132 */ 133 #define PMOD_EXP_UART_RESET PMOD_IO(6) 134 135 /* H-bridge */ 136 137 /** 138 * @brief DIR signal index on a Pmod GPIO nexus node. 139 * Used with Pmod Interface Type 4 (H-bridge) peripherals. 140 */ 141 #define PMOD_HBRIDGE_DIR PMOD_IO(1) 142 143 /** 144 * @brief EN signal index on a Pmod GPIO nexus node. 145 * Used with Pmod Interface Type 4 (H-bridge) peripherals. 146 */ 147 #define PMOD_HBRIDGE_EN PMOD_IO(2) 148 149 /* Dual H-bridge */ 150 151 /** 152 * @brief DIR1 signal index on a Pmod GPIO nexus node. 153 * Used with Pmod Interface Type 5 (dual H-bridge) peripherals. 154 */ 155 #define PMOD_DUAL_HBRIDGE_DIR1 PMOD_IO(1) 156 157 /** 158 * @brief EN1 signal index on a Pmod GPIO nexus node. 159 * Used with Pmod Interface Type 5 (dual H-bridge) peripherals. 160 */ 161 #define PMOD_DUAL_HBRIDGE_EN1 PMOD_IO(2) 162 163 /** 164 * @brief DIR2 signal index on a Pmod GPIO nexus node. 165 * Used with Pmod Interface Type 5 (dual H-bridge) peripherals. 166 */ 167 #define PMOD_DUAL_HBRIDGE_DIR2 PMOD_IO(3) 168 169 /** 170 * @brief EN2 signal index on a Pmod GPIO nexus node. 171 * Used with Pmod Interface Type 5 (dual H-bridge) peripherals. 172 */ 173 #define PMOD_DUAL_HBRIDGE_EN2 PMOD_IO(4) 174 175 /* Expanded dual H-bridge */ 176 177 /** 178 * @brief DIR1 signal index on a Pmod GPIO nexus node. 179 * Used with Pmod Interface Type 5A (expanded dual H-bridge) peripherals. 180 */ 181 #define PMOD_EXP_DUAL_HBRIDGE_DIR1 PMOD_IO(1) 182 183 /** 184 * @brief EN1 signal index on a Pmod GPIO nexus node. 185 * Used with Pmod Interface Type 5A (expanded dual H-bridge) peripherals. 186 */ 187 #define PMOD_EXP_DUAL_HBRIDGE_EN1 PMOD_IO(2) 188 189 /** 190 * @brief DIR2 signal index on a Pmod GPIO nexus node. 191 * Used with Pmod Interface Type 5A (expanded dual H-bridge) peripherals. 192 */ 193 #define PMOD_EXP_DUAL_HBRIDGE_DIR2 PMOD_IO(5) 194 195 /** 196 * @brief EN2 signal index on a Pmod GPIO nexus node. 197 * Used with Pmod Interface Type 5A (expanded dual H-bridge) peripherals. 198 */ 199 #define PMOD_EXP_DUAL_HBRIDGE_EN2 PMOD_IO(6) 200 201 /* I2C */ 202 203 /** 204 * @brief INT signal index on a Pmod GPIO nexus node. 205 * Used with Pmod Interface Type 6 (I2C) peripherals. 206 */ 207 #define PMOD_I2C_INT PMOD_IO(1) 208 209 /** 210 * @brief RESET signal index on a Pmod GPIO nexus node. 211 * Used with Pmod Interface Type 6 (I2C) peripherals. 212 */ 213 #define PMOD_I2C_RESET PMOD_IO(2) 214 215 /** 216 * @brief SCL signal index on a Pmod GPIO nexus node. 217 * Used with Pmod Interface Type 6 (I2C) peripherals. 218 */ 219 #define PMOD_I2C_SCL PMOD_IO(3) 220 221 /** 222 * @brief SDA signal index on a Pmod GPIO nexus node. 223 * Used with Pmod Interface Type 6 (I2C) peripherals. 224 */ 225 #define PMOD_I2C_SDA PMOD_IO(4) 226 227 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_DIGILENT_PMOD_H_ */ 228