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>
This commit is contained in:
parent
4d91f5abe9
commit
d3ec6654f5
3 changed files with 118 additions and 32 deletions
45
drivers/gpio/gpio_handlers.c
Normal file
45
drivers/gpio/gpio_handlers.c
Normal file
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* 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 *);
|
Loading…
Add table
Add a link
Reference in a new issue