1/* 2 * <linux/gpio.h> - userspace ABI for the GPIO character devices 3 * 4 * Copyright (C) 2015 Linus Walleij 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License version 2 as published by 8 * the Free Software Foundation. 9 */ 10#ifndef _UAPI_GPIO_H_ 11#define _UAPI_GPIO_H_ 12 13#include <linux/ioctl.h> 14#include <linux/types.h> 15 16/** 17 * struct gpiochip_info - Information about a certain GPIO chip 18 * @name: the Linux kernel name of this GPIO chip 19 * @label: a functional name for this GPIO chip, such as a product 20 * number, may be NULL 21 * @lines: number of GPIO lines on this chip 22 */ 23struct gpiochip_info { 24 char name[32]; 25 char label[32]; 26 __u32 lines; 27}; 28 29/* Line is in use by the kernel */ 30#define GPIOLINE_FLAG_KERNEL (1UL << 0) 31#define GPIOLINE_FLAG_IS_OUT (1UL << 1) 32#define GPIOLINE_FLAG_ACTIVE_LOW (1UL << 2) 33#define GPIOLINE_FLAG_OPEN_DRAIN (1UL << 3) 34#define GPIOLINE_FLAG_OPEN_SOURCE (1UL << 4) 35 36/** 37 * struct gpioline_info - Information about a certain GPIO line 38 * @line_offset: the local offset on this GPIO device, fill this in when 39 * requesting the line information from the kernel 40 * @flags: various flags for this line 41 * @name: the name of this GPIO line, such as the output pin of the line on the 42 * chip, a rail or a pin header name on a board, as specified by the gpio 43 * chip, may be NULL 44 * @consumer: a functional name for the consumer of this GPIO line as set by 45 * whatever is using it, will be NULL if there is no current user but may 46 * also be NULL if the consumer doesn't set this up 47 */ 48struct gpioline_info { 49 __u32 line_offset; 50 __u32 flags; 51 char name[32]; 52 char consumer[32]; 53}; 54 55#define GPIO_GET_CHIPINFO_IOCTL _IOR(0xB4, 0x01, struct gpiochip_info) 56#define GPIO_GET_LINEINFO_IOCTL _IOWR(0xB4, 0x02, struct gpioline_info) 57 58#endif /* _UAPI_GPIO_H_ */ 59