zephyr/drivers/gpio/gpio_handlers.c
Andrew Boie d3ec6654f5 drivers: gpio: add system call handlers
Many APIs had two versions, by port and by pin, which called the same
API with different parameters. This has been reorganized to reduce
the number of system calls.

Callback registration API skipped.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2017-10-30 13:20:19 -07:00

46 lines
1.2 KiB
C

/*
* Copyright (c) 2017 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <gpio.h>
#include <syscall_handler.h>
_SYSCALL_HANDLER(gpio_config, port, access_op, pin, flags)
{
_SYSCALL_OBJ(port, K_OBJ_DRIVER_GPIO);
return _impl_gpio_config((struct device *)port, access_op, pin, flags);
}
_SYSCALL_HANDLER(gpio_write, port, access_op, pin, value)
{
_SYSCALL_OBJ(port, K_OBJ_DRIVER_GPIO);
return _impl_gpio_write((struct device *)port, access_op, pin, value);
}
_SYSCALL_HANDLER(gpio_read, port, access_op, pin, value)
{
_SYSCALL_OBJ(port, K_OBJ_DRIVER_GPIO);
_SYSCALL_MEMORY_WRITE(value, sizeof(u32_t));
return _impl_gpio_read((struct device *)port, access_op, pin,
(u32_t *)value);
}
_SYSCALL_HANDLER(gpio_enable_callback, port, access_op, pin)
{
_SYSCALL_OBJ(port, K_OBJ_DRIVER_GPIO);
return _impl_gpio_enable_callback((struct device *)port, access_op,
pin);
}
_SYSCALL_HANDLER(gpio_disable_callback, port, access_op, pin)
{
_SYSCALL_OBJ(port, K_OBJ_DRIVER_GPIO);
return _impl_gpio_disable_callback((struct device *)port, access_op,
pin);
}
_SYSCALL_HANDLER1_SIMPLE(gpio_get_pending_int, K_OBJ_DRIVER_GPIO,
struct device *);