32d48d7b17e1762740addffa99ad6197df1342f7
1 /*
2 * Copyright (c) 2011-2017, Texas Instruments Incorporated
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * * Neither the name of Texas Instruments Incorporated nor the names of
17 * its contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 */
34 /**
35 *
36 * \file evmc66x_gpio.h
37 *
38 * \brief This file is the header file for GPIO module
39 *
40 ******************************************************************************/
42 #ifndef _EVMC66X_GPIO_DBG_H_
43 #define _EVMC66X_GPIO_DBG_H_
46 #include <ti\csl\csl_gpio.h>
47 #include <ti\csl\soc\k2g\src\cslr_soc_baseaddress.h>
48 /************************
49 * Defines and Macros
50 ************************/
52 /** GPIO port 0 */
53 #define GPIO_PORT_0 (CSL_GPIO_0)
54 /** GPIO port 1 */
55 #define GPIO_PORT_1 (CSL_GPIO_1)
57 /** GPIO pin number 0 */
58 #define GPIO_PIN_0 (0)
59 /** GPIO pin number 1 */
60 #define GPIO_PIN_1 (1)
61 /** GPIO pin number 2 */
62 #define GPIO_PIN_2 (2)
63 /** GPIO pin number 3 */
64 #define GPIO_PIN_3 (3)
65 /** GPIO pin number 4 */
66 #define GPIO_PIN_4 (4)
67 /** GPIO pin number 5 */
68 #define GPIO_PIN_5 (5)
69 /** GPIO pin number 6 */
70 #define GPIO_PIN_6 (6)
71 /** GPIO pin number 7 */
72 #define GPIO_PIN_7 (7)
73 /** GPIO pin number 8 */
74 #define GPIO_PIN_8 (8)
75 /** GPIO pin number 9 */
76 #define GPIO_PIN_9 (9)
77 /** GPIO pin number 10 */
78 #define GPIO_PIN_10 (10)
79 /** GPIO pin number 11 */
80 #define GPIO_PIN_11 (11)
81 /** GPIO pin number 12 */
82 #define GPIO_PIN_12 (12)
83 /** GPIO pin number 13 */
84 #define GPIO_PIN_13 (13)
85 /** GPIO pin number 14 */
86 #define GPIO_PIN_14 (14)
87 /** GPIO pin number 15 */
88 #define GPIO_PIN_15 (15)
89 /** GPIO pin number 16 */
90 #define GPIO_PIN_16 (16)
91 /** GPIO pin number 17 */
92 #define GPIO_PIN_17 (17)
93 /** GPIO pin number 18 */
94 #define GPIO_PIN_18 (18)
95 /** GPIO pin number 19 */
96 #define GPIO_PIN_19 (19)
97 /** GPIO pin number 20 */
98 #define GPIO_PIN_20 (20)
99 /** GPIO pin number 21 */
100 #define GPIO_PIN_21 (21)
101 /** GPIO pin number 22 */
102 #define GPIO_PIN_22 (22)
103 /** GPIO pin number 23 */
104 #define GPIO_PIN_23 (23)
105 /** GPIO pin number 24 */
106 #define GPIO_PIN_24 (24)
107 /** GPIO pin number 25 */
108 #define GPIO_PIN_25 (25)
109 /** GPIO pin number 26 */
110 #define GPIO_PIN_26 (26)
111 /** GPIO pin number 27 */
112 #define GPIO_PIN_27 (27)
113 /** GPIO pin number 28 */
114 #define GPIO_PIN_28 (28)
115 /** GPIO pin number 29 */
116 #define GPIO_PIN_29 (29)
117 /** GPIO pin number 30 */
118 #define GPIO_PIN_30 (30)
119 /** GPIO pin number 31 */
120 #define GPIO_PIN_31 (31)
121 /** GPIO pin number 32 */
122 #define GPIO_PIN_32 (32)
123 /** GPIO pin number 33 */
124 #define GPIO_PIN_33 (33)
125 /** GPIO pin number 34 */
126 #define GPIO_PIN_34 (34)
127 /** GPIO pin number 35 */
128 #define GPIO_PIN_35 (35)
129 /** GPIO pin number 36 */
130 #define GPIO_PIN_36 (36)
131 /** GPIO pin number 37 */
132 #define GPIO_PIN_37 (37)
133 /** GPIO pin number 38 */
134 #define GPIO_PIN_38 (38)
135 /** GPIO pin number 39 */
136 #define GPIO_PIN_39 (39)
137 /** GPIO pin number 40 */
138 #define GPIO_PIN_40 (40)
139 /** GPIO pin number 41 */
140 #define GPIO_PIN_41 (41)
141 /** GPIO pin number 42 */
142 #define GPIO_PIN_42 (42)
143 /** GPIO pin number 43 */
144 #define GPIO_PIN_43 (43)
145 /** GPIO pin number 44 */
146 #define GPIO_PIN_44 (44)
147 /** GPIO pin number 45 */
148 #define GPIO_PIN_45 (45)
149 /** GPIO pin number 46 */
150 #define GPIO_PIN_46 (46)
151 /** GPIO pin number 47 */
152 #define GPIO_PIN_47 (47)
153 /** GPIO pin number 48 */
154 #define GPIO_PIN_48 (48)
155 /** GPIO pin number 49 */
156 #define GPIO_PIN_49 (49)
157 /** GPIO pin number 50 */
158 #define GPIO_PIN_50 (50)
159 /** GPIO pin number 51 */
160 #define GPIO_PIN_51 (51)
161 /** GPIO pin number 52 */
162 #define GPIO_PIN_52 (52)
163 /** GPIO pin number 53 */
164 #define GPIO_PIN_53 (53)
165 /** GPIO pin number 54 */
166 #define GPIO_PIN_54 (54)
167 /** GPIO pin number 55 */
168 #define GPIO_PIN_55 (55)
169 /** GPIO pin number 56 */
170 #define GPIO_PIN_56 (56)
171 /** GPIO pin number 57 */
172 #define GPIO_PIN_57 (57)
173 /** GPIO pin number 58 */
174 #define GPIO_PIN_58 (58)
175 /** GPIO pin number 59 */
176 #define GPIO_PIN_59 (59)
177 /** GPIO pin number 60 */
178 #define GPIO_PIN_60 (60)
179 /** GPIO pin number 61 */
180 #define GPIO_PIN_61 (61)
181 /** GPIO pin number 62 */
182 #define GPIO_PIN_62 (62)
183 /** GPIO pin number 63 */
184 #define GPIO_PIN_63 (63)
185 /** GPIO pin number 64 */
186 #define GPIO_PIN_64 (64)
187 /** GPIO pin number 65 */
188 #define GPIO_PIN_65 (65)
189 /** GPIO pin number 66 */
190 #define GPIO_PIN_66 (66)
191 /** GPIO pin number 67 */
192 #define GPIO_PIN_67 (67)
193 /** GPIO pin number 68 */
194 #define GPIO_PIN_68 (68)
195 /** GPIO pin number 69 */
196 #define GPIO_PIN_69 (69)
197 /** GPIO pin number 70 */
198 #define GPIO_PIN_70 (70)
199 /** GPIO pin number 71 */
200 #define GPIO_PIN_71 (71)
201 /** GPIO pin number 72 */
202 #define GPIO_PIN_72 (72)
203 /** GPIO pin number 73 */
204 #define GPIO_PIN_73 (73)
205 /** GPIO pin number 74 */
206 #define GPIO_PIN_74 (74)
207 /** GPIO pin number 75 */
208 #define GPIO_PIN_75 (75)
209 /** GPIO pin number 76 */
210 #define GPIO_PIN_76 (76)
211 /** GPIO pin number 77 */
212 #define GPIO_PIN_77 (77)
213 /** GPIO pin number 78 */
214 #define GPIO_PIN_78 (78)
215 /** GPIO pin number 79 */
216 #define GPIO_PIN_79 (79)
217 /** GPIO pin number 80 */
218 #define GPIO_PIN_80 (80)
219 /** GPIO pin number 81 */
220 #define GPIO_PIN_81 (81)
221 /** GPIO pin number 82 */
222 #define GPIO_PIN_82 (82)
223 /** GPIO pin number 83 */
224 #define GPIO_PIN_83 (83)
225 /** GPIO pin number 84 */
226 #define GPIO_PIN_84 (84)
227 /** GPIO pin number 85 */
228 #define GPIO_PIN_85 (85)
229 /** GPIO pin number 86 */
230 #define GPIO_PIN_86 (86)
231 /** GPIO pin number 87 */
232 #define GPIO_PIN_87 (87)
233 /** GPIO pin number 88 */
234 #define GPIO_PIN_88 (88)
235 /** GPIO pin number 89 */
236 #define GPIO_PIN_89 (89)
237 /** GPIO pin number 90 */
238 #define GPIO_PIN_90 (90)
239 /** GPIO pin number 91 */
240 #define GPIO_PIN_91 (91)
241 /** GPIO pin number 92 */
242 #define GPIO_PIN_92 (92)
243 /** GPIO pin number 93 */
244 #define GPIO_PIN_93 (93)
245 /** GPIO pin number 94 */
246 #define GPIO_PIN_94 (94)
247 /** GPIO pin number 95 */
248 #define GPIO_PIN_95 (95)
249 /** GPIO pin number 96 */
250 #define GPIO_PIN_96 (96)
251 /** GPIO pin number 97 */
252 #define GPIO_PIN_97 (97)
253 /** GPIO pin number 98 */
254 #define GPIO_PIN_98 (98)
255 /** GPIO pin number 99 */
256 #define GPIO_PIN_99 (99)
257 /** GPIO pin number 100 */
258 #define GPIO_PIN_100 (100)
259 /** GPIO pin number 101 */
260 #define GPIO_PIN_101 (101)
261 /** GPIO pin number 102 */
262 #define GPIO_PIN_102 (102)
263 /** GPIO pin number 103 */
264 #define GPIO_PIN_103 (103)
265 /** GPIO pin number 104 */
266 #define GPIO_PIN_104 (104)
267 /** GPIO pin number 105 */
268 #define GPIO_PIN_105 (105)
269 /** GPIO pin number 106 */
270 #define GPIO_PIN_106 (106)
271 /** GPIO pin number 107 */
272 #define GPIO_PIN_107 (107)
273 /** GPIO pin number 108 */
274 #define GPIO_PIN_108 (108)
275 /** GPIO pin number 109 */
276 #define GPIO_PIN_109 (109)
277 /** GPIO pin number 110 */
278 #define GPIO_PIN_110 (110)
279 /** GPIO pin number 111 */
280 #define GPIO_PIN_111 (111)
281 /** GPIO pin number 112 */
282 #define GPIO_PIN_112 (112)
283 /** GPIO pin number 113 */
284 #define GPIO_PIN_113 (113)
285 /** GPIO pin number 114 */
286 #define GPIO_PIN_114 (114)
287 /** GPIO pin number 115 */
288 #define GPIO_PIN_115 (115)
289 /** GPIO pin number 116 */
290 #define GPIO_PIN_116 (116)
291 /** GPIO pin number 117 */
292 #define GPIO_PIN_117 (117)
293 /** GPIO pin number 118 */
294 #define GPIO_PIN_118 (118)
295 /** GPIO pin number 119 */
296 #define GPIO_PIN_119 (119)
297 /** GPIO pin number 120 */
298 #define GPIO_PIN_120 (120)
299 /** GPIO pin number 121 */
300 #define GPIO_PIN_121 (121)
301 /** GPIO pin number 122 */
302 #define GPIO_PIN_122 (122)
303 /** GPIO pin number 123 */
304 #define GPIO_PIN_123 (123)
305 /** GPIO pin number 124 */
306 #define GPIO_PIN_124 (124)
307 /** GPIO pin number 125 */
308 #define GPIO_PIN_125 (125)
309 /** GPIO pin number 126 */
310 #define GPIO_PIN_126 (126)
311 /** GPIO pin number 127 */
312 #define GPIO_PIN_127 (127)
313 /** GPIO pin number 128 */
314 #define GPIO_PIN_128 (128)
315 /** GPIO pin number 129 */
316 #define GPIO_PIN_129 (129)
317 /** GPIO pin number 130 */
318 #define GPIO_PIN_130 (130)
319 /** GPIO pin number 131 */
320 #define GPIO_PIN_131 (131)
321 /** GPIO pin number 132 */
322 #define GPIO_PIN_132 (132)
323 /** GPIO pin number 133 */
324 #define GPIO_PIN_133 (133)
325 /** GPIO pin number 134 */
326 #define GPIO_PIN_134 (134)
327 /** GPIO pin number 135 */
328 #define GPIO_PIN_135 (135)
329 /** GPIO pin number 136 */
330 #define GPIO_PIN_136 (136)
331 /** GPIO pin number 137 */
332 #define GPIO_PIN_137 (137)
333 /** GPIO pin number 138 */
334 #define GPIO_PIN_138 (138)
335 /** GPIO pin number 139 */
336 #define GPIO_PIN_139 (139)
337 /** GPIO pin number 140 */
338 #define GPIO_PIN_140 (140)
339 /** GPIO pin number 141 */
340 #define GPIO_PIN_141 (141)
341 /** GPIO pin number 142 */
342 #define GPIO_PIN_142 (142)
343 /** GPIO pin number 143 */
344 #define GPIO_PIN_143 (143)
346 /** Number of GPIO pins per bank */
347 #define GPIO_PINS_PER_BANK (32)
348 /** Maximum number of GPIO banks */
349 #define GPIO_MAX_BANKS (5)
351 /** Maximum number of GPIO pins supported per instance */
352 #define GPIO_MAX_NUMBER ((GPIO_MAX_BANKS) * (GPIO_PINS_PER_BANK))
354 /*
355 * \brief GPIO function returned result
356 */
357 /** GPIO pin value is low */
358 #define GPIO_LOW (0)
359 /** GPIO pin value is high */
360 #define GPIO_HIGH (1)
361 /** Requested operation is successful */
362 #define GPIO_RET_OK (0)
363 /** Requested operation is failed */
364 #define GPIO_RET_FAIL (1)
365 /** Invalid GPIO pin/bank number error */
366 #define INVALID_GPIO_NUMBER (2)
367 /** Invalid GPIO direction error */
368 #define INVALID_GPIO_DIRECTION (3)
369 /** Invalid GPIO state error */
370 #define INVALID_GPIO_STATE (4)
371 /** Invalid GPIO port number error */
372 #define INVALID_GPIO_PORT (5)
374 /** Command to set GPIO pin direction */
375 #define GPIO_CTRL_SET_DIR (0)
376 /** Command to set GPIO pin output */
377 #define GPIO_CTRL_SET_OUTPUT (1)
378 /** Command to clear GPIO pin output */
379 #define GPIO_CTRL_CLEAR_OUTPUT (2)
380 /** Command to read GPIO pin input */
381 #define GPIO_CTRL_READ_INPUT (3)
382 /** Command to set rising edge interrupt */
383 #define GPIO_CTRL_SET_RE_INTR (4)
384 /** Command to clear rising edge interrupt */
385 #define GPIO_CTRL_CLEAR_RE_INTR (5)
386 /** Command to set falling edge interrupt */
387 #define GPIO_CTRL_SET_FE_INTR (6)
388 /** Command to clear falling edge interrupt */
389 #define GPIO_CTRL_CLEAR_FE_INTR (7)
391 /** GPIO function return type */
392 typedef uint16_t GPIO_RET;
394 /**
395 * \brief Options to configure GPIO pin direction
396 */
397 typedef enum _GpioDirection
398 {
399 GPIO_OUT = 0, /**< Configures GPIO pin as output */
400 GPIO_IN /**< Configures GPIO pin as input */
401 } GpioDirection;
403 /************************
404 * Function declarations
405 ************************/
406 /**
407 * \brief Returns base address of given GPIO port number.
408 *
409 * \param gpioPortNumber [IN] GPIO port number
410 *
411 * \return CSL_GpioHandle\n
412 *
413 */
414 CSL_GpioHandle GPIOGetRegBaseAddr(uint8_t gpioPortNumber);
416 /**
417 * \brief Initializes the GPIO peripheral
418 *
419 * \param gpioPortNumber [IN] GPIO port number
420 *
421 * \return
422 * \n GPIO_RET_OK - Requested operation is successful
423 * \n INVALID_GPIO_PORT - Invalid GPIO port number
424 *
425 */
426 GPIO_RET GPIOInit(uint8_t gpioPortNumber);
428 /**
429 * \brief This function configures the specified GPIO's direction
430 *
431 * \param gpioPortNumber [IN] GPIO port number
432 * \param pinNum [IN] GPIO pin number
433 * \param direction [IN] GPIO pin direction
434 *
435 * \return
436 * \n GPIO_RET_OK - Requested operation is successful
437 * \n INVALID_GPIO_PORT - Invalid GPIO port number
438 * \n INVALID_GPIO_NUMBER - Invalid GPIO pin number
439 *
440 */
441 GPIO_RET GPIOSetDirection(uint8_t gpioPortNumber, uint8_t pinNum,
442 GpioDirection direction);
444 /**
445 * \brief This function sets the specified GPIO's pin state to 1
446 *
447 * \param gpioPortNumber [IN] GPIO port number
448 * \param pinNum [IN] GPIO pin number
449 *
450 * \return
451 * \n GPIO_RET_OK - Requested operation is successful
452 * \n INVALID_GPIO_PORT - Invalid GPIO port number
453 * \n INVALID_GPIO_NUMBER - Invalid GPIO pin number
454 *
455 */
456 GPIO_RET GPIOSetOutput(uint8_t gpioPortNumber, uint8_t pinNum);
458 /**
459 * \brief This function Clears the specified GPIO's pin state to 0
460 *
461 * \param gpioPortNumber [IN] GPIO port number
462 * \param pinNum [IN] GPIO pin number
463 *
464 * \return
465 * \n GPIO_RET_OK - Requested operation is successful
466 * \n INVALID_GPIO_PORT - Invalid GPIO port number
467 * \n INVALID_GPIO_NUMBER - Invalid GPIO pin number
468 *
469 */
470 GPIO_RET GPIOClearOutput(uint8_t gpioPortNumber, uint8_t pinNum);
472 /**
473 * \brief This function gets the specified GPIO's pin state
474 *
475 * The specified GPIO should be configured as input
476 *
477 * \param gpioPortNumber [IN] GPIO port number
478 * \param pinNum [IN] GPIO pin number
479 *
480 * \return
481 * \n uint32_t - Input state of GPIO if success
482 * \n - else GPIO status
483 */
484 uint32_t GPIOReadInput(uint8_t gpioPortNumber, uint8_t pinNum);
486 /**
487 * \brief This function Enables GPIO interrupts to CPU
488 *
489 * \param gpioPortNumber [IN] GPIO port number
490 * \param bankNum [IN] GPIO bank number
491 *
492 * \return
493 * \n GPIO_RET_OK - Requested operation is successful
494 * \n INVALID_GPIO_PORT - Invalid GPIO port number
495 * \n INVALID_GPIO_NUMBER - Invalid GPIO bank number
496 */
497 //GPIO_RET GPIOEnableGlobalInterrupt(uint8_t gpioPortNumber, uint8_t bankNum);
499 /**
500 * \brief This function Disables GPIO interrupts to CPU
501 *
502 * \param gpioPortNumber [IN] GPIO port number
503 * \param bankNum [IN] GPIO bank number
504 *
505 * \return
506 * \n GPIO_RET_OK - Requested operation is successful
507 * \n INVALID_GPIO_PORT - Invalid GPIO port number
508 * \n INVALID_GPIO_NUMBER - Invalid GPIO bank number
509 */
510 //GPIO_RET GPIODisableGlobalInterrupt(uint8_t gpioPortNumber, uint8_t bankNum);
512 /**
513 * \brief This function sets specified GPIO's rising edge interrupt
514 *
515 * \param gpioPortNumber [IN] GPIO port number
516 * \param pinNum [IN] GPIO pin number
517 *
518 * \return
519 * \n GPIO_RET_OK - Requested operation is successful
520 * \n INVALID_GPIO_PORT - Invalid GPIO port number
521 * \n INVALID_GPIO_NUMBER - Invalid GPIO pin number
522 */
523 //GPIO_RET GPIOSetRisingEdgeInterrupt(uint8_t gpioPortNumber, uint8_t pinNum);
525 /**
526 * \brief This function clears specified GPIO's rising edge interrupt
527 *
528 * \param gpioPortNumber [IN] GPIO port number
529 * \param pinNum [IN] GPIO pin number
530 *
531 * \return
532 * \n GPIO_RET_OK - Requested operation is successful
533 * \n INVALID_GPIO_PORT - Invalid GPIO port number
534 * \n INVALID_GPIO_NUMBER - Invalid GPIO pin number
535 */
536 //GPIO_RET GPIOClearRisingEdgeInterrupt(uint8_t gpioPortNumber, uint8_t pinNum);
538 /**
539 * \brief This function sets specified GPIO's falling edge interrupt
540 *
541 * \param gpioPortNumber [IN] GPIO port number
542 * \param pinNum [IN] GPIO pin number
543 *
544 * \return
545 * \n GPIO_RET_OK - Requested operation is successful
546 * \n INVALID_GPIO_PORT - Invalid GPIO port number
547 * \n INVALID_GPIO_NUMBER - Invalid GPIO pin number
548 */
549 //GPIO_RET GPIOSetFallingEdgeInterrupt(uint8_t gpioPortNumber, uint8_t pinNum);
551 /**
552 * \brief This function clears specified GPIO's falling edge interrupt
553 *
554 * \param gpioPortNumber [IN] GPIO port number
555 * \param pinNum [IN] GPIO pin number
556 *
557 * \return
558 * \n GPIO_RET_OK - Requested operation is successful
559 * \n INVALID_GPIO_PORT - Invalid GPIO port number
560 * \n INVALID_GPIO_NUMBER - Invalid GPIO pin number
561 */
562 //GPIO_RET GPIOClearFallingEdgeInterrupt(uint8_t gpioPortNumber, uint8_t pinNum);
564 #endif /* _EVMC66X_GPIO_H_ */
566 /* Nothing past this point */