Something went wrong. Try again.
Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174/* SPDX-License-Identifier: GPL-2.0 *//* * This is the LEGACY GPIO include file, used only for legacy APIs. * * No new code should use this, but instead use the linux/gpio/consumer.h * interfaces directly. */
#ifndef __LINUX_GPIO_LEGACY_H#define __LINUX_GPIO_LEGACY_H
#include <linux/types.h>
#ifdef CONFIG_GPIOLIB_LEGACY
struct device;
/* make these flag values available regardless of GPIO kconfig options */#define GPIOF_IN ((1 << 0))#define GPIOF_OUT_INIT_LOW ((0 << 0) | (0 << 1))#define GPIOF_OUT_INIT_HIGH ((0 << 0) | (1 << 1))
#ifdef CONFIG_GPIOLIB
#include <linux/gpio/consumer.h>
/* * "valid" GPIO numbers are nonnegative and may be passed to * setup routines like gpio_request(). Only some valid numbers * can successfully be requested and used. * * Invalid GPIO numbers are useful for indicating no-such-GPIO in * platform data and other tables. */static inline bool gpio_is_valid(int number){ /* only non-negative numbers are valid */ return number >= 0;}
/* * Platforms may implement their GPIO interface with library code, * at a small performance cost for non-inlined operations and some * extra memory (for code and for per-GPIO table entries). */
/* Always use the library code for GPIO management calls, * or when sleeping may be involved. */int gpio_request(unsigned gpio, const char *label);void gpio_free(unsigned gpio);
static inline int gpio_direction_input(unsigned gpio){ return gpiod_direction_input(gpio_to_desc(gpio));}static inline int gpio_direction_output(unsigned gpio, int value){ return gpiod_direction_output_raw(gpio_to_desc(gpio), value);}
static inline int gpio_get_value_cansleep(unsigned gpio){ return gpiod_get_raw_value_cansleep(gpio_to_desc(gpio));}static inline void gpio_set_value_cansleep(unsigned gpio, int value){ gpiod_set_raw_value_cansleep(gpio_to_desc(gpio), value);}
static inline int gpio_get_value(unsigned gpio){ return gpiod_get_raw_value(gpio_to_desc(gpio));}static inline void gpio_set_value(unsigned gpio, int value){ gpiod_set_raw_value(gpio_to_desc(gpio), value);}
static inline int gpio_to_irq(unsigned gpio){ return gpiod_to_irq(gpio_to_desc(gpio));}
int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);
int devm_gpio_request_one(struct device *dev, unsigned gpio, unsigned long flags, const char *label);
#else /* ! CONFIG_GPIOLIB */
#include <linux/kernel.h>
#include <asm/bug.h>#include <asm/errno.h>
static inline bool gpio_is_valid(int number){ return false;}
static inline int gpio_request(unsigned gpio, const char *label){ return -ENOSYS;}
static inline int gpio_request_one(unsigned gpio, unsigned long flags, const char *label){ return -ENOSYS;}
static inline void gpio_free(unsigned gpio){ might_sleep();
/* GPIO can never have been requested */ WARN_ON(1);}
static inline int gpio_direction_input(unsigned gpio){ return -ENOSYS;}
static inline int gpio_direction_output(unsigned gpio, int value){ return -ENOSYS;}
static inline int gpio_get_value(unsigned gpio){ /* GPIO can never have been requested or set as {in,out}put */ WARN_ON(1); return 0;}
static inline void gpio_set_value(unsigned gpio, int value){ /* GPIO can never have been requested or set as output */ WARN_ON(1);}
static inline int gpio_get_value_cansleep(unsigned gpio){ /* GPIO can never have been requested or set as {in,out}put */ WARN_ON(1); return 0;}
static inline void gpio_set_value_cansleep(unsigned gpio, int value){ /* GPIO can never have been requested or set as output */ WARN_ON(1);}
static inline int gpio_to_irq(unsigned gpio){ /* GPIO can never have been requested or set as input */ WARN_ON(1); return -EINVAL;}
static inline int devm_gpio_request_one(struct device *dev, unsigned gpio, unsigned long flags, const char *label){ WARN_ON(1); return -EINVAL;}
#endif /* ! CONFIG_GPIOLIB */#endif /* CONFIG_GPIOLIB_LEGACY */#endif /* __LINUX_GPIO_LEGAGY_H */