diff options
author | inmarket <andrewh@inmarket.com.au> | 2014-10-06 17:05:16 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2014-10-06 17:05:48 +1000 |
commit | 211254ed6c5a945be18334aa540de55db885000c (patch) | |
tree | 19b94dd69a4a95d4b718c06c0d6eb27f6aa7a9a8 /boards/base/RaspberryPi/example-FreeRTOS/Drivers/gpio.c | |
parent | 3348128fe289aae37f2df46802709aaa7aedb0c1 (diff) | |
download | uGFX-211254ed6c5a945be18334aa540de55db885000c.tar.gz uGFX-211254ed6c5a945be18334aa540de55db885000c.tar.bz2 uGFX-211254ed6c5a945be18334aa540de55db885000c.zip |
Add support for FreeRTOS into make system
Diffstat (limited to 'boards/base/RaspberryPi/example-FreeRTOS/Drivers/gpio.c')
-rw-r--r-- | boards/base/RaspberryPi/example-FreeRTOS/Drivers/gpio.c | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/boards/base/RaspberryPi/example-FreeRTOS/Drivers/gpio.c b/boards/base/RaspberryPi/example-FreeRTOS/Drivers/gpio.c deleted file mode 100644 index 485de897..00000000 --- a/boards/base/RaspberryPi/example-FreeRTOS/Drivers/gpio.c +++ /dev/null @@ -1,134 +0,0 @@ -/** - * Quick and very Dirty GPIO API. - * - **/ - -#include "gpio.h" - -typedef struct { - unsigned long GPFSEL[6]; ///< Function selection registers. - unsigned long Reserved_1; - unsigned long GPSET[2]; - unsigned long Reserved_2; - unsigned long GPCLR[2]; - unsigned long Reserved_3; - unsigned long GPLEV[2]; - unsigned long Reserved_4; - unsigned long GPEDS[2]; - unsigned long Reserved_5; - unsigned long GPREN[2]; - unsigned long Reserved_6; - unsigned long GPFEN[2]; - unsigned long Reserved_7; - unsigned long GPHEN[2]; - unsigned long Reserved_8; - unsigned long GPLEN[2]; - unsigned long Reserved_9; - unsigned long GPAREN[2]; - unsigned long Reserved_A; - unsigned long GPAFEN[2]; - unsigned long Reserved_B; - unsigned long GPPUD[1]; - unsigned long GPPUDCLK[2]; - //Ignoring the reserved and test bytes -} BCM2835_GPIO_REGS; - -volatile BCM2835_GPIO_REGS * const pRegs = (BCM2835_GPIO_REGS *) (0x20200000); - - -void SetGpioFunction(unsigned int pinNum, unsigned int funcNum) { - - int offset = pinNum / 10; - - unsigned long val = pRegs->GPFSEL[offset]; // Read in the original register value. - - int item = pinNum % 10; - val &= ~(0x7 << (item * 3)); - val |= ((funcNum & 0x7) << (item * 3)); - pRegs->GPFSEL[offset] = val; -} - -void SetGpioDirection(unsigned int pinNum, enum GPIO_DIR dir) { - SetGpioFunction(pinNum,dir); -} - -void SetGpio(unsigned int pinNum, unsigned int pinVal) { - unsigned long offset=pinNum/32; - unsigned long mask=(1<<(pinNum%32)); - - if(pinVal) { - pRegs->GPSET[offset]|=mask; - } else { - pRegs->GPCLR[offset]|=mask; - } -} - -int ReadGpio(unsigned int pinNum) { - return ((pRegs->GPLEV[pinNum/32])>>(pinNum%32))&1; -} - -void EnableGpioDetect(unsigned int pinNum, enum DETECT_TYPE type) -{ - unsigned long mask=(1<<pinNum); - unsigned long offset=pinNum/32; - - switch(type) { - case DETECT_RISING: - pRegs->GPREN[offset]|=mask; - break; - case DETECT_FALLING: - pRegs->GPFEN[offset]|=mask; - break; - case DETECT_HIGH: - pRegs->GPHEN[offset]|=mask; - break; - case DETECT_LOW: - pRegs->GPLEN[offset]|=mask; - break; - case DETECT_RISING_ASYNC: - pRegs->GPAREN[offset]|=mask; - break; - case DETECT_FALLING_ASYNC: - pRegs->GPAFEN[offset]|=mask; - break; - case DETECT_NONE: - break; - } -} - -void DisableGpioDetect(unsigned int pinNum, enum DETECT_TYPE type) -{ - unsigned long mask=~(1<<(pinNum%32)); - unsigned long offset=pinNum/32; - - switch(type) { - case DETECT_RISING: - pRegs->GPREN[offset]&=mask; - break; - case DETECT_FALLING: - pRegs->GPFEN[offset]&=mask; - break; - case DETECT_HIGH: - pRegs->GPHEN[offset]&=mask; - break; - case DETECT_LOW: - pRegs->GPLEN[offset]&=mask; - break; - case DETECT_RISING_ASYNC: - pRegs->GPAREN[offset]&=mask; - break; - case DETECT_FALLING_ASYNC: - pRegs->GPAFEN[offset]&=mask; - break; - case DETECT_NONE: - break; - } -} - -void ClearGpioInterrupt(unsigned int pinNum) -{ - unsigned long mask=(1<<(pinNum%32)); - unsigned long offset=pinNum/32; - - pRegs->GPEDS[offset]=mask; -} |