Go to the documentation of this file.00001 #ifndef _DEV_GPIO_H_
00002 #define _DEV_GPIO_H_
00003
00045 #include <cfg/arch/gpio.h>
00046 #include <dev/irqreg.h>
00047
00048 #define NUTGPIO_PORT 0
00049 #define NUTGPIO_PORTA 1
00050 #define NUTGPIO_PORTB 2
00051 #define NUTGPIO_PORTC 3
00052 #define NUTGPIO_PORTD 4
00053 #define NUTGPIO_PORTE 5
00054 #define NUTGPIO_PORTF 6
00055 #define NUTGPIO_PORTG 7
00056 #define NUTGPIO_PORTH 8
00057 #define NUTGPIO_PORTI 9
00058 #define NUTGPIO_PORTJ 10
00059 #define NUTGPIO_PORTK 11
00060 #define NUTGPIO_PORTL 12
00061
00062 #define NUTGPIO_EXTINT0 1
00063 #define NUTGPIO_EXTINT1 2
00064 #define NUTGPIO_EXTINT2 3
00065 #define NUTGPIO_EXTINT3 4
00066 #define NUTGPIO_EXTINT4 5
00067 #define NUTGPIO_EXTINT5 6
00068 #define NUTGPIO_EXTINT6 7
00069 #define NUTGPIO_EXTINT7 8
00070 #define NUTGPIO_EXTFIQ0 -1
00071
00078 #define GPIO_CFG_DISABLED 0x00000001
00079
00086 #define GPIO_CFG_OUTPUT 0x00000002
00087
00091 #define GPIO_CFG_PULLUP 0x00000004
00092
00098 #define GPIO_CFG_MULTIDRIVE 0x00000008
00099
00103 #define GPIO_CFG_DEBOUNCE 0x00000010
00104
00109 #define GPIO_CFG_PERIPHERAL0 0x00000020
00110
00115 #define GPIO_CFG_PERIPHERAL1 0x00000040
00116
00121 #define GPIO_CFG_PERIPHERAL2 0x00000080
00122
00127 #define GPIO_CFG_PERIPHERAL3 0x00000100
00128
00129 typedef struct {
00130 void (*iov_handler) (void *);
00131 void *iov_arg;
00132 } GPIO_VECTOR;
00133
00134 typedef struct {
00135 IRQ_HANDLER *ios_sig;
00136 void (*ios_handler) (void *);
00137 int (*ios_ctl) (int cmd, void *param, int bit);
00138 GPIO_VECTOR *ios_vector;
00139 } GPIO_SIGNAL;
00140
00141 #if defined(PIO_ISR)
00142 extern GPIO_SIGNAL sig_GPIO;
00143 #endif
00144 #if defined(PIOA_ISR)
00145 extern GPIO_SIGNAL sig_GPIO1;
00146 #endif
00147 #if defined(PIOB_ISR)
00148 extern GPIO_SIGNAL sig_GPIO2;
00149 #endif
00150 #if defined(PIOC_ISR)
00151 extern GPIO_SIGNAL sig_GPIO3;
00152 #endif
00153
00154 __BEGIN_DECLS
00155
00156
00157 extern uint32_t GpioPinConfigGet(int bank, int bit);
00158 extern int GpioPinConfigSet(int bank, int bit, uint32_t flags);
00159 extern int GpioPortConfigSet(int bank, unsigned int mask, uint32_t flags);
00160
00161 extern int GpioPinGet(int bank, int bit);
00162 extern void GpioPinSet(int bank, int bit, int value);
00163 extern void GpioPinSetLow(int bank, int bit);
00164 extern void GpioPinSetHigh(int bank, int bit);
00165
00166 extern unsigned int GpioPortGet(int bank);
00167 extern void GpioPortSet(int bank, unsigned int value);
00168 extern void GpioPortSetLow(int bank, unsigned int mask);
00169 extern void GpioPortSetHigh(int bank, unsigned int mask);
00170
00171 extern int GpioRegisterIrqHandler(GPIO_SIGNAL * sig, int bit, void (*handler) (void *), void *arg);
00172 extern int GpioIrqEnable(GPIO_SIGNAL * sig, int bit);
00173 extern int GpioIrqDisable(GPIO_SIGNAL * sig, int bit);
00174
00175 __END_DECLS
00176
00177 #endif