1 /******************************************************************************
2 *  Filename:       ioc.h
3 *  Revised:        2015-11-17 14:14:34 +0100 (Tue, 17 Nov 2015)
4 *  Revision:       45115
5 *
6 *  Description:    Defines and prototypes for the IO Controller.
7 *
8 *  Copyright (c) 2015, Texas Instruments Incorporated
9 *  All rights reserved.
10 *
11 *  Redistribution and use in source and binary forms, with or without
12 *  modification, are permitted provided that the following conditions are met:
13 *
14 *  1) Redistributions of source code must retain the above copyright notice,
15 *     this list of conditions and the following disclaimer.
16 *
17 *  2) Redistributions in binary form must reproduce the above copyright notice,
18 *     this list of conditions and the following disclaimer in the documentation
19 *     and/or other materials provided with the distribution.
20 *
21 *  3) Neither the name of the ORGANIZATION nor the names of its contributors may
22 *     be used to endorse or promote products derived from this software without
23 *     specific prior written permission.
24 *
25 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26 *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
29 *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30 *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31 *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32 *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 *  POSSIBILITY OF SUCH DAMAGE.
36 *
37 ******************************************************************************/
38 
39 //*****************************************************************************
40 //
41 //! \addtogroup peripheral_group
42 //! @{
43 //! \addtogroup ioc_api
44 //! @{
45 //
46 //*****************************************************************************
47 
48 #ifndef __IOC_H__
49 #define __IOC_H__
50 
51 //*****************************************************************************
52 //
53 // If building with a C++ compiler, make all of the definitions in this header
54 // have a C binding.
55 //
56 //*****************************************************************************
57 #ifdef __cplusplus
58 extern "C"
59 {
60 #endif
61 
62 #include <stdbool.h>
63 #include <stdint.h>
64 #include <inc/hw_types.h>
65 #include <inc/hw_memmap.h>
66 #include <inc/hw_ioc.h>
67 #include <inc/hw_ints.h>
68 #include <driverlib/interrupt.h>
69 #include <driverlib/debug.h>
70 #include <driverlib/gpio.h>
71 
72 //*****************************************************************************
73 //
74 // Support for DriverLib in ROM:
75 // This section renames all functions that are not "static inline", so that
76 // calling these functions will default to implementation in flash. At the end
77 // of this file a second renaming will change the defaults to implementation in
78 // ROM for available functions.
79 //
80 // To force use of the implementation in flash, e.g. for debugging:
81 // - Globally: Define DRIVERLIB_NOROM at project level
82 // - Per function: Use prefix "NOROM_" when calling the function
83 //
84 //*****************************************************************************
85 #if !defined(DOXYGEN)
86     #define IOCPortConfigureSet             NOROM_IOCPortConfigureSet
87     #define IOCPortConfigureGet             NOROM_IOCPortConfigureGet
88     #define IOCIOShutdownSet                NOROM_IOCIOShutdownSet
89     #define IOCIOModeSet                    NOROM_IOCIOModeSet
90     #define IOCIOIntSet                     NOROM_IOCIOIntSet
91     #define IOCIOPortPullSet                NOROM_IOCIOPortPullSet
92     #define IOCIOHystSet                    NOROM_IOCIOHystSet
93     #define IOCIOInputSet                   NOROM_IOCIOInputSet
94     #define IOCIOSlewCtrlSet                NOROM_IOCIOSlewCtrlSet
95     #define IOCIODrvStrengthSet             NOROM_IOCIODrvStrengthSet
96     #define IOCIOPortIdSet                  NOROM_IOCIOPortIdSet
97     #define IOCIntEnable                    NOROM_IOCIntEnable
98     #define IOCIntDisable                   NOROM_IOCIntDisable
99     #define IOCPinTypeGpioInput             NOROM_IOCPinTypeGpioInput
100     #define IOCPinTypeGpioOutput            NOROM_IOCPinTypeGpioOutput
101     #define IOCPinTypeUart                  NOROM_IOCPinTypeUart
102     #define IOCPinTypeSsiMaster             NOROM_IOCPinTypeSsiMaster
103     #define IOCPinTypeSsiSlave              NOROM_IOCPinTypeSsiSlave
104     #define IOCPinTypeI2c                   NOROM_IOCPinTypeI2c
105     #define IOCPinTypeAux                   NOROM_IOCPinTypeAux
106 #endif
107 
108 //*****************************************************************************
109 //
110 // Number of IOs (max. total of 32)
111 //
112 //*****************************************************************************
113 #define NUM_IO_MAX 32
114 
115 //*****************************************************************************
116 //
117 // The following fields are IO Id for the IOC module
118 //
119 //*****************************************************************************
120 #define IOID_0                  0x00000000  // IO Id 0
121 #define IOID_1                  0x00000001  // IO Id 1
122 #define IOID_2                  0x00000002  // IO Id 2
123 #define IOID_3                  0x00000003  // IO Id 3
124 #define IOID_4                  0x00000004  // IO Id 4
125 #define IOID_5                  0x00000005  // IO Id 5
126 #define IOID_6                  0x00000006  // IO Id 6
127 #define IOID_7                  0x00000007  // IO Id 7
128 #define IOID_8                  0x00000008  // IO Id 8
129 #define IOID_9                  0x00000009  // IO Id 9
130 #define IOID_10                 0x0000000A  // IO Id 10
131 #define IOID_11                 0x0000000B  // IO Id 11
132 #define IOID_12                 0x0000000C  // IO Id 12
133 #define IOID_13                 0x0000000D  // IO Id 13
134 #define IOID_14                 0x0000000E  // IO Id 14
135 #define IOID_15                 0x0000000F  // IO Id 15
136 #define IOID_16                 0x00000010  // IO Id 16
137 #define IOID_17                 0x00000011  // IO Id 17
138 #define IOID_18                 0x00000012  // IO Id 18
139 #define IOID_19                 0x00000013  // IO Id 19
140 #define IOID_20                 0x00000014  // IO Id 20
141 #define IOID_21                 0x00000015  // IO Id 21
142 #define IOID_22                 0x00000016  // IO Id 22
143 #define IOID_23                 0x00000017  // IO Id 23
144 #define IOID_24                 0x00000018  // IO Id 24
145 #define IOID_25                 0x00000019  // IO Id 25
146 #define IOID_26                 0x0000001A  // IO Id 26
147 #define IOID_27                 0x0000001B  // IO Id 27
148 #define IOID_28                 0x0000001C  // IO Id 28
149 #define IOID_29                 0x0000001D  // IO Id 29
150 #define IOID_30                 0x0000001E  // IO Id 30
151 #define IOID_31                 0x0000001F  // IO Id 31
152 #define IOID_UNUSED             0xFFFFFFFF  // Unused IO Id
153 
154 #define IOC_IOID_MASK           0x000000FF  // IOC IO Id bit mask
155 
156 //*****************************************************************************
157 //
158 // Number of IO ports
159 //
160 //*****************************************************************************
161 #define NUM_IO_PORTS 56
162 
163 //*****************************************************************************
164 //
165 // IOC Peripheral Port Mapping
166 //
167 //*****************************************************************************
168 #define IOC_PORT_GPIO             0x00000000  // Default general purpose IO usage
169 #define IOC_PORT_AON_CLK32K       0x00000007  // AON External 32kHz clock
170 #define IOC_PORT_AUX_IO           0x00000008  // AUX IO Pin
171 #define IOC_PORT_MCU_SSI0_RX      0x00000009  // MCU SSI0 Receive Pin
172 #define IOC_PORT_MCU_SSI0_TX      0x0000000A  // MCU SSI0 Transmit Pin
173 #define IOC_PORT_MCU_SSI0_FSS     0x0000000B  // MCU SSI0 FSS Pin
174 #define IOC_PORT_MCU_SSI0_CLK     0x0000000C  // MCU SSI0 Clock Pin
175 #define IOC_PORT_MCU_I2C_MSSDA    0x0000000D  // MCU I2C Data Pin
176 #define IOC_PORT_MCU_I2C_MSSCL    0x0000000E  // MCU I2C Clock Pin
177 #define IOC_PORT_MCU_UART0_RX     0x0000000F  // MCU UART0 Receive Pin
178 #define IOC_PORT_MCU_UART0_TX     0x00000010  // MCU UART0 Transmit Pin
179 #define IOC_PORT_MCU_UART0_CTS    0x00000011  // MCU UART0 Clear To Send Pin
180 #define IOC_PORT_MCU_UART0_RTS    0x00000012  // MCU UART0 Request To Send Pin
181 #define IOC_PORT_MCU_PORT_EVENT0  0x00000017  // MCU PORT EVENT 0
182 #define IOC_PORT_MCU_PORT_EVENT1  0x00000018  // MCU PORT EVENT 1
183 #define IOC_PORT_MCU_PORT_EVENT2  0x00000019  // MCU PORT EVENT 2
184 #define IOC_PORT_MCU_PORT_EVENT3  0x0000001A  // MCU PORT EVENT 3
185 #define IOC_PORT_MCU_PORT_EVENT4  0x0000001B  // MCU PORT EVENT 4
186 #define IOC_PORT_MCU_PORT_EVENT5  0x0000001C  // MCU PORT EVENT 5
187 #define IOC_PORT_MCU_PORT_EVENT6  0x0000001D  // MCU PORT EVENT 6
188 #define IOC_PORT_MCU_PORT_EVENT7  0x0000001E  // MCU PORT EVENT 7
189 #define IOC_PORT_MCU_SWV          0x00000020  // Serial Wire Viewer
190 #define IOC_PORT_MCU_SSI1_RX      0x00000021  // MCU SSI1 Receive Pin
191 #define IOC_PORT_MCU_SSI1_TX      0x00000022  // MCU SSI1 Transmit Pin
192 #define IOC_PORT_MCU_SSI1_FSS     0x00000023  // MCU SSI1 FSS Pin
193 #define IOC_PORT_MCU_SSI1_CLK     0x00000024  // MCU SSI1 Clock Pin
194 #define IOC_PORT_MCU_I2S_AD0      0x00000025  // MCU I2S Data Pin 0
195 #define IOC_PORT_MCU_I2S_AD1      0x00000026  // MCU I2S Data Pin 1
196 #define IOC_PORT_MCU_I2S_WCLK     0x00000027  // MCU I2S Frame/Word Clock
197 #define IOC_PORT_MCU_I2S_BCLK     0x00000028  // MCU I2S Bit Clock
198 #define IOC_PORT_MCU_I2S_MCLK     0x00000029  // MCU I2S Master clock 2
199 #define IOC_PORT_RFC_TRC          0x0000002E  // RF Core Tracer
200 #define IOC_PORT_RFC_GPO0         0x0000002F  // RC Core Data Out Pin 0
201 #define IOC_PORT_RFC_GPO1         0x00000030  // RC Core Data Out Pin 1
202 #define IOC_PORT_RFC_GPO2         0x00000031  // RC Core Data Out Pin 2
203 #define IOC_PORT_RFC_GPO3         0x00000032  // RC Core Data Out Pin 3
204 #define IOC_PORT_RFC_GPI0         0x00000033  // RC Core Data In Pin 0
205 #define IOC_PORT_RFC_GPI1         0x00000034  // RC Core Data In Pin 1
206 
207 //*****************************************************************************
208 //
209 // Defines for enabling/disabling an IO
210 //
211 //*****************************************************************************
212 #define IOC_SLEW_ENABLE         0x00001000
213 #define IOC_SLEW_DISABLE        0x00000000
214 #define IOC_INPUT_ENABLE        0x20000000
215 #define IOC_INPUT_DISABLE       0x00000000
216 #define IOC_HYST_ENABLE         0x40000000
217 #define IOC_HYST_DISABLE        0x00000000
218 
219 //*****************************************************************************
220 //
221 // Values that can be used to set the shutdown mode of an IO
222 //
223 //*****************************************************************************
224 #define IOC_NO_WAKE_UP          0x00000000
225 #define IOC_WAKE_ON_LOW         0x10000000
226 #define IOC_WAKE_ON_HIGH        0x18000000
227 
228 //*****************************************************************************
229 //
230 // Values that can be used to set the IO Mode of an IO
231 //
232 //*****************************************************************************
233 #define IOC_IOMODE_NORMAL       0x00000000  // Normal Input/Output
234 #define IOC_IOMODE_INV          0x01000000  // Inverted Input/Output
235 #define IOC_IOMODE_OPEN_DRAIN_NORMAL \
236                                 0x04000000  // Open Drain, Normal Input/Output
237 #define IOC_IOMODE_OPEN_DRAIN_INV \
238                                 0x05000000  // Open Drain, Inverted
239                                             // Input/Output
240 #define IOC_IOMODE_OPEN_SRC_NORMAL \
241                                 0x06000000  // Open Source, Normal Input/Output
242 #define IOC_IOMODE_OPEN_SRC_INV \
243                                 0x07000000  // Open Source, Inverted
244                                             // Input/Output
245 
246 //*****************************************************************************
247 //
248 // Values that can be used to set the edge detection on an IO
249 //
250 //*****************************************************************************
251 #define IOC_NO_EDGE             0x00000000  // No edge detection
252 #define IOC_FALLING_EDGE        0x00010000  // Edge detection on falling edge
253 #define IOC_RISING_EDGE         0x00020000  // Edge detection on rising edge
254 #define IOC_BOTH_EDGES          0x00030000  // Edge detection on both edges
255 #define IOC_INT_ENABLE          0x00040000  // Enable interrupt on edge detect
256 #define IOC_INT_DISABLE         0x00000000  // Disable interrupt on edge detect
257 #define IOC_INT_M               0x00070000  // Int config mask
258 
259 //*****************************************************************************
260 //
261 // Values that be used to set pull on an IO
262 //
263 //*****************************************************************************
264 #define IOC_NO_IOPULL           0x00006000  // No IO pull
265 #define IOC_IOPULL_UP           0x00004000  // Pull up
266 #define IOC_IOPULL_DOWN         0x00002000  // Pull down
267 #define IOC_IOPULL_M            0x00006000  // Pull config mask
268 #define IOC_IOPULL_M            0x00006000
269 
270 //*****************************************************************************
271 //
272 // Values that can be used to select the drive strength of an IO
273 //
274 //*****************************************************************************
275 #define IOC_CURRENT_2MA         0x00000000  // 2mA drive strength
276 #define IOC_CURRENT_4MA         0x00000400  // 4mA drive strength
277 #define IOC_CURRENT_8MA         0x00000800  // 4 or 8mA drive strength
278 
279 #define IOC_STRENGTH_AUTO       0x00000000  // Automatic Drive Strength
280                                             // (2/4/8 mA @ VVDS)
281 #define IOC_STRENGTH_MAX        0x00000300  // Maximum Drive Strength
282                                             // (2/4/8 mA @ 1.8V)
283 #define IOC_STRENGTH_MED        0x00000200  // Medium Drive Strength
284                                             // (2/4/8 mA @ 2.5V)
285 #define IOC_STRENGTH_MIN        0x00000100  // Minimum Drive Strength
286                                             // (2/4/8 mA @ 3.3V)
287 //*****************************************************************************
288 //
289 // Defines for standard IO setup
290 //
291 //*****************************************************************************
292 #define IOC_STD_INPUT           (IOC_CURRENT_2MA | IOC_STRENGTH_AUTO |      \
293                                  IOC_NO_IOPULL | IOC_SLEW_DISABLE |         \
294                                  IOC_HYST_DISABLE | IOC_NO_EDGE |           \
295                                  IOC_INT_DISABLE | IOC_IOMODE_NORMAL |      \
296                                  IOC_NO_WAKE_UP | IOC_INPUT_ENABLE )
297 #define IOC_STD_OUTPUT          (IOC_CURRENT_2MA | IOC_STRENGTH_AUTO |      \
298                                  IOC_NO_IOPULL | IOC_SLEW_DISABLE |         \
299                                  IOC_HYST_DISABLE | IOC_NO_EDGE |           \
300                                  IOC_INT_DISABLE | IOC_IOMODE_NORMAL |      \
301                                  IOC_NO_WAKE_UP | IOC_INPUT_DISABLE )
302 
303 //*****************************************************************************
304 //
305 // API Functions and prototypes
306 //
307 //*****************************************************************************
308 
309 //*****************************************************************************
310 //
311 //! \brief Set the configuration of an IO port.
312 //!
313 //! This function is used to configure the functionality of an IO.
314 //!
315 //! The \c ui32IOId parameter specifies which IO to configure.
316 //!
317 //! The \c ui32PortId parameter specifies which functional peripheral to hook
318 //! up to this IO.
319 //!
320 //! The \c ui32IOConfig parameter consists of a bitwise OR'ed value of all
321 //! the available configuration modes
322 //!
323 //! \note All IO Ports are tied to a specific functionality in a sub module
324 //! except for the \ref IOC_PORT_AUX_IO. Each of the IOs in the AUX domain are
325 //! hardcoded to a specific IO. When enabling one or more pins for the AUX
326 //! domain, they should all be configured to using \ref IOC_PORT_AUX_IO.
327 //!
328 //! \param ui32IOId defines the IO to configure and must be one of the following:
329 //! - \ref IOID_0
330 //! - ...
331 //! - \ref IOID_31
332 //! \param ui32PortId selects the functional IO port to connect.
333 //! The available IO ports are:
334 //! - \ref IOC_PORT_GPIO
335 //! - \ref IOC_PORT_AON_CLK32K
336 //! - \ref IOC_PORT_AUX_IO
337 //! - \ref IOC_PORT_MCU_SSI0_RX
338 //! - \ref IOC_PORT_MCU_SSI0_TX
339 //! - \ref IOC_PORT_MCU_SSI0_FSS
340 //! - \ref IOC_PORT_MCU_SSI0_CLK
341 //! - \ref IOC_PORT_MCU_I2C_MSSDA
342 //! - \ref IOC_PORT_MCU_I2C_MSSCL
343 //! - \ref IOC_PORT_MCU_UART0_RX
344 //! - \ref IOC_PORT_MCU_UART0_TX
345 //! - \ref IOC_PORT_MCU_UART0_CTS
346 //! - \ref IOC_PORT_MCU_UART0_RTS
347 //! - \ref IOC_PORT_MCU_PORT_EVENT0
348 //! - \ref IOC_PORT_MCU_PORT_EVENT1
349 //! - \ref IOC_PORT_MCU_PORT_EVENT2
350 //! - \ref IOC_PORT_MCU_PORT_EVENT3
351 //! - \ref IOC_PORT_MCU_PORT_EVENT4
352 //! - \ref IOC_PORT_MCU_PORT_EVENT5
353 //! - \ref IOC_PORT_MCU_PORT_EVENT6
354 //! - \ref IOC_PORT_MCU_PORT_EVENT7
355 //! - \ref IOC_PORT_MCU_SWV
356 //! - \ref IOC_PORT_MCU_SSI1_RX
357 //! - \ref IOC_PORT_MCU_SSI1_TX
358 //! - \ref IOC_PORT_MCU_SSI1_FSS
359 //! - \ref IOC_PORT_MCU_SSI1_CLK
360 //! - \ref IOC_PORT_MCU_I2S_AD0
361 //! - \ref IOC_PORT_MCU_I2S_AD1
362 //! - \ref IOC_PORT_MCU_I2S_WCLK
363 //! - \ref IOC_PORT_MCU_I2S_BCLK
364 //! - \ref IOC_PORT_MCU_I2S_MCLK
365 //! - \ref IOC_PORT_RFC_TRC
366 //! - \ref IOC_PORT_RFC_GPO0
367 //! - \ref IOC_PORT_RFC_GPO1
368 //! - \ref IOC_PORT_RFC_GPO2
369 //! - \ref IOC_PORT_RFC_GPO3
370 //! - \ref IOC_PORT_RFC_GPI0
371 //! - \ref IOC_PORT_RFC_GPI1
372 //! \param ui32IOConfig is the IO configuration consisting of
373 //! the bitwise OR of all configuration modes:
374 //! - Input/output mode:
375 //!   - \ref IOC_IOMODE_NORMAL
376 //!   - \ref IOC_IOMODE_INV
377 //!   - \ref IOC_IOMODE_OPEN_DRAIN_NORMAL
378 //!   - \ref IOC_IOMODE_OPEN_DRAIN_INV
379 //!   - \ref IOC_IOMODE_OPEN_SRC_NORMAL
380 //!   - \ref IOC_IOMODE_OPEN_SRC_INV
381 //! - Wake up mode:
382 //!   - \ref IOC_NO_WAKE_UP
383 //!   - \ref IOC_WAKE_ON_LOW
384 //!   - \ref IOC_WAKE_ON_HIGH
385 //! - Edge detection mode:
386 //!   - \ref IOC_NO_EDGE
387 //!   - \ref IOC_FALLING_EDGE
388 //!   - \ref IOC_RISING_EDGE
389 //!   - \ref IOC_BOTH_EDGES
390 //! - Interrupt mode on edge detection:
391 //!   - \ref IOC_INT_ENABLE
392 //!   - \ref IOC_INT_DISABLE
393 //! - Pull mode:
394 //!   - \ref IOC_NO_IOPULL
395 //!   - \ref IOC_IOPULL_UP
396 //!   - \ref IOC_IOPULL_DOWN
397 //! - Input mode:
398 //!   - \ref IOC_INPUT_ENABLE
399 //!   - \ref IOC_INPUT_DISABLE
400 //! - Hysteresis mode:
401 //!   - \ref IOC_HYST_ENABLE
402 //!   - \ref IOC_HYST_DISABLE
403 //! - Slew control mode:
404 //!   - \ref IOC_SLEW_ENABLE
405 //!   - \ref IOC_SLEW_DISABLE
406 //! - Maximum current mode:
407 //!   - \ref IOC_CURRENT_2MA
408 //!   - \ref IOC_CURRENT_4MA
409 //!   - \ref IOC_CURRENT_8MA
410 //! - Drive strength mode:
411 //!   - \ref IOC_STRENGTH_AUTO
412 //!   - \ref IOC_STRENGTH_MAX
413 //!   - \ref IOC_STRENGTH_MED
414 //!   - \ref IOC_STRENGTH_MIN
415 //!
416 //! \return None
417 //
418 //*****************************************************************************
419 extern void IOCPortConfigureSet(uint32_t ui32IOId, uint32_t ui32PortId,
420                                 uint32_t ui32IOConfig);
421 
422 //*****************************************************************************
423 //
424 //! \brief Get the configuration of an IO port.
425 //!
426 //! This function is used for getting the configuration of an IO.
427 //!
428 //! Each IO port has a dedicated register for setting up the IO. This function
429 //! returns the current configuration for the given IO.
430 //!
431 //! \param ui32IOId selects the IO to return the configuration for.
432 //! - \ref IOID_0
433 //! - ...
434 //! - \ref IOID_31
435 //!
436 //! \return Returns the IO Port configuration.
437 //! See \ref IOCPortConfigureSet() for configuration options.
438 //
439 //*****************************************************************************
440 extern uint32_t IOCPortConfigureGet(uint32_t ui32IOId);
441 
442 //*****************************************************************************
443 //
444 //! \brief Set wake-up on an IO port.
445 //!
446 //! This function is used to set the wake-up mode of an IO.
447 //!
448 //! \param ui32IOId defines the IO to configure.
449 //! - \ref IOID_0
450 //! - ...
451 //! - \ref IOID_31
452 //! \param ui32IOShutdown enables wake-up on LOW/HIGH by this IO port.
453 //! - \ref IOC_NO_WAKE_UP
454 //! - \ref IOC_WAKE_ON_LOW
455 //! - \ref IOC_WAKE_ON_HIGH
456 //!
457 //! \return None
458 //
459 //*****************************************************************************
460 extern void IOCIOShutdownSet(uint32_t ui32IOId, uint32_t ui32IOShutdown);
461 
462 
463 //*****************************************************************************
464 //
465 //! \brief Set the IO Mode of an IO Port.
466 //!
467 //! This function is used to set the input/output mode of an IO.
468 //!
469 //! \param ui32IOId defines the IO to configure.
470 //! - \ref IOID_0
471 //! - ...
472 //! - \ref IOID_31
473 //! \param ui32IOMode sets the port IO Mode.
474 //! - \ref IOC_IOMODE_NORMAL
475 //! - \ref IOC_IOMODE_INV
476 //! - \ref IOC_IOMODE_OPEN_DRAIN_NORMAL
477 //! - \ref IOC_IOMODE_OPEN_DRAIN_INV
478 //! - \ref IOC_IOMODE_OPEN_SRC_NORMAL
479 //! - \ref IOC_IOMODE_OPEN_SRC_INV
480 //!
481 //! \return None
482 //
483 //*****************************************************************************
484 extern void IOCIOModeSet(uint32_t ui32IOId, uint32_t ui32IOMode);
485 
486 //*****************************************************************************
487 //
488 //! \brief Setup interrupt detection on an IO Port.
489 //!
490 //! This function is used to setup the interrupt detection on an IO.
491 //!
492 //! \param ui32IOId defines the IO to configure.
493 //! - \ref IOID_0
494 //! - ...
495 //! - \ref IOID_31
496 //! \param ui32Int enables/disables interrupt generation on this IO port.
497 //! - \ref IOC_INT_ENABLE
498 //! - \ref IOC_INT_DISABLE
499 //! \param ui32EdgeDet enables/disables edge detection events on this IO port.
500 //! - \ref IOC_NO_EDGE
501 //! - \ref IOC_FALLING_EDGE
502 //! - \ref IOC_RISING_EDGE
503 //! - \ref IOC_BOTH_EDGES
504 //!
505 //! \return None
506 //
507 //*****************************************************************************
508 extern void IOCIOIntSet(uint32_t ui32IOId, uint32_t ui32Int,
509                         uint32_t ui32EdgeDet);
510 
511 //*****************************************************************************
512 //
513 //! \brief Set the pull on an IO port.
514 //!
515 //! This function is used to configure the pull on an IO.
516 //!
517 //! \param ui32IOId defines the IO to configure.
518 //! - \ref IOID_0
519 //! - ...
520 //! - \ref IOID_31
521 //! \param ui32Pull enables/disables pull on this IO port.
522 //! - \ref IOC_NO_IOPULL
523 //! - \ref IOC_IOPULL_UP
524 //! - \ref IOC_IOPULL_DOWN
525 //!
526 //! \return None
527 //
528 //*****************************************************************************
529 extern void IOCIOPortPullSet(uint32_t ui32IOId, uint32_t ui32Pull);
530 
531 //*****************************************************************************
532 //
533 //! \brief Configure hysteresis on and IO port.
534 //!
535 //! This function is used to enable/disable hysteresis on an IO.
536 //!
537 //! \param ui32IOId defines the IO to configure.
538 //! - \ref IOID_0
539 //! - ...
540 //! - \ref IOID_31
541 //! \param ui32Hysteresis enable/disable input hysteresis on IO.
542 //! - \ref IOC_HYST_ENABLE
543 //! - \ref IOC_HYST_DISABLE
544 //!
545 //! \return None
546 //
547 //*****************************************************************************
548 extern void IOCIOHystSet(uint32_t ui32IOId, uint32_t ui32Hysteresis);
549 
550 //*****************************************************************************
551 //
552 //! \brief Enable/disable IO port as input.
553 //!
554 //! This function is used to enable/disable input on an IO.
555 //!
556 //! \param ui32IOId defines the IO to configure.
557 //! - \ref IOID_0
558 //! - ...
559 //! - \ref IOID_31
560 //! \param ui32Input enable/disable input on IO.
561 //! - \ref IOC_INPUT_ENABLE
562 //! - \ref IOC_INPUT_DISABLE
563 //!
564 //! \return None
565 //
566 //*****************************************************************************
567 extern void IOCIOInputSet(uint32_t ui32IOId, uint32_t ui32Input);
568 
569 //*****************************************************************************
570 //
571 //! \brief Enable/disable the slew control on an IO port.
572 //!
573 //! This function is used to enable/disable slew control on an IO.
574 //!
575 //! \param ui32IOId defines the IO to configure.
576 //! - \ref IOID_0
577 //! - ...
578 //! - \ref IOID_31
579 //! \param ui32SlewEnable enables/disables the slew control on an output.
580 //! - \ref IOC_SLEW_ENABLE
581 //! - \ref IOC_SLEW_DISABLE
582 //!
583 //! \return None
584 //
585 //*****************************************************************************
586 extern void IOCIOSlewCtrlSet(uint32_t ui32IOId, uint32_t ui32SlewEnable);
587 
588 //*****************************************************************************
589 //
590 //! \brief Configure the drive strength source and current mode of an IO port.
591 //!
592 //! The drive strength of an IO is configured by a combination of multiple settings
593 //! in several modules. The drive strength source \ti_code{ui32DrvStrength} is used for controlling
594 //! drive strength at different supply levels. When set to AUTO the battery monitor
595 //! (BATMON) adjusts the drive strength to compensate for changes in supply voltage
596 //! in order to keep IO current constant. Alternatively, drive strength source can
597 //! be controlled manually by selecting one of three options each of which is configurable
598 //! in the AON IOC by \ref AONIOCDriveStrengthSet().
599 //!
600 //! Each drive strength source has three current modes: Low-Current (LC), High-Current (HC), and
601 //! Extended-Current (EC), and typically drive strength doubles when selecting a higher mode.
602 //! I.e. EC = 2 x HC = 4 x LC.
603 //!
604 //! \note Not all IOs support Extended-Current mode. See datasheet for more information
605 //! on the specific device.
606 //!
607 //! \param ui32IOId defines the IO to configure.
608 //! - \ref IOID_0
609 //! - ...
610 //! - \ref IOID_31
611 //! \param ui32IOCurrent selects the IO current mode.
612 //! - \ref IOC_CURRENT_2MA : Low-Current mode. Min 2 mA when \ti_code{ui32DrvStrength} is set to AUTO.
613 //! - \ref IOC_CURRENT_4MA : High-Current mode. Min 4 mA when \ti_code{ui32DrvStrength} is set to AUTO.
614 //! - \ref IOC_CURRENT_8MA : Extended-Current mode. Min 8 mA for double drive strength IOs (min 4 mA for normal IOs) when \ti_code{ui32DrvStrength} is set to AUTO.
615 //! \param ui32DrvStrength sets the source for drive strength control of the IO port.
616 //! - \ref IOC_STRENGTH_AUTO : Automatic drive strength, controlled by AON BATMON based on battery voltage (default).
617 //! - \ref IOC_STRENGTH_MAX : Maximum drive strength, used for low supply levels. Controlled by AON IOC (see \ref AONIOCDriveStrengthSet()).
618 //! - \ref IOC_STRENGTH_MED : Medium drive strength, used for medium supply levels. Controlled by AON IOC (see \ref AONIOCDriveStrengthSet()).
619 //! - \ref IOC_STRENGTH_MIN : Minimum drive strength, used for high supply levels. Controlled by AON IOC (see \ref AONIOCDriveStrengthSet()).
620 //!
621 //! \return None
622 //
623 //*****************************************************************************
624 extern void IOCIODrvStrengthSet(uint32_t ui32IOId, uint32_t ui32IOCurrent,
625                                 uint32_t ui32DrvStrength);
626 
627 //*****************************************************************************
628 //
629 //! \brief Setup the Port ID for this IO.
630 //!
631 //! The \c ui32PortId specifies which functional peripheral to hook up to this
632 //! IO.
633 //!
634 //! \param ui32IOId defines the IO to configure.
635 //! - \ref IOID_0
636 //! - ...
637 //! - \ref IOID_31
638 //! \param ui32PortId selects the port to map to the IO.
639 //! - \ref IOC_PORT_GPIO
640 //! - \ref IOC_PORT_AON_CLK32K
641 //! - \ref IOC_PORT_AUX_IO
642 //! - \ref IOC_PORT_MCU_SSI0_RX
643 //! - \ref IOC_PORT_MCU_SSI0_TX
644 //! - \ref IOC_PORT_MCU_SSI0_FSS
645 //! - \ref IOC_PORT_MCU_SSI0_CLK
646 //! - \ref IOC_PORT_MCU_I2C_MSSDA
647 //! - \ref IOC_PORT_MCU_I2C_MSSCL
648 //! - \ref IOC_PORT_MCU_UART0_RX
649 //! - \ref IOC_PORT_MCU_UART0_TX
650 //! - \ref IOC_PORT_MCU_UART0_CTS
651 //! - \ref IOC_PORT_MCU_UART0_RTS
652 //! - \ref IOC_PORT_MCU_PORT_EVENT0
653 //! - \ref IOC_PORT_MCU_PORT_EVENT1
654 //! - \ref IOC_PORT_MCU_PORT_EVENT2
655 //! - \ref IOC_PORT_MCU_PORT_EVENT3
656 //! - \ref IOC_PORT_MCU_PORT_EVENT4
657 //! - \ref IOC_PORT_MCU_PORT_EVENT5
658 //! - \ref IOC_PORT_MCU_PORT_EVENT6
659 //! - \ref IOC_PORT_MCU_PORT_EVENT7
660 //! - \ref IOC_PORT_MCU_SWV
661 //! - \ref IOC_PORT_MCU_SSI1_RX
662 //! - \ref IOC_PORT_MCU_SSI1_TX
663 //! - \ref IOC_PORT_MCU_SSI1_FSS
664 //! - \ref IOC_PORT_MCU_SSI1_CLK
665 //! - \ref IOC_PORT_MCU_I2S_AD0
666 //! - \ref IOC_PORT_MCU_I2S_AD1
667 //! - \ref IOC_PORT_MCU_I2S_WCLK
668 //! - \ref IOC_PORT_MCU_I2S_BCLK
669 //! - \ref IOC_PORT_MCU_I2S_MCLK
670 //! - \ref IOC_PORT_RFC_TRC
671 //! - \ref IOC_PORT_RFC_GPO0
672 //! - \ref IOC_PORT_RFC_GPO1
673 //! - \ref IOC_PORT_RFC_GPO2
674 //! - \ref IOC_PORT_RFC_GPO3
675 //! - \ref IOC_PORT_RFC_GPI0
676 //! - \ref IOC_PORT_RFC_GPI1
677 //!
678 //! \return None
679 //
680 //*****************************************************************************
681 extern void IOCIOPortIdSet(uint32_t ui32IOId, uint32_t ui32PortId);
682 
683 //*****************************************************************************
684 //
685 //! \brief Register an interrupt handler for an IO edge interrupt.
686 //!
687 //! This function does the actual registering of the interrupt handler. This
688 //! function enables the global interrupt in the interrupt controller; specific
689 //! IO interrupts must be enabled via \ref IOCIntEnable(). It is the interrupt
690 //! handler's responsibility to clear the interrupt source.
691 //!
692 //! \param pfnHandler is a pointer to the function to be called when the
693 //! IOC interrupt occurs.
694 //!
695 //! \return None
696 //!
697 //! \sa \ref IntRegister() for important information about registering interrupt
698 //! handlers.
699 //
700 //*****************************************************************************
701 __STATIC_INLINE void
IOCIntRegister(void (* pfnHandler)(void))702 IOCIntRegister(void (*pfnHandler)(void))
703 {
704     //
705     // Register the interrupt handler.
706     //
707     IntRegister(INT_AON_GPIO_EDGE, pfnHandler);
708 
709     //
710     // Enable the IO edge interrupt.
711     //
712     IntEnable(INT_AON_GPIO_EDGE);
713 }
714 
715 //*****************************************************************************
716 //
717 //! \brief Unregisters an interrupt handler for a IO edge interrupt.
718 //!
719 //! This function does the actual unregistering of the interrupt handler.  It
720 //! clears the handler to be called when an IO edge interrupt occurs.
721 //!
722 //! \return None
723 //!
724 //! \sa \ref IntRegister() for important information about registering interrupt
725 //! handlers.
726 //
727 //*****************************************************************************
728 __STATIC_INLINE void
IOCIntUnregister(void)729 IOCIntUnregister(void)
730 {
731     //
732     // Disable the interrupts.
733     //
734     IntDisable(INT_AON_GPIO_EDGE);
735 
736     //
737     // Unregister the interrupt handler.
738     //
739     IntUnregister(INT_AON_GPIO_EDGE);
740 }
741 
742 //*****************************************************************************
743 //
744 //! \brief Enables individual IO edge detect interrupt.
745 //!
746 //! This function enables the indicated IO edge interrupt sources. Only the
747 //! sources that are enabled can be reflected to the processor interrupt;
748 //! disabled sources have no effect on the processor.
749 //!
750 //! \param ui32IOId is the IO to enable edge detect interrupt for.
751 //!
752 //! \return None
753 //
754 //*****************************************************************************
755 extern void IOCIntEnable(uint32_t ui32IOId);
756 
757 //*****************************************************************************
758 //
759 //! \brief Disables individual IO edge interrupt sources.
760 //!
761 //! This function disables the indicated IO edge interrupt source. Only the
762 //! sources that are enabled can be reflected to the processor interrupt;
763 //! disabled sources have no effect on the processor.
764 //!
765 //! \param ui32IOId is the IO edge interrupt source to be disabled.
766 //! - \ref IOID_0
767 //! - ...
768 //! - \ref IOID_31
769 //!
770 //! \return None
771 //
772 //*****************************************************************************
773 extern void IOCIntDisable(uint32_t ui32IOId);
774 
775 //*****************************************************************************
776 //
777 //! \brief Clears the IO edge interrupt source.
778 //!
779 //! The specified IO edge interrupt source is cleared, so that it no longer
780 //! asserts. This function must be called in the interrupt handler to keep the
781 //! interrupt from being recognized again immediately upon exit.
782 //!
783 //! \note Due to write buffers and synchronizers in the system it may take several
784 //! clock cycles from a register write clearing an event in a module and until the
785 //! event is actually cleared in the NVIC of the system CPU. It is recommended to
786 //! clear the event source early in the interrupt service routine (ISR) to allow
787 //! the event clear to propagate to the NVIC before returning from the ISR.
788 //! At the same time, an early event clear allows new events of the same type to be
789 //! pended instead of ignored if the event is cleared later in the ISR.
790 //! It is the responsibility of the programmer to make sure that enough time has passed
791 //! before returning from the ISR to avoid false re-triggering of the cleared event.
792 //! A simple, although not necessarily optimal, way of clearing an event before
793 //! returning from the ISR is:
794 //! -# Write to clear event (interrupt source). (buffered write)
795 //! -# Dummy read from the event source module. (making sure the write has propagated)
796 //! -# Wait two system CPU clock cycles (user code or two NOPs). (allowing cleared event to propagate through any synchronizers)
797 //!
798 //! \param ui32IOId is the IO causing the interrupt.
799 //! - \ref IOID_0
800 //! - ...
801 //! - \ref IOID_31
802 //!
803 //! \return None
804 //
805 //*****************************************************************************
806 __STATIC_INLINE void
IOCIntClear(uint32_t ui32IOId)807 IOCIntClear(uint32_t ui32IOId)
808 {
809     //
810     // Check the arguments.
811     //
812     ASSERT(ui32IOId <= IOID_31);
813 
814     //
815     // Clear the requested interrupt source by clearing the event.
816     //
817     GPIO_clearEventDio(ui32IOId);
818 }
819 
820 //*****************************************************************************
821 //
822 //! \brief Returns the status of the IO interrupts.
823 //!
824 //! \param ui32IOId is the IO to get the status for.
825 //! - \ref IOID_0
826 //! - ...
827 //! - \ref IOID_31
828 //!
829 //! \return None
830 //
831 //*****************************************************************************
832 __STATIC_INLINE uint32_t
IOCIntStatus(uint32_t ui32IOId)833 IOCIntStatus(uint32_t ui32IOId)
834 {
835     //
836     // Check the arguments.
837     //
838     ASSERT(ui32IOId <= IOID_31);
839 
840     //
841     // Get the event status.
842     //
843     return (GPIO_getEventDio(ui32IOId));
844 }
845 
846 
847 //*****************************************************************************
848 //
849 //! \brief Setup an IO for standard GPIO input.
850 //!
851 //! Setup an IO for standard GPIO input with the following configuration:
852 //! - Port ID:
853 //!   - \ref IOC_PORT_GPIO
854 //! - Configuration:
855 //!   - \ref IOC_CURRENT_2MA
856 //!   - \ref IOC_STRENGTH_AUTO
857 //!   - \ref IOC_NO_IOPULL
858 //!   - \ref IOC_SLEW_DISABLE
859 //!   - \ref IOC_HYST_DISABLE
860 //!   - \ref IOC_NO_EDGE
861 //!   - \ref IOC_INT_DISABLE
862 //!   - \ref IOC_IOMODE_NORMAL
863 //!   - \ref IOC_NO_WAKE_UP
864 //!   - \ref IOC_INPUT_ENABLE
865 //!
866 //! \param ui32IOId is the IO to setup for GPIO input
867 //! - \ref IOID_0
868 //! - ...
869 //! - \ref IOID_31
870 //!
871 //! \return None
872 //
873 //*****************************************************************************
874 extern void IOCPinTypeGpioInput(uint32_t ui32IOId);
875 
876 //*****************************************************************************
877 //
878 //! \brief Setup an IO for standard GPIO output.
879 //!
880 //! Setup an IO for standard GPIO output with the following configuration:
881 //! - Port ID:
882 //!   - \ref IOC_PORT_GPIO
883 //! - Configuration:
884 //!   - \ref IOC_CURRENT_2MA
885 //!   - \ref IOC_STRENGTH_AUTO
886 //!   - \ref IOC_NO_IOPULL
887 //!   - \ref IOC_SLEW_DISABLE
888 //!   - \ref IOC_HYST_DISABLE
889 //!   - \ref IOC_NO_EDGE
890 //!   - \ref IOC_INT_DISABLE
891 //!   - \ref IOC_IOMODE_NORMAL
892 //!   - \ref IOC_NO_WAKE_UP
893 //!   - \ref IOC_INPUT_DISABLE
894 //!
895 //! \param ui32IOId is the IO to setup for GPIO output
896 //! - \ref IOID_0
897 //! - ...
898 //! - \ref IOID_31
899 //!
900 //! \return None
901 //
902 //*****************************************************************************
903 extern void IOCPinTypeGpioOutput(uint32_t ui32IOId);
904 
905 //*****************************************************************************
906 //
907 //! \brief Configure a set of IOs for standard UART peripheral control.
908 //!
909 //! The UART pins must be properly configured for the UART peripheral to
910 //! function correctly. This function provides a typical configuration for
911 //! those pin(s). Other configurations may work as well depending upon the
912 //! board setup (for example, using the on-chip pull-ups).
913 //!
914 //! \note If a UART pin is not intended to be used, then the parameter in the
915 //! function should be \ref IOID_UNUSED.
916 //!
917 //! \param ui32Base is the base address of the UART module.
918 //! \param ui32Rx is the IO Id of the IO to use as UART Receive.
919 //! - \ref IOID_0
920 //! - ...
921 //! - \ref IOID_31
922 //! - \ref IOID_UNUSED
923 //! \param ui32Tx is the IO Id of the IO to use as UART Transmit.
924 //! - \ref IOID_0
925 //! - ...
926 //! - \ref IOID_31
927 //! - \ref IOID_UNUSED
928 //! \param ui32Cts is the IO Id of the IO to use for UART Clear to send.
929 //! - \ref IOID_0
930 //! - ...
931 //! - \ref IOID_31
932 //! - \ref IOID_UNUSED
933 //! \param ui32Rts is the IO Id of the IO to use for UART Request to send.
934 //! - \ref IOID_0
935 //! - ...
936 //! - \ref IOID_31
937 //! - \ref IOID_UNUSED
938 //!
939 //! \return None
940 //
941 //*****************************************************************************
942 extern void IOCPinTypeUart(uint32_t ui32Base, uint32_t ui32Rx,
943                            uint32_t ui32Tx, uint32_t ui32Cts,
944                            uint32_t ui32Rts);
945 
946 //*****************************************************************************
947 //
948 //! \brief Configure a set of IOs for standard SSI peripheral master control.
949 //!
950 //! \param ui32Base is the base address of the SSI module to connect to the IOs
951 //! \param ui32Rx is the IO to connect to the SSI MISO line.
952 //! - \ref IOID_0
953 //! - ...
954 //! - \ref IOID_31
955 //! - \ref IOID_UNUSED
956 //! \param ui32Tx is the IO to connect to the SSI MOSI line.
957 //! - \ref IOID_0
958 //! - ...
959 //! - \ref IOID_31
960 //! - \ref IOID_UNUSED
961 //! \param ui32Fss is the IO to connect to the SSI FSS line.
962 //! - \ref IOID_0
963 //! - ...
964 //! - \ref IOID_31
965 //! - \ref IOID_UNUSED
966 //! \param ui32Clk is the IO to connect to the SSI Clock output line.
967 //! - \ref IOID_0
968 //! - ...
969 //! - \ref IOID_31
970 //! - \ref IOID_UNUSED
971 //!
972 //! \return None
973 //
974 //*****************************************************************************
975 extern void IOCPinTypeSsiMaster(uint32_t ui32Base, uint32_t ui32Rx,
976                                 uint32_t ui32Tx, uint32_t ui32Fss,
977                                 uint32_t ui32Clk);
978 
979 //*****************************************************************************
980 //
981 //! \brief Configure a set of IOs for standard SSI peripheral slave control.
982 //!
983 //! \param ui32Base is the base address of the SSI module to connect to the IOs
984 //! \param ui32Rx is the IO to connect to the SSI MOSI line.
985 //! - \ref IOID_0
986 //! - ...
987 //! - \ref IOID_31
988 //! - \ref IOID_UNUSED
989 //! \param ui32Tx is the IO to connect to the SSI MISO line.
990 //! - \ref IOID_0
991 //! - ...
992 //! - \ref IOID_31
993 //! - \ref IOID_UNUSED
994 //! \param ui32Fss is the IO to connect to the SSI FSS line.
995 //! - \ref IOID_0
996 //! - ...
997 //! - \ref IOID_31
998 //! - \ref IOID_UNUSED
999 //! \param ui32Clk is the IO to connect to the SSI Clock input line.
1000 //!
1001 //! \return None
1002 //
1003 //*****************************************************************************
1004 extern void IOCPinTypeSsiSlave(uint32_t ui32Base, uint32_t ui32Rx,
1005                                uint32_t ui32Tx, uint32_t ui32Fss,
1006                                uint32_t ui32Clk);
1007 
1008 //*****************************************************************************
1009 //
1010 //! \brief Configure a set of IOs for standard I2C peripheral control.
1011 //!
1012 //! \param ui32Base is the base address of the I2C module to connect to the IOs
1013 //! \param ui32Data is the I2C data line
1014 //! - \ref IOID_0
1015 //! - ...
1016 //! - \ref IOID_31
1017 //! - \ref IOID_UNUSED
1018 //! \param ui32Clk is the I2C input clock
1019 //! - \ref IOID_0
1020 //! - ...
1021 //! - \ref IOID_31
1022 //! - \ref IOID_UNUSED
1023 //!
1024 //! \return None
1025 //
1026 //*****************************************************************************
1027 extern void IOCPinTypeI2c(uint32_t ui32Base, uint32_t ui32Data,
1028                           uint32_t ui32Clk);
1029 
1030 
1031 //*****************************************************************************
1032 //
1033 //! \brief Configure an IO for AUX control.
1034 //!
1035 //! Use this function to enable AUX to control a specific IO. Please note, that
1036 //! when using AUX to control the IO, the input/output control in the IOC is
1037 //! bypassed and completely controlled by AUX, so enabling or disabling input
1038 //! in the IOC has no effect.
1039 //!
1040 //! \note The IOs available for AUX control can vary from device to device.
1041 //!
1042 //! \param ui32IOId is the IO to setup for AUX usage.
1043 //! - \ref IOID_0
1044 //! - ...
1045 //! - \ref IOID_31
1046 //! - \ref IOID_UNUSED
1047 //!
1048 //! \return None
1049 //
1050 //*****************************************************************************
1051 extern void IOCPinTypeAux(uint32_t ui32IOId);
1052 
1053 //*****************************************************************************
1054 //
1055 // Support for DriverLib in ROM:
1056 // Redirect to implementation in ROM when available.
1057 //
1058 //*****************************************************************************
1059 #if !defined(DRIVERLIB_NOROM) && !defined(DOXYGEN)
1060     #include <driverlib/rom.h>
1061     #ifdef ROM_IOCPortConfigureSet
1062         #undef  IOCPortConfigureSet
1063         #define IOCPortConfigureSet             ROM_IOCPortConfigureSet
1064     #endif
1065     #ifdef ROM_IOCPortConfigureGet
1066         #undef  IOCPortConfigureGet
1067         #define IOCPortConfigureGet             ROM_IOCPortConfigureGet
1068     #endif
1069     #ifdef ROM_IOCIOShutdownSet
1070         #undef  IOCIOShutdownSet
1071         #define IOCIOShutdownSet                ROM_IOCIOShutdownSet
1072     #endif
1073     #ifdef ROM_IOCIOModeSet
1074         #undef  IOCIOModeSet
1075         #define IOCIOModeSet                    ROM_IOCIOModeSet
1076     #endif
1077     #ifdef ROM_IOCIOIntSet
1078         #undef  IOCIOIntSet
1079         #define IOCIOIntSet                     ROM_IOCIOIntSet
1080     #endif
1081     #ifdef ROM_IOCIOPortPullSet
1082         #undef  IOCIOPortPullSet
1083         #define IOCIOPortPullSet                ROM_IOCIOPortPullSet
1084     #endif
1085     #ifdef ROM_IOCIOHystSet
1086         #undef  IOCIOHystSet
1087         #define IOCIOHystSet                    ROM_IOCIOHystSet
1088     #endif
1089     #ifdef ROM_IOCIOInputSet
1090         #undef  IOCIOInputSet
1091         #define IOCIOInputSet                   ROM_IOCIOInputSet
1092     #endif
1093     #ifdef ROM_IOCIOSlewCtrlSet
1094         #undef  IOCIOSlewCtrlSet
1095         #define IOCIOSlewCtrlSet                ROM_IOCIOSlewCtrlSet
1096     #endif
1097     #ifdef ROM_IOCIODrvStrengthSet
1098         #undef  IOCIODrvStrengthSet
1099         #define IOCIODrvStrengthSet             ROM_IOCIODrvStrengthSet
1100     #endif
1101     #ifdef ROM_IOCIOPortIdSet
1102         #undef  IOCIOPortIdSet
1103         #define IOCIOPortIdSet                  ROM_IOCIOPortIdSet
1104     #endif
1105     #ifdef ROM_IOCIntEnable
1106         #undef  IOCIntEnable
1107         #define IOCIntEnable                    ROM_IOCIntEnable
1108     #endif
1109     #ifdef ROM_IOCIntDisable
1110         #undef  IOCIntDisable
1111         #define IOCIntDisable                   ROM_IOCIntDisable
1112     #endif
1113     #ifdef ROM_IOCPinTypeGpioInput
1114         #undef  IOCPinTypeGpioInput
1115         #define IOCPinTypeGpioInput             ROM_IOCPinTypeGpioInput
1116     #endif
1117     #ifdef ROM_IOCPinTypeGpioOutput
1118         #undef  IOCPinTypeGpioOutput
1119         #define IOCPinTypeGpioOutput            ROM_IOCPinTypeGpioOutput
1120     #endif
1121     #ifdef ROM_IOCPinTypeUart
1122         #undef  IOCPinTypeUart
1123         #define IOCPinTypeUart                  ROM_IOCPinTypeUart
1124     #endif
1125     #ifdef ROM_IOCPinTypeSsiMaster
1126         #undef  IOCPinTypeSsiMaster
1127         #define IOCPinTypeSsiMaster             ROM_IOCPinTypeSsiMaster
1128     #endif
1129     #ifdef ROM_IOCPinTypeSsiSlave
1130         #undef  IOCPinTypeSsiSlave
1131         #define IOCPinTypeSsiSlave              ROM_IOCPinTypeSsiSlave
1132     #endif
1133     #ifdef ROM_IOCPinTypeI2c
1134         #undef  IOCPinTypeI2c
1135         #define IOCPinTypeI2c                   ROM_IOCPinTypeI2c
1136     #endif
1137     #ifdef ROM_IOCPinTypeAux
1138         #undef  IOCPinTypeAux
1139         #define IOCPinTypeAux                   ROM_IOCPinTypeAux
1140     #endif
1141 #endif
1142 
1143 //*****************************************************************************
1144 //
1145 // Mark the end of the C bindings section for C++ compilers.
1146 //
1147 //*****************************************************************************
1148 #ifdef __cplusplus
1149 }
1150 #endif
1151 
1152 #endif // __IOC_H__
1153 
1154 //*****************************************************************************
1155 //
1156 //! Close the Doxygen group.
1157 //! @}
1158 //! @}
1159 //
1160 //*****************************************************************************
1161