1 /* SPDX-License-Identifier: GPL-2.0-only */ << 2 /* 1 /* 3 * GPIO tools - utility helpers library for th 2 * GPIO tools - utility helpers library for the GPIO tools 4 * 3 * 5 * Copyright (C) 2015 Linus Walleij 4 * Copyright (C) 2015 Linus Walleij 6 * 5 * 7 * Portions copied from iio_utils and lssio: 6 * Portions copied from iio_utils and lssio: 8 * Copyright (c) 2010 Manuel Stahl <manuel.sta 7 * Copyright (c) 2010 Manuel Stahl <manuel.stahl@iis.fraunhofer.de> 9 * Copyright (c) 2008 Jonathan Cameron 8 * Copyright (c) 2008 Jonathan Cameron 10 * * 9 * * >> 10 * This program is free software; you can redistribute it and/or modify it >> 11 * under the terms of the GNU General Public License version 2 as published by >> 12 * the Free Software Foundation. 11 */ 13 */ 12 #ifndef _GPIO_UTILS_H_ 14 #ifndef _GPIO_UTILS_H_ 13 #define _GPIO_UTILS_H_ 15 #define _GPIO_UTILS_H_ 14 16 15 #include <stdbool.h> << 16 #include <string.h> 17 #include <string.h> 17 #include <linux/types.h> << 18 18 19 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof( 19 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) 20 20 21 static inline int check_prefix(const char *str 21 static inline int check_prefix(const char *str, const char *prefix) 22 { 22 { 23 return strlen(str) > strlen(prefix) && 23 return strlen(str) > strlen(prefix) && 24 strncmp(str, prefix, strlen(pr 24 strncmp(str, prefix, strlen(prefix)) == 0; 25 } 25 } 26 26 27 int gpiotools_request_line(const char *device_ !! 27 int gpiotools_request_linehandle(const char *device_name, unsigned int *lines, 28 unsigned int *lines !! 28 unsigned int nlines, unsigned int flag, 29 unsigned int num_li !! 29 struct gpiohandle_data *data, 30 struct gpio_v2_line !! 30 const char *consumer_label); 31 const char *consume !! 31 int gpiotools_set_values(const int fd, struct gpiohandle_data *data); 32 int gpiotools_set_values(const int fd, struct !! 32 int gpiotools_get_values(const int fd, struct gpiohandle_data *data); 33 int gpiotools_get_values(const int fd, struct !! 33 int gpiotools_release_linehandle(const int fd); 34 int gpiotools_release_line(const int fd); << 35 34 36 int gpiotools_get(const char *device_name, uns 35 int gpiotools_get(const char *device_name, unsigned int line); 37 int gpiotools_gets(const char *device_name, un 36 int gpiotools_gets(const char *device_name, unsigned int *lines, 38 unsigned int num_lines, uns !! 37 unsigned int nlines, struct gpiohandle_data *data); 39 int gpiotools_set(const char *device_name, uns 38 int gpiotools_set(const char *device_name, unsigned int line, 40 unsigned int value); 39 unsigned int value); 41 int gpiotools_sets(const char *device_name, un 40 int gpiotools_sets(const char *device_name, unsigned int *lines, 42 unsigned int num_lines, uns !! 41 unsigned int nlines, struct gpiohandle_data *data); 43 << 44 /* helper functions for gpio_v2_line_values bi << 45 static inline void gpiotools_set_bit(__u64 *b, << 46 { << 47 *b |= _BITULL(n); << 48 } << 49 << 50 static inline void gpiotools_change_bit(__u64 << 51 { << 52 *b ^= _BITULL(n); << 53 } << 54 << 55 static inline void gpiotools_clear_bit(__u64 * << 56 { << 57 *b &= ~_BITULL(n); << 58 } << 59 << 60 static inline int gpiotools_test_bit(__u64 b, << 61 { << 62 return !!(b & _BITULL(n)); << 63 } << 64 << 65 static inline void gpiotools_assign_bit(__u64 << 66 { << 67 if (value) << 68 gpiotools_set_bit(b, n); << 69 else << 70 gpiotools_clear_bit(b, n); << 71 } << 72 42 73 #endif /* _GPIO_UTILS_H_ */ 43 #endif /* _GPIO_UTILS_H_ */ 74 44
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.