Lines Matching +full:data +full:- +full:lines
2 * GPIO tools - helpers library for the GPIO tools
21 #include "gpio-utils.h"
23 #define COMSUMER "gpio-utils"
30 * ioctl, including request and release for lines of gpio, read/write
32 * lines of gpio, user should use this type of api.
35 * following api will request gpio lines, do the operation and then
36 * release these lines.
39 * gpiotools_request_linehandle() - request gpio lines in a gpiochip
42 * @lines: An array desired lines, specified by offset
44 * @nline: The number of lines to request.
47 * @data: Default value will be set to gpio when flag is
53 * Request gpio lines through the ioctl provided by chardev. User
56 * gpiotools_release_linehandle() to release these lines after that.
61 int gpiotools_request_linehandle(const char *device_name, unsigned int *lines, in gpiotools_request_linehandle() argument
63 struct gpiohandle_data *data, in gpiotools_request_linehandle() argument
74 return -ENOMEM; in gpiotools_request_linehandle()
77 if (fd == -1) { in gpiotools_request_linehandle()
78 ret = -errno; in gpiotools_request_linehandle()
85 req.lineoffsets[i] = lines[i]; in gpiotools_request_linehandle()
89 req.lines = nlines; in gpiotools_request_linehandle()
91 memcpy(req.default_values, data, sizeof(req.default_values)); in gpiotools_request_linehandle()
94 if (ret == -1) { in gpiotools_request_linehandle()
95 ret = -errno; in gpiotools_request_linehandle()
101 if (close(fd) == -1) in gpiotools_request_linehandle()
110 * @data: The array of values want to set.
115 int gpiotools_set_values(const int fd, struct gpiohandle_data *data) in gpiotools_set_values() argument
119 ret = ioctl(fd, GPIOHANDLE_SET_LINE_VALUES_IOCTL, data); in gpiotools_set_values()
120 if (ret == -1) { in gpiotools_set_values()
121 ret = -errno; in gpiotools_set_values()
134 * @data: The array of values get from hardware.
139 int gpiotools_get_values(const int fd, struct gpiohandle_data *data) in gpiotools_get_values() argument
143 ret = ioctl(fd, GPIOHANDLE_GET_LINE_VALUES_IOCTL, data); in gpiotools_get_values()
144 if (ret == -1) { in gpiotools_get_values()
145 ret = -errno; in gpiotools_get_values()
167 if (ret == -1) { in gpiotools_release_linehandle()
169 ret = -errno; in gpiotools_release_linehandle()
186 struct gpiohandle_data data; in gpiotools_get() local
187 unsigned int lines[] = {line}; in gpiotools_get() local
189 gpiotools_gets(device_name, lines, 1, &data); in gpiotools_get()
190 return data.values[0]; in gpiotools_get()
195 * gpiotools_gets(): Get values from specific lines.
198 * @lines: An array desired lines, specified by offset
200 * @nline: The number of lines to request.
201 * @data: The array of values get from gpiochip.
206 int gpiotools_gets(const char *device_name, unsigned int *lines, in gpiotools_gets() argument
207 unsigned int nlines, struct gpiohandle_data *data) in gpiotools_gets() argument
213 ret = gpiotools_request_linehandle(device_name, lines, nlines, in gpiotools_gets()
214 GPIOHANDLE_REQUEST_INPUT, data, in gpiotools_gets()
220 ret = gpiotools_get_values(fd, data); in gpiotools_gets()
238 struct gpiohandle_data data; in gpiotools_set() local
239 unsigned int lines[] = {line}; in gpiotools_set() local
241 data.values[0] = value; in gpiotools_set()
242 return gpiotools_sets(device_name, lines, 1, &data); in gpiotools_set()
246 * gpiotools_sets(): Set values to specific lines.
249 * @lines: An array desired lines, specified by offset
251 * @nline: The number of lines to request.
252 * @data: The array of values set to gpiochip, must be
258 int gpiotools_sets(const char *device_name, unsigned int *lines, in gpiotools_sets() argument
259 unsigned int nlines, struct gpiohandle_data *data) in gpiotools_sets() argument
263 ret = gpiotools_request_linehandle(device_name, lines, nlines, in gpiotools_sets()
264 GPIOHANDLE_REQUEST_OUTPUT, data, in gpiotools_sets()