1 #ifndef __TASK_GPIO_H__ 2 #define __TASK_GPIO_H__ 3 4 #include "memory.h" 5 #include "xburst_types.h" 6 7 /* Special task versions of GPIO operations. */ 8 9 #define GPIO_BASE_PHYSICAL (GPIO_BASE - KSEG1_BASE) 10 11 #define TASK_GPIO_PXPIN(n) (TASK_GPIO_BASE + (0x00 + (n)*0x100)) /* PIN Level Register */ 12 13 #define TASK_GPIO_PXDAT(n) (TASK_GPIO_BASE + (0x10 + (n)*0x100)) /* Port Data Register */ 14 #define TASK_GPIO_PXDATS(n) (TASK_GPIO_BASE + (0x14 + (n)*0x100)) /* Port Data Set Register */ 15 #define TASK_GPIO_PXDATC(n) (TASK_GPIO_BASE + (0x18 + (n)*0x100)) /* Port Data Clear Register */ 16 17 #define TASK_GPIO_PXIM(n) (TASK_GPIO_BASE + (0x20 + (n)*0x100)) /* Interrupt Mask Register */ 18 #define TASK_GPIO_PXIMS(n) (TASK_GPIO_BASE + (0x24 + (n)*0x100)) /* Interrupt Mask Set Reg */ 19 #define TASK_GPIO_PXIMC(n) (TASK_GPIO_BASE + (0x28 + (n)*0x100)) /* Interrupt Mask Clear Reg */ 20 21 #define TASK_GPIO_PXPE(n) (TASK_GPIO_BASE + (0x30 + (n)*0x100)) /* Pull Enable Register */ 22 #define TASK_GPIO_PXPES(n) (TASK_GPIO_BASE + (0x34 + (n)*0x100)) /* Pull Enable Set Reg. */ 23 #define TASK_GPIO_PXPEC(n) (TASK_GPIO_BASE + (0x38 + (n)*0x100)) /* Pull Enable Clear Reg. */ 24 25 #define TASK_GPIO_PXFUN(n) (TASK_GPIO_BASE + (0x40 + (n)*0x100)) /* Function Register */ 26 #define TASK_GPIO_PXFUNS(n) (TASK_GPIO_BASE + (0x44 + (n)*0x100)) /* Function Set Register */ 27 #define TASK_GPIO_PXFUNC(n) (TASK_GPIO_BASE + (0x48 + (n)*0x100)) /* Function Clear Register */ 28 29 #define TASK_GPIO_PXSEL(n) (TASK_GPIO_BASE + (0x50 + (n)*0x100)) /* Select Register */ 30 #define TASK_GPIO_PXSELS(n) (TASK_GPIO_BASE + (0x54 + (n)*0x100)) /* Select Set Register */ 31 #define TASK_GPIO_PXSELC(n) (TASK_GPIO_BASE + (0x58 + (n)*0x100)) /* Select Clear Register */ 32 33 #define TASK_GPIO_PXDIR(n) (TASK_GPIO_BASE + (0x60 + (n)*0x100)) /* Direction Register */ 34 #define TASK_GPIO_PXDIRS(n) (TASK_GPIO_BASE + (0x64 + (n)*0x100)) /* Direction Set Register */ 35 #define TASK_GPIO_PXDIRC(n) (TASK_GPIO_BASE + (0x68 + (n)*0x100)) /* Direction Clear Register */ 36 37 #define TASK_REG_GPIO_PXPIN(n) REG32(TASK_GPIO_PXPIN((n))) 38 39 #define TASK_REG_GPIO_PXDAT(n) REG32(TASK_GPIO_PXDAT((n))) 40 #define TASK_REG_GPIO_PXDATS(n) REG32(TASK_GPIO_PXDATS((n))) 41 #define TASK_REG_GPIO_PXDATC(n) REG32(TASK_GPIO_PXDATC((n))) 42 43 #define TASK_REG_GPIO_PXIM(n) REG32(TASK_GPIO_PXIM((n))) 44 #define TASK_REG_GPIO_PXIMS(n) REG32(TASK_GPIO_PXIMS((n))) 45 #define TASK_REG_GPIO_PXIMC(n) REG32(TASK_GPIO_PXIMC((n))) 46 47 #define TASK_REG_GPIO_PXPE(n) REG32(TASK_GPIO_PXPE((n))) 48 #define TASK_REG_GPIO_PXPES(n) REG32(TASK_GPIO_PXPES((n))) 49 #define TASK_REG_GPIO_PXPEC(n) REG32(TASK_GPIO_PXPEC((n))) 50 51 #define TASK_REG_GPIO_PXFUN(n) REG32(TASK_GPIO_PXFUN((n))) 52 #define TASK_REG_GPIO_PXFUNS(n) REG32(TASK_GPIO_PXFUNS((n))) 53 #define TASK_REG_GPIO_PXFUNC(n) REG32(TASK_GPIO_PXFUNC((n))) 54 55 #define TASK_REG_GPIO_PXSEL(n) REG32(TASK_GPIO_PXSEL((n))) 56 #define TASK_REG_GPIO_PXSELS(n) REG32(TASK_GPIO_PXSELS((n))) 57 #define TASK_REG_GPIO_PXSELC(n) REG32(TASK_GPIO_PXSELC((n))) 58 59 #define TASK_REG_GPIO_PXDIR(n) REG32(TASK_GPIO_PXDIR((n))) 60 #define TASK_REG_GPIO_PXDIRS(n) REG32(TASK_GPIO_PXDIRS((n))) 61 #define TASK_REG_GPIO_PXDIRC(n) REG32(TASK_GPIO_PXDIRC((n))) 62 63 void task_gpio_init(uint8_t task); 64 void task_gpio_as_input(uint8_t pin); 65 void task_gpio_as_output(uint8_t pin); 66 67 void task_gpio_enable_pull(uint8_t pin); 68 void task_gpio_disable_pull(uint8_t pin); 69 70 int task_gpio_get_pin(uint8_t pin); 71 void task_gpio_set_pin(uint8_t pin); 72 void task_gpio_clear_pin(uint8_t pin); 73 74 void task_gpio_mask_irq(uint8_t pin); 75 void task_gpio_unmask_irq(uint8_t pin); 76 77 #endif /* __TASK_GPIO_H__ */