CC26xx Driver Library
ioc.c
Go to the documentation of this file.
1 /******************************************************************************
2 * Filename: ioc.c
3 * Revised: 2015-11-19 12:18:15 +0100 (Thu, 19 Nov 2015)
4 * Revision: 45147
5 *
6 * Description: Driver for the IOC.
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 #include <driverlib/ioc.h>
40 
41 //*****************************************************************************
42 //
43 // Handle support for DriverLib in ROM:
44 // This section will undo prototype renaming made in the header file
45 //
46 //*****************************************************************************
47 #if !defined(DOXYGEN)
48  #undef IOCPortConfigureSet
49  #define IOCPortConfigureSet NOROM_IOCPortConfigureSet
50  #undef IOCPortConfigureGet
51  #define IOCPortConfigureGet NOROM_IOCPortConfigureGet
52  #undef IOCIOShutdownSet
53  #define IOCIOShutdownSet NOROM_IOCIOShutdownSet
54  #undef IOCIOModeSet
55  #define IOCIOModeSet NOROM_IOCIOModeSet
56  #undef IOCIOIntSet
57  #define IOCIOIntSet NOROM_IOCIOIntSet
58  #undef IOCIOPortPullSet
59  #define IOCIOPortPullSet NOROM_IOCIOPortPullSet
60  #undef IOCIOHystSet
61  #define IOCIOHystSet NOROM_IOCIOHystSet
62  #undef IOCIOInputSet
63  #define IOCIOInputSet NOROM_IOCIOInputSet
64  #undef IOCIOSlewCtrlSet
65  #define IOCIOSlewCtrlSet NOROM_IOCIOSlewCtrlSet
66  #undef IOCIODrvStrengthSet
67  #define IOCIODrvStrengthSet NOROM_IOCIODrvStrengthSet
68  #undef IOCIOPortIdSet
69  #define IOCIOPortIdSet NOROM_IOCIOPortIdSet
70  #undef IOCIntEnable
71  #define IOCIntEnable NOROM_IOCIntEnable
72  #undef IOCIntDisable
73  #define IOCIntDisable NOROM_IOCIntDisable
74  #undef IOCPinTypeGpioInput
75  #define IOCPinTypeGpioInput NOROM_IOCPinTypeGpioInput
76  #undef IOCPinTypeGpioOutput
77  #define IOCPinTypeGpioOutput NOROM_IOCPinTypeGpioOutput
78  #undef IOCPinTypeUart
79  #define IOCPinTypeUart NOROM_IOCPinTypeUart
80  #undef IOCPinTypeSsiMaster
81  #define IOCPinTypeSsiMaster NOROM_IOCPinTypeSsiMaster
82  #undef IOCPinTypeSsiSlave
83  #define IOCPinTypeSsiSlave NOROM_IOCPinTypeSsiSlave
84  #undef IOCPinTypeI2c
85  #define IOCPinTypeI2c NOROM_IOCPinTypeI2c
86  #undef IOCPinTypeAux
87  #define IOCPinTypeAux NOROM_IOCPinTypeAux
88 #endif
89 
90 //*****************************************************************************
91 //
92 // Set the configuration of an IO port
93 //
94 //*****************************************************************************
95 void
96 IOCPortConfigureSet(uint32_t ui32IOId, uint32_t ui32PortId,
97  uint32_t ui32IOConfig)
98 {
99  uint32_t ui32Reg;
100 
101  //
102  // Check the arguments.
103  //
104  ASSERT(ui32IOId <= IOID_31);
105  ASSERT(ui32PortId <= IOC_PORT_RFC_GPI1);
106 
107  //
108  // Get the register address.
109  //
110  ui32Reg = IOC_BASE + ( ui32IOId << 2 );
111 
112  //
113  // Configure the port.
114  //
115  HWREG(ui32Reg) = ui32IOConfig | ui32PortId;
116 }
117 
118 //*****************************************************************************
119 //
120 // Get the configuration of an IO port
121 //
122 //*****************************************************************************
123 uint32_t
124 IOCPortConfigureGet(uint32_t ui32IOId)
125 {
126  uint32_t ui32Reg;
127 
128  //
129  // Check the arguments.
130  //
131  ASSERT(ui32IOId <= IOID_31);
132 
133  //
134  // Get the register address.
135  //
136  ui32Reg = IOC_BASE + ( ui32IOId << 2 );
137 
138  //
139  // Return the IO configuration.
140  //
141  return HWREG(ui32Reg);
142 }
143 
144 //*****************************************************************************
145 //
146 // Set wake-up on an IO port
147 //
148 //*****************************************************************************
149 void
150 IOCIOShutdownSet(uint32_t ui32IOId, uint32_t ui32IOShutdown)
151 {
152  uint32_t ui32Reg;
153  uint32_t ui32Config;
154 
155  //
156  // Check the arguments.
157  //
158  ASSERT(ui32IOId <= IOID_31);
159  ASSERT((ui32IOShutdown == IOC_NO_WAKE_UP) ||
160  (ui32IOShutdown == IOC_WAKE_ON_LOW) ||
161  (ui32IOShutdown == IOC_WAKE_ON_HIGH));
162 
163  //
164  // Get the register address.
165  //
166  ui32Reg = IOC_BASE + ( ui32IOId << 2 );
167 
168  //
169  // Configure the IO.
170  //
171  ui32Config = HWREG(ui32Reg);
172  ui32Config &= ~IOC_IOCFG0_WU_CFG_M;
173  HWREG(ui32Reg) = ui32Config | ui32IOShutdown;
174 }
175 
176 
177 //*****************************************************************************
178 //
179 // Set the IO Mode of an IO Port
180 //
181 //*****************************************************************************
182 void
183 IOCIOModeSet(uint32_t ui32IOId, uint32_t ui32IOMode)
184 {
185  uint32_t ui32Reg;
186  uint32_t ui32Config;
187 
188  //
189  // Check the arguments.
190  //
191  ASSERT(ui32IOId <= IOID_31);
192  ASSERT((ui32IOMode == IOC_IOMODE_NORMAL) ||
193  (ui32IOMode == IOC_IOMODE_INV) ||
194  (ui32IOMode == IOC_IOMODE_OPEN_DRAIN_NORMAL) ||
195  (ui32IOMode == IOC_IOMODE_OPEN_DRAIN_INV) ||
196  (ui32IOMode == IOC_IOMODE_OPEN_SRC_NORMAL) ||
197  (ui32IOMode == IOC_IOMODE_OPEN_SRC_INV));
198 
199  //
200  // Get the register address.
201  //
202  ui32Reg = IOC_BASE + ( ui32IOId << 2 );
203 
204  //
205  // Configure the IO.
206  //
207  ui32Config = HWREG(ui32Reg);
208  ui32Config &= ~IOC_IOCFG0_IOMODE_M;
209  HWREG(ui32Reg) = ui32Config | ui32IOMode;
210 }
211 
212 //*****************************************************************************
213 //
214 // Setup interrupt detection on an IO Port
215 //
216 //*****************************************************************************
217 void
218 IOCIOIntSet(uint32_t ui32IOId, uint32_t ui32Int, uint32_t ui32EdgeDet)
219 {
220  uint32_t ui32IOReg;
221  uint32_t ui32Config;
222 
223  //
224  // Check the arguments.
225  //
226  ASSERT(ui32IOId <= IOID_31);
227  ASSERT((ui32Int == IOC_INT_ENABLE) ||
228  (ui32Int == IOC_INT_DISABLE));
229  ASSERT((ui32EdgeDet == IOC_NO_EDGE) ||
230  (ui32EdgeDet == IOC_FALLING_EDGE) ||
231  (ui32EdgeDet == IOC_RISING_EDGE) ||
232  (ui32EdgeDet == IOC_BOTH_EDGES));
233 
234  //
235  // Get the register address.
236  //
237  ui32IOReg = IOC_BASE + ( ui32IOId << 2 );
238 
239  //
240  // Configure the IO.
241  //
242  ui32Config = HWREG(ui32IOReg);
244  HWREG(ui32IOReg) = ui32Config | ((ui32Int ? IOC_IOCFG0_EDGE_IRQ_EN : 0) | ui32EdgeDet);
245 }
246 
247 //*****************************************************************************
248 //
249 // Set the pull on an IO port
250 //
251 //*****************************************************************************
252 void
253 IOCIOPortPullSet(uint32_t ui32IOId, uint32_t ui32Pull)
254 {
255  uint32_t ui32IOReg;
256  uint32_t ui32Config;
257 
258  //
259  // Check the argument.
260  //
261  ASSERT(ui32IOId <= IOID_31);
262  ASSERT((ui32Pull == IOC_NO_IOPULL) ||
263  (ui32Pull == IOC_IOPULL_UP) ||
264  (ui32Pull == IOC_IOPULL_DOWN));
265 
266  //
267  // Get the register address.
268  //
269  ui32IOReg = IOC_BASE + ( ui32IOId << 2 );
270 
271  //
272  // Configure the IO.
273  //
274  ui32Config = HWREG(ui32IOReg);
275  ui32Config &= ~IOC_IOCFG0_PULL_CTL_M;
276  HWREG(ui32IOReg) = ui32Config | ui32Pull;
277 }
278 
279 //*****************************************************************************
280 //
281 // Configure hysteresis on and IO port
282 //
283 //*****************************************************************************
284 void
285 IOCIOHystSet(uint32_t ui32IOId, uint32_t ui32Hysteresis)
286 {
287  uint32_t ui32IOReg;
288  uint32_t ui32Config;
289 
290  //
291  // Check the arguments.
292  //
293  ASSERT(ui32IOId <= IOID_31);
294  ASSERT((ui32Hysteresis == IOC_HYST_ENABLE) ||
295  (ui32Hysteresis == IOC_HYST_DISABLE));
296 
297  //
298  // Get the register address.
299  //
300  ui32IOReg = IOC_BASE + ( ui32IOId << 2 );
301 
302  //
303  // Configure the IO.
304  //
305  ui32Config = HWREG(ui32IOReg);
306  ui32Config &= ~IOC_IOCFG0_HYST_EN;
307  HWREG(ui32IOReg) = ui32Config | ui32Hysteresis;
308 }
309 
310 //*****************************************************************************
311 //
312 // Enable/disable IO port as input
313 //
314 //*****************************************************************************
315 void
316 IOCIOInputSet(uint32_t ui32IOId, uint32_t ui32Input)
317 {
318  uint32_t ui32IOReg;
319  uint32_t ui32Config;
320 
321  //
322  // Check the arguments.
323  //
324  ASSERT(ui32IOId <= IOID_31);
325  ASSERT((ui32Input == IOC_INPUT_ENABLE) ||
326  (ui32Input == IOC_INPUT_DISABLE));
327 
328  //
329  // Get the register address.
330  //
331  ui32IOReg = IOC_BASE + ( ui32IOId << 2 );
332 
333  //
334  // Configure the IO.
335  //
336  ui32Config = HWREG(ui32IOReg);
337  ui32Config &= ~IOC_IOCFG0_IE;
338  HWREG(ui32IOReg) = ui32Config | ui32Input;
339 }
340 
341 //*****************************************************************************
342 //
343 // Enable/disable the slew control on an IO port
344 //
345 //*****************************************************************************
346 void
347 IOCIOSlewCtrlSet(uint32_t ui32IOId, uint32_t ui32SlewEnable)
348 {
349  uint32_t ui32IOReg;
350  uint32_t ui32Config;
351 
352  //
353  // Check the arguments.
354  //
355  ASSERT(ui32IOId <= IOID_31);
356  ASSERT((ui32SlewEnable == IOC_SLEW_ENABLE) ||
357  (ui32SlewEnable == IOC_SLEW_DISABLE));
358 
359  //
360  // Get the register address.
361  //
362  ui32IOReg = IOC_BASE + ( ui32IOId << 2 );
363 
364  //
365  // Configure the IO.
366  //
367  ui32Config = HWREG(ui32IOReg);
368  ui32Config &= ~IOC_IOCFG0_SLEW_RED;
369  HWREG(ui32IOReg) = ui32Config | ui32SlewEnable;
370 }
371 
372 //*****************************************************************************
373 //
374 // Configure the drive strength and maximum current of an IO port
375 //
376 //*****************************************************************************
377 void
378 IOCIODrvStrengthSet(uint32_t ui32IOId, uint32_t ui32IOCurrent,
379  uint32_t ui32DrvStrength)
380 {
381  uint32_t ui32IOReg;
382  uint32_t ui32Config;
383 
384  //
385  // Check the arguments.
386  //
387  ASSERT(ui32IOId <= IOID_31);
388  ASSERT((ui32IOCurrent == IOC_CURRENT_2MA) ||
389  (ui32IOCurrent == IOC_CURRENT_4MA) ||
390  (ui32IOCurrent == IOC_CURRENT_8MA));
391  ASSERT((ui32DrvStrength == IOC_STRENGTH_MIN) ||
392  (ui32DrvStrength == IOC_STRENGTH_MAX) ||
393  (ui32DrvStrength == IOC_STRENGTH_MED) ||
394  (ui32DrvStrength == IOC_STRENGTH_AUTO));
395 
396  //
397  // Get the register address.
398  //
399  ui32IOReg = IOC_BASE + ( ui32IOId << 2 );
400 
401  //
402  // Configure the IO.
403  //
404  ui32Config = HWREG(ui32IOReg);
405  ui32Config &= ~(IOC_IOCFG0_IOCURR_M | IOC_IOCFG0_IOSTR_M);
406  HWREG(ui32IOReg) = ui32Config | (ui32IOCurrent | ui32DrvStrength);
407 }
408 
409 //*****************************************************************************
410 //
411 // Setup the Port ID for this IO
412 //
413 //*****************************************************************************
414 void
415 IOCIOPortIdSet(uint32_t ui32IOId, uint32_t ui32PortId)
416 {
417  uint32_t ui32IOReg;
418  uint32_t ui32Config;
419 
420  //
421  // Check the arguments.
422  //
423  ASSERT(ui32IOId <= IOID_31);
424  ASSERT(ui32PortId <= IOC_PORT_RFC_GPI1);
425 
426  //
427  // Get the register address.
428  //
429  ui32IOReg = IOC_BASE + ( ui32IOId << 2 );
430 
431  //
432  // Configure the IO.
433  //
434  ui32Config = HWREG(ui32IOReg);
435  ui32Config &= ~IOC_IOCFG0_PORT_ID_M;
436  HWREG(ui32IOReg) = ui32Config | ui32PortId;
437 }
438 
439 //*****************************************************************************
440 //
441 // Enables individual IO edge detect interrupt
442 //
443 //*****************************************************************************
444 void
445 IOCIntEnable(uint32_t ui32IOId)
446 {
447  uint32_t ui32IOReg;
448  uint32_t ui32Config;
449 
450  //
451  // Check the arguments.
452  //
453  ASSERT(ui32IOId <= IOID_31);
454 
455  //
456  // Get the register address.
457  //
458  ui32IOReg = IOC_BASE + ( ui32IOId << 2 );
459 
460  //
461  // Enable the specified interrupt.
462  //
463  ui32Config = HWREG(ui32IOReg);
464  ui32Config |= IOC_IOCFG0_EDGE_IRQ_EN;
465  HWREG(ui32IOReg) = ui32Config;
466 }
467 
468 //*****************************************************************************
469 //
470 // Disables individual IO edge interrupt sources
471 //
472 //*****************************************************************************
473 void
474 IOCIntDisable(uint32_t ui32IOId)
475 {
476  uint32_t ui32IOReg;
477  uint32_t ui32Config;
478 
479  //
480  // Check the arguments.
481  //
482  ASSERT(ui32IOId <= IOID_31);
483 
484  //
485  // Get the register address.
486  //
487  ui32IOReg = IOC_BASE + ( ui32IOId << 2 );
488 
489  //
490  // Disable the specified interrupt.
491  //
492  ui32Config = HWREG(ui32IOReg);
493  ui32Config &= ~IOC_IOCFG0_EDGE_IRQ_EN;
494  HWREG(ui32IOReg) = ui32Config;
495 }
496 
497 //*****************************************************************************
498 //
499 // Setup an IO for standard GPIO input
500 //
501 //*****************************************************************************
502 void
503 IOCPinTypeGpioInput(uint32_t ui32IOId)
504 {
505  //
506  // Check the arguments.
507  //
508  ASSERT(ui32IOId <= IOID_31);
509 
510  //
511  // Setup the IO for standard input.
512  //
514 
515  //
516  // Enable input mode in the GPIO module.
517  //
519 }
520 
521 //*****************************************************************************
522 //
523 // Setup an IO for standard GPIO output
524 //
525 //*****************************************************************************
526 void
527 IOCPinTypeGpioOutput(uint32_t ui32IOId)
528 {
529  //
530  // Check the arguments.
531  //
532  ASSERT(ui32IOId <= IOID_31);
533 
534  //
535  // Setup the IO for standard input.
536  //
538 
539  //
540  // Enable output mode in the GPIO module.
541  //
543 }
544 
545 //*****************************************************************************
546 //
547 // Configure a set of IOs for standard UART peripheral control
548 //
549 //*****************************************************************************
550 void
551 IOCPinTypeUart(uint32_t ui32Base, uint32_t ui32Rx, uint32_t ui32Tx,
552  uint32_t ui32Cts, uint32_t ui32Rts)
553 {
554  //
555  // Check the arguments.
556  //
557  ASSERT(ui32Base == UART0_BASE);
558  ASSERT((ui32Rx <= IOID_31) || (ui32Rx == IOID_UNUSED));
559  ASSERT((ui32Tx <= IOID_31) || (ui32Tx == IOID_UNUSED));
560  ASSERT((ui32Cts <= IOID_31) || (ui32Cts == IOID_UNUSED));
561  ASSERT((ui32Rts <= IOID_31) || (ui32Rts == IOID_UNUSED));
562 
563  //
564  // Setup the IOs in the desired configuration.
565  //
566  if(ui32Rx != IOID_UNUSED)
567  {
569  }
570  if(ui32Tx != IOID_UNUSED)
571  {
573  }
574  if(ui32Cts != IOID_UNUSED)
575  {
577  }
578  if(ui32Rts != IOID_UNUSED)
579  {
581  }
582 }
583 
584 //*****************************************************************************
585 //
586 // Configure a set of IOs for standard SSI peripheral master control
587 //
588 //*****************************************************************************
589 void
590 IOCPinTypeSsiMaster(uint32_t ui32Base, uint32_t ui32Rx,
591  uint32_t ui32Tx, uint32_t ui32Fss,
592  uint32_t ui32Clk)
593 {
594  //
595  // Check the arguments.
596  //
597  ASSERT((ui32Base == SSI0_BASE) || (ui32Base == SSI1_BASE));
598  ASSERT((ui32Rx <= IOID_31) || (ui32Rx == IOID_UNUSED));
599  ASSERT((ui32Tx <= IOID_31) || (ui32Tx == IOID_UNUSED));
600  ASSERT((ui32Fss <= IOID_31) || (ui32Fss == IOID_UNUSED));
601  ASSERT((ui32Clk <= IOID_31) || (ui32Clk == IOID_UNUSED));
602 
603  //
604  // Setup the IOs in the desired configuration.
605  //
606  if(ui32Base == SSI0_BASE)
607  {
608  if(ui32Rx != IOID_UNUSED)
609  {
611  }
612  if(ui32Tx != IOID_UNUSED)
613  {
615  }
616  if(ui32Fss != IOID_UNUSED)
617  {
619  }
620  if(ui32Clk != IOID_UNUSED)
621  {
623  }
624  }
625  else
626  {
627  if(ui32Rx != IOID_UNUSED)
628  {
630  }
631  if(ui32Tx != IOID_UNUSED)
632  {
634  }
635  if(ui32Fss != IOID_UNUSED)
636  {
638  }
639  if(ui32Clk != IOID_UNUSED)
640  {
642  }
643  }
644 }
645 
646 //*****************************************************************************
647 //
648 // Configure a set of IOs for standard SSI peripheral slave control
649 //
650 //*****************************************************************************
651 void
652 IOCPinTypeSsiSlave(uint32_t ui32Base, uint32_t ui32Rx,
653  uint32_t ui32Tx, uint32_t ui32Fss,
654  uint32_t ui32Clk)
655 {
656  //
657  // Check the arguments.
658  //
659  ASSERT((ui32Base == SSI0_BASE) || (ui32Base == SSI1_BASE));
660  ASSERT((ui32Rx <= IOID_31) || (ui32Rx == IOID_UNUSED));
661  ASSERT((ui32Tx <= IOID_31) || (ui32Tx == IOID_UNUSED));
662  ASSERT((ui32Fss <= IOID_31) || (ui32Fss == IOID_UNUSED));
663  ASSERT((ui32Clk <= IOID_31) || (ui32Clk == IOID_UNUSED));
664 
665  //
666  // Setup the IOs in the desired configuration.
667  //
668  if(ui32Base == SSI0_BASE)
669  {
670  if(ui32Rx != IOID_UNUSED)
671  {
673  }
674  if(ui32Tx != IOID_UNUSED)
675  {
677  }
678  if(ui32Fss != IOID_UNUSED)
679  {
681  }
682  if(ui32Clk != IOID_UNUSED)
683  {
685  }
686  }
687  else
688  {
689  if(ui32Rx != IOID_UNUSED)
690  {
692  }
693  if(ui32Tx != IOID_UNUSED)
694  {
696  }
697  if(ui32Fss != IOID_UNUSED)
698  {
700  }
701  if(ui32Clk != IOID_UNUSED)
702  {
704  }
705  }
706 }
707 
708 //*****************************************************************************
709 //
710 // Configure a set of IOs for standard I2C peripheral control
711 //
712 //*****************************************************************************
713 void
714 IOCPinTypeI2c(uint32_t ui32Base, uint32_t ui32Data, uint32_t ui32Clk)
715 {
716  uint32_t ui32IOConfig;
717 
718  //
719  // Check the arguments.
720  //
721  ASSERT((ui32Data <= IOID_31) || (ui32Data == IOID_UNUSED));
722  ASSERT((ui32Clk <= IOID_31) || (ui32Clk == IOID_UNUSED));
723 
724  //
725  // Define the IO configuration parameters.
726  //
727  ui32IOConfig = IOC_CURRENT_2MA | IOC_STRENGTH_AUTO | IOC_IOPULL_UP |
731 
732  //
733  // Setup the IOs in the desired configuration.
734  //
735  IOCPortConfigureSet(ui32Data, IOC_PORT_MCU_I2C_MSSDA, ui32IOConfig);
736  IOCPortConfigureSet(ui32Clk, IOC_PORT_MCU_I2C_MSSCL, ui32IOConfig);
737 }
738 
739 
740 //*****************************************************************************
741 //
742 // Configure an IO for AUX control
743 //
744 //*****************************************************************************
745 void
746 IOCPinTypeAux(uint32_t ui32IOId)
747 {
748  //
749  // Check the arguments.
750  //
751  ASSERT((ui32IOId <= IOID_31) || (ui32IOId == IOID_UNUSED));
752 
753  //
754  // Setup the IO.
755  //
757 }
#define IOC_PORT_MCU_SSI1_RX
Definition: ioc.h:190
#define IOC_IOMODE_OPEN_SRC_INV
Definition: ioc.h:242
#define IOC_PORT_MCU_UART0_RTS
Definition: ioc.h:180
#define IOC_PORT_MCU_SSI1_TX
Definition: ioc.h:191
#define IOC_FALLING_EDGE
Definition: ioc.h:252
#define IOC_WAKE_ON_HIGH
Definition: ioc.h:226
void IOCIntDisable(uint32_t ui32IOId)
Disables individual IO edge interrupt sources.
Definition: ioc.c:474
#define IOC_INPUT_ENABLE
Definition: ioc.h:214
void IOCIOSlewCtrlSet(uint32_t ui32IOId, uint32_t ui32SlewEnable)
Enable/disable the slew control on an IO port.
Definition: ioc.c:347
#define IOC_PORT_MCU_I2C_MSSDA
Definition: ioc.h:175
void IOCPinTypeSsiMaster(uint32_t ui32Base, uint32_t ui32Rx, uint32_t ui32Tx, uint32_t ui32Fss, uint32_t ui32Clk)
Configure a set of IOs for standard SSI peripheral master control.
Definition: ioc.c:590
#define IOC_STRENGTH_MED
Definition: ioc.h:283
void IOCPinTypeI2c(uint32_t ui32Base, uint32_t ui32Data, uint32_t ui32Clk)
Configure a set of IOs for standard I2C peripheral control.
Definition: ioc.c:714
void IOCIOShutdownSet(uint32_t ui32IOId, uint32_t ui32IOShutdown)
Set wake-up on an IO port.
Definition: ioc.c:150
#define IOC_IOMODE_OPEN_DRAIN_INV
Definition: ioc.h:237
#define IOC_STRENGTH_MAX
Definition: ioc.h:281
#define IOC_IOMODE_OPEN_SRC_NORMAL
Definition: ioc.h:240
#define IOC_PORT_MCU_SSI1_CLK
Definition: ioc.h:193
#define IOC_IOPULL_DOWN
Definition: ioc.h:266
#define IOC_PORT_AUX_IO
Definition: ioc.h:170
#define IOID_UNUSED
Definition: ioc.h:152
#define IOC_BOTH_EDGES
Definition: ioc.h:254
#define IOC_STD_INPUT
Definition: ioc.h:292
#define IOC_PORT_GPIO
Definition: ioc.h:168
#define IOC_IOPULL_UP
Definition: ioc.h:265
#define IOC_PORT_MCU_I2C_MSSCL
Definition: ioc.h:176
void IOCPinTypeSsiSlave(uint32_t ui32Base, uint32_t ui32Rx, uint32_t ui32Tx, uint32_t ui32Fss, uint32_t ui32Clk)
Configure a set of IOs for standard SSI peripheral slave control.
Definition: ioc.c:652
void IOCIOHystSet(uint32_t ui32IOId, uint32_t ui32Hysteresis)
Configure hysteresis on and IO port.
Definition: ioc.c:285
void IOCIOInputSet(uint32_t ui32IOId, uint32_t ui32Input)
Enable/disable IO port as input.
Definition: ioc.c:316
#define GPIO_OUTPUT_ENABLE
Definition: gpio.h:130
void IOCIntEnable(uint32_t ui32IOId)
Enables individual IO edge detect interrupt.
Definition: ioc.c:445
#define IOC_IOMODE_INV
Definition: ioc.h:234
#define IOC_STD_OUTPUT
Definition: ioc.h:297
void IOCIODrvStrengthSet(uint32_t ui32IOId, uint32_t ui32IOCurrent, uint32_t ui32DrvStrength)
Configure the drive strength source and current mode of an IO port.
Definition: ioc.c:378
#define IOC_INT_DISABLE
Definition: ioc.h:256
#define IOC_PORT_MCU_SSI0_TX
Definition: ioc.h:172
#define IOC_PORT_MCU_UART0_TX
Definition: ioc.h:178
#define IOC_SLEW_ENABLE
Definition: ioc.h:212
#define IOC_RISING_EDGE
Definition: ioc.h:253
#define IOC_INPUT_DISABLE
Definition: ioc.h:215
void IOCPinTypeAux(uint32_t ui32IOId)
Configure an IO for AUX control.
Definition: ioc.c:746
#define IOC_NO_WAKE_UP
Definition: ioc.h:224
#define IOC_PORT_MCU_SSI1_FSS
Definition: ioc.h:192
#define IOC_WAKE_ON_LOW
Definition: ioc.h:225
void IOCIOIntSet(uint32_t ui32IOId, uint32_t ui32Int, uint32_t ui32EdgeDet)
Setup interrupt detection on an IO Port.
Definition: ioc.c:218
#define ASSERT(expr)
Definition: debug.h:74
uint32_t IOCPortConfigureGet(uint32_t ui32IOId)
Get the configuration of an IO port.
Definition: ioc.c:124
#define IOC_PORT_MCU_SSI0_CLK
Definition: ioc.h:174
#define IOC_STRENGTH_MIN
Definition: ioc.h:285
#define IOC_CURRENT_2MA
Definition: ioc.h:275
void IOCPortConfigureSet(uint32_t ui32IOId, uint32_t ui32PortId, uint32_t ui32IOConfig)
Set the configuration of an IO port.
Definition: ioc.c:96
#define IOC_NO_EDGE
Definition: ioc.h:251
void IOCPinTypeGpioOutput(uint32_t ui32IOId)
Setup an IO for standard GPIO output.
Definition: ioc.c:527
#define IOC_PORT_MCU_SSI0_RX
Definition: ioc.h:171
#define GPIO_OUTPUT_DISABLE
Definition: gpio.h:129
void IOCIOPortIdSet(uint32_t ui32IOId, uint32_t ui32PortId)
Setup the Port ID for this IO.
Definition: ioc.c:415
#define IOC_IOMODE_OPEN_DRAIN_NORMAL
Definition: ioc.h:235
#define IOC_HYST_ENABLE
Definition: ioc.h:216
void IOCPinTypeGpioInput(uint32_t ui32IOId)
Setup an IO for standard GPIO input.
Definition: ioc.c:503
#define IOC_PORT_MCU_UART0_RX
Definition: ioc.h:177
#define IOC_SLEW_DISABLE
Definition: ioc.h:213
#define IOC_CURRENT_8MA
Definition: ioc.h:277
#define IOC_PORT_MCU_UART0_CTS
Definition: ioc.h:179
#define IOC_CURRENT_4MA
Definition: ioc.h:276
#define IOC_INT_ENABLE
Definition: ioc.h:255
#define IOC_STRENGTH_AUTO
Definition: ioc.h:279
#define IOC_HYST_DISABLE
Definition: ioc.h:217
#define IOID_31
Definition: ioc.h:151
#define IOC_IOMODE_NORMAL
Definition: ioc.h:233
void IOCPinTypeUart(uint32_t ui32Base, uint32_t ui32Rx, uint32_t ui32Tx, uint32_t ui32Cts, uint32_t ui32Rts)
Configure a set of IOs for standard UART peripheral control.
Definition: ioc.c:551
#define IOC_PORT_MCU_SSI0_FSS
Definition: ioc.h:173
#define IOC_NO_IOPULL
Definition: ioc.h:264
#define IOC_PORT_RFC_GPI1
Definition: ioc.h:205
void IOCIOModeSet(uint32_t ui32IOId, uint32_t ui32IOMode)
Set the IO Mode of an IO Port.
Definition: ioc.c:183
void IOCIOPortPullSet(uint32_t ui32IOId, uint32_t ui32Pull)
Set the pull on an IO port.
Definition: ioc.c:253
static void GPIO_setOutputEnableDio(uint32_t dioNumber, uint32_t outputEnableValue)
Sets output enable of a specific DIO.
Definition: gpio.h:504