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