1.1 --- a/stage2/task_gpio.c Tue Jul 11 18:45:08 2017 +0200
1.2 +++ b/stage2/task_gpio.c Wed Jul 12 15:46:53 2017 +0200
1.3 @@ -23,6 +23,7 @@
1.4 #include "paging.h"
1.5 #include "memory.h"
1.6 #include "task_gpio.h"
1.7 +#include "gpio.h"
1.8
1.9 void task_gpio_init(uint8_t task)
1.10 {
1.11 @@ -41,49 +42,54 @@
1.12
1.13 void task_gpio_as_input(uint8_t pin)
1.14 {
1.15 - TASK_REG_GPIO_PXFUNC(pin / 32) = (1 << (pin % 32));
1.16 - TASK_REG_GPIO_PXSELC(pin / 32) = (1 << (pin % 32));
1.17 - TASK_REG_GPIO_PXDIRC(pin / 32) = (1 << (pin % 32));
1.18 + void *gpio_port_base = jz4740_gpio_get_port((void *) TASK_GPIO_BASE, pin / 32);
1.19 + jz4740_gpio_as_input(gpio_port_base, pin % 32);
1.20 }
1.21
1.22 void task_gpio_as_output(uint8_t pin)
1.23 {
1.24 - TASK_REG_GPIO_PXFUNC(pin / 32) = (1 << (pin % 32));
1.25 - TASK_REG_GPIO_PXSELC(pin / 32) = (1 << (pin % 32));
1.26 - TASK_REG_GPIO_PXDIRS(pin / 32) = (1 << (pin % 32));
1.27 + void *gpio_port_base = jz4740_gpio_get_port((void *) TASK_GPIO_BASE, pin / 32);
1.28 + jz4740_gpio_as_output(gpio_port_base, pin % 32);
1.29 }
1.30
1.31 void task_gpio_enable_pull(uint8_t pin)
1.32 {
1.33 - TASK_REG_GPIO_PXPEC(pin / 32) = (1 << (pin % 32));
1.34 + void *gpio_port_base = jz4740_gpio_get_port((void *) TASK_GPIO_BASE, pin / 32);
1.35 + jz4740_gpio_enable_pull(gpio_port_base, pin % 32);
1.36 }
1.37
1.38 void task_gpio_disable_pull(uint8_t pin)
1.39 {
1.40 - TASK_REG_GPIO_PXPES(pin / 32) = (1 << (pin % 32));
1.41 + void *gpio_port_base = jz4740_gpio_get_port((void *) TASK_GPIO_BASE, pin / 32);
1.42 + jz4740_gpio_disable_pull(gpio_port_base, pin % 32);
1.43 }
1.44
1.45 -inline int task_gpio_get_pin(uint8_t pin)
1.46 +int task_gpio_get_pin(uint8_t pin)
1.47 {
1.48 - return TASK_REG_GPIO_PXPIN(pin / 32) & (1 << (pin % 32));
1.49 + void *gpio_port_base = jz4740_gpio_get_port((void *) TASK_GPIO_BASE, pin / 32);
1.50 + return jz4740_gpio_get_pin(gpio_port_base, pin % 32);
1.51 }
1.52
1.53 -inline void task_gpio_set_pin(uint8_t pin)
1.54 +void task_gpio_set_pin(uint8_t pin)
1.55 {
1.56 - TASK_REG_GPIO_PXDATS(pin / 32) = (1 << (pin % 32));
1.57 + void *gpio_port_base = jz4740_gpio_get_port((void *) TASK_GPIO_BASE, pin / 32);
1.58 + jz4740_gpio_set_pin(gpio_port_base, pin % 32);
1.59 }
1.60
1.61 -inline void task_gpio_clear_pin(uint8_t pin)
1.62 +void task_gpio_clear_pin(uint8_t pin)
1.63 {
1.64 - TASK_REG_GPIO_PXDATC(pin / 32) = (1 << (pin % 32));
1.65 + void *gpio_port_base = jz4740_gpio_get_port((void *) TASK_GPIO_BASE, pin / 32);
1.66 + jz4740_gpio_clear_pin(gpio_port_base, pin % 32);
1.67 }
1.68
1.69 -inline void task_gpio_mask_irq(uint8_t pin)
1.70 +void task_gpio_mask_irq(uint8_t pin)
1.71 {
1.72 - TASK_REG_GPIO_PXIMS(pin / 32) = (1 << (pin % 32));
1.73 + void *gpio_port_base = jz4740_gpio_get_port((void *) TASK_GPIO_BASE, pin / 32);
1.74 + jz4740_gpio_mask_irq(gpio_port_base, pin % 32);
1.75 }
1.76
1.77 -inline void task_gpio_unmask_irq(uint8_t pin)
1.78 +void task_gpio_unmask_irq(uint8_t pin)
1.79 {
1.80 - TASK_REG_GPIO_PXIMC(pin / 32) = (1 << (pin % 32));
1.81 + void *gpio_port_base = jz4740_gpio_get_port((void *) TASK_GPIO_BASE, pin / 32);
1.82 + jz4740_gpio_unmask_irq(gpio_port_base, pin % 32);
1.83 }