/****************************************************************************** * Filename: gpio.h * Revised: $Date: 2013-02-06 15:01:04 +0100 (Wed, 06 Feb 2013) $ * Revision: $Revision: 9297 $ * * Description: Prototypes for the GPIO driver. * * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com * * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ******************************************************************************/ #ifndef __GPIO_H__ #define __GPIO_H__ //***************************************************************************** // // If building with a C++ compiler, make all of the definitions in this header // have a C binding. // //***************************************************************************** #ifdef __cplusplus extern "C" { #endif #include "hw_types.h" //***************************************************************************** // // The following values define the bit field for the ui8Pins argument to several // of the APIs. // //***************************************************************************** #define GPIO_PIN_0 0x00000001 // GPIO pin 0 #define GPIO_PIN_1 0x00000002 // GPIO pin 1 #define GPIO_PIN_2 0x00000004 // GPIO pin 2 #define GPIO_PIN_3 0x00000008 // GPIO pin 3 #define GPIO_PIN_4 0x00000010 // GPIO pin 4 #define GPIO_PIN_5 0x00000020 // GPIO pin 5 #define GPIO_PIN_6 0x00000040 // GPIO pin 6 #define GPIO_PIN_7 0x00000080 // GPIO pin 7 //***************************************************************************** // // Values that can be passed to GPIODirModeSet as the ui32PinIO parameter, and // returned from GPIODirModeGet. // //***************************************************************************** #define GPIO_DIR_MODE_IN 0x00000000 // Pin is a GPIO input #define GPIO_DIR_MODE_OUT 0x00000001 // Pin is a GPIO output #define GPIO_DIR_MODE_HW 0x00000002 // Pin is a peripheral function //***************************************************************************** // // Values that can be passed to GPIOIntTypeSet as the ui32IntType parameter, and // returned from GPIOIntTypeGet. // //***************************************************************************** #define GPIO_FALLING_EDGE 0x00000000 // Interrupt on falling edge #define GPIO_RISING_EDGE 0x00000004 // Interrupt on rising edge #define GPIO_BOTH_EDGES 0x00000001 // Interrupt on both edges #define GPIO_LOW_LEVEL 0x00000002 // Interrupt on low level #define GPIO_HIGH_LEVEL 0x00000007 // Interrupt on high level //***************************************************************************** // // Values that can be passed to the GPIOPowIntTypeSet function as the ui32IntType // parameter and returned from the GPIOPowIntTypeGet function. // //***************************************************************************** #define GPIO_POW_RISING_EDGE 0x00000000 // Interrupt on rising edge #define GPIO_POW_FALLING_EDGE 0x00000001 // Interrupt on falling edge //***************************************************************************** // // The following are values that can be passed to the GPIOIntWakeupEnable() // and GPIOIntWakeupDiable() API as the ui32Config parameter. // //***************************************************************************** #define GPIO_IWE_PORT_A 0x00000001 // Port A Wake up Interrupt #define GPIO_IWE_PORT_B 0x00000002 // Port B Wake up Interrupt #define GPIO_IWE_PORT_C 0x00000004 // Port C Wake up Interrupt #define GPIO_IWE_PORT_D 0x00000008 // Port D Wake up Interrupt #define GPIO_IWE_USB 0x00000010 // USB Wake up Interrupt #define GPIO_IWE_SM_TIMER 0x00000020 // SM Timer Wake up Interrupt //***************************************************************************** // // Prototypes for the APIs. // //***************************************************************************** extern void GPIODirModeSet(uint32_t ui32Port, uint8_t ui8Pins, uint32_t ui32PinIO); extern uint32_t GPIODirModeGet(uint32_t ui32Port, uint8_t ui8Pin); extern uint32_t GPIOGetIntNumber(uint32_t ui32Port); extern void GPIOIntTypeSet(uint32_t ui32Port, uint8_t ui8Pins, uint32_t ui32IntType); extern uint32_t GPIOIntTypeGet(uint32_t ui32Port, uint8_t ui8Pin); extern void GPIOPinIntEnable(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPinIntDisable(uint32_t ui32Port, uint8_t ui8Pins); extern uint32_t GPIOPinIntStatus(uint32_t ui32Port, bool bMasked); extern void GPIOPinIntClear(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPortIntRegister(uint32_t ui32Port, void (*pfnHandler)(void)); extern void GPIOPortIntUnregister(uint32_t ui32Port); extern uint32_t GPIOPinRead(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPinWrite(uint32_t ui32Port, uint8_t ui8Pins, uint8_t ui8Val); extern void GPIOPinTypeGPIOInput(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPinTypeGPIOOutput(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPinTypeI2C(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPinTypeSSI(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPinTypeTimer(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPinTypeUARTInput(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPinTypeUARTOutput(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPowIntEnable(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPowIntDisable(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOPowIntTypeSet(uint32_t ui32Port, uint8_t ui8Pins, uint32_t ui32IntType); extern uint32_t GPIOPowIntTypeGet(uint32_t ui32Port, uint8_t ui8Pin); extern uint32_t GPIOPowIntStatus(uint32_t ui32Port, bool bMasked); extern void GPIOPowIntClear(uint32_t ui32Port, uint8_t ui8Pins); extern void GPIOIntWakeupEnable(uint32_t ui32Config); extern void GPIOIntWakeupDisable(uint32_t ui32Config); //***************************************************************************** // // Mark the end of the C bindings section for C++ compilers. // //***************************************************************************** #ifdef __cplusplus } #endif #endif // __GPIO_H__