Circular buffer read cleanup from Build #38 (work on PASDK-53).
[processor-sdk/performance-audio-sr.git] / pasdk / common / evmc66x_gpio_dbg.h
1 /*
2  * Copyright (c) 2011-2015, 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
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 */