diff options
Diffstat (limited to 'src/kernel/gpio.c')
-rw-r--r-- | src/kernel/gpio.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/kernel/gpio.c b/src/kernel/gpio.c index 33423b9..3bd67cb 100644 --- a/src/kernel/gpio.c +++ b/src/kernel/gpio.c @@ -25,29 +25,29 @@ static GPIO_TypeDef *gpio_ports[8] = { GPIOE, GPIOF, GPIOG, GPIOH }; -void gpio_svc(uint32_t *args) +void gpio_svc(uint32_t n, uint32_t *ret, uint32_t *args) { - GPIO_TypeDef *port = gpio_ports[args[1] >> 4]; - uint32_t pin = args[1] & 0xF; + GPIO_TypeDef *port = gpio_ports[args[0] >> 4]; + uint32_t pin = args[0] & 0xF; - switch (args[0]) { + switch (n) { case 0: - gpio_mode(port, pin, args[2]); + gpio_mode(port, pin, args[1]); break; case 1: - gpio_type(port, pin, args[2]); + gpio_type(port, pin, args[1]); break; case 2: - gpio_pupd(port, pin, args[2]); + gpio_pupd(port, pin, args[1]); break; case 3: - gpio_speed(port, pin, args[2]); + gpio_speed(port, pin, args[1]); break; case 4: - gpio_dout(port, pin, args[2]); + gpio_dout(port, pin, args[1]); break; case 5: - *((int *)args[2]) = gpio_din(port, pin); + *((int *)ret) = gpio_din(port, pin); break; } } |