1 /* SPDX-License-Identifier: GPL-2.0-only */ 1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 2 /* 3 * GPIO tools - utility helpers library for th 3 * GPIO tools - utility helpers library for the GPIO tools 4 * 4 * 5 * Copyright (C) 2015 Linus Walleij 5 * Copyright (C) 2015 Linus Walleij 6 * 6 * 7 * Portions copied from iio_utils and lssio: 7 * Portions copied from iio_utils and lssio: 8 * Copyright (c) 2010 Manuel Stahl <manuel.sta 8 * Copyright (c) 2010 Manuel Stahl <manuel.stahl@iis.fraunhofer.de> 9 * Copyright (c) 2008 Jonathan Cameron 9 * Copyright (c) 2008 Jonathan Cameron 10 * * 10 * * 11 */ 11 */ 12 #ifndef _GPIO_UTILS_H_ 12 #ifndef _GPIO_UTILS_H_ 13 #define _GPIO_UTILS_H_ 13 #define _GPIO_UTILS_H_ 14 14 15 #include <stdbool.h> 15 #include <stdbool.h> 16 #include <string.h> 16 #include <string.h> 17 #include <linux/types.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_linehandle(const char *device_name, unsigned int *lines, >> 28 unsigned int num_lines, unsigned int flag, >> 29 struct gpiohandle_data *data, >> 30 const char *consumer_label); >> 31 int gpiotools_release_linehandle(const int fd); >> 32 27 int gpiotools_request_line(const char *device_ 33 int gpiotools_request_line(const char *device_name, 28 unsigned int *lines 34 unsigned int *lines, 29 unsigned int num_li 35 unsigned int num_lines, 30 struct gpio_v2_line 36 struct gpio_v2_line_config *config, 31 const char *consume 37 const char *consumer); 32 int gpiotools_set_values(const int fd, struct 38 int gpiotools_set_values(const int fd, struct gpio_v2_line_values *values); 33 int gpiotools_get_values(const int fd, struct 39 int gpiotools_get_values(const int fd, struct gpio_v2_line_values *values); 34 int gpiotools_release_line(const int fd); 40 int gpiotools_release_line(const int fd); 35 41 36 int gpiotools_get(const char *device_name, uns 42 int gpiotools_get(const char *device_name, unsigned int line); 37 int gpiotools_gets(const char *device_name, un 43 int gpiotools_gets(const char *device_name, unsigned int *lines, 38 unsigned int num_lines, uns 44 unsigned int num_lines, unsigned int *values); 39 int gpiotools_set(const char *device_name, uns 45 int gpiotools_set(const char *device_name, unsigned int line, 40 unsigned int value); 46 unsigned int value); 41 int gpiotools_sets(const char *device_name, un 47 int gpiotools_sets(const char *device_name, unsigned int *lines, 42 unsigned int num_lines, uns 48 unsigned int num_lines, unsigned int *values); 43 49 44 /* helper functions for gpio_v2_line_values bi 50 /* helper functions for gpio_v2_line_values bits */ 45 static inline void gpiotools_set_bit(__u64 *b, 51 static inline void gpiotools_set_bit(__u64 *b, int n) 46 { 52 { 47 *b |= _BITULL(n); 53 *b |= _BITULL(n); 48 } 54 } 49 55 50 static inline void gpiotools_change_bit(__u64 56 static inline void gpiotools_change_bit(__u64 *b, int n) 51 { 57 { 52 *b ^= _BITULL(n); 58 *b ^= _BITULL(n); 53 } 59 } 54 60 55 static inline void gpiotools_clear_bit(__u64 * 61 static inline void gpiotools_clear_bit(__u64 *b, int n) 56 { 62 { 57 *b &= ~_BITULL(n); 63 *b &= ~_BITULL(n); 58 } 64 } 59 65 60 static inline int gpiotools_test_bit(__u64 b, 66 static inline int gpiotools_test_bit(__u64 b, int n) 61 { 67 { 62 return !!(b & _BITULL(n)); 68 return !!(b & _BITULL(n)); 63 } 69 } 64 70 65 static inline void gpiotools_assign_bit(__u64 71 static inline void gpiotools_assign_bit(__u64 *b, int n, bool value) 66 { 72 { 67 if (value) 73 if (value) 68 gpiotools_set_bit(b, n); 74 gpiotools_set_bit(b, n); 69 else 75 else 70 gpiotools_clear_bit(b, n); 76 gpiotools_clear_bit(b, n); 71 } 77 } 72 78 73 #endif /* _GPIO_UTILS_H_ */ 79 #endif /* _GPIO_UTILS_H_ */ 74 80
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.