Contributors: 20
| Author |
Tokens |
Token Proportion |
Commits |
Commit Proportion |
| David Brownell |
296 |
57.81% |
4 |
12.12% |
| Alexandre Courbot |
53 |
10.35% |
4 |
12.12% |
| Mark Brown |
45 |
8.79% |
3 |
9.09% |
| Arnd Bergmann |
34 |
6.64% |
3 |
9.09% |
| Wolfram Sang |
24 |
4.69% |
1 |
3.03% |
| Guennadi Liakhovetski |
10 |
1.95% |
1 |
3.03% |
| Eric Miao |
9 |
1.76% |
1 |
3.03% |
| Andy Shevchenko |
9 |
1.76% |
3 |
9.09% |
| Felipe Balbi |
6 |
1.17% |
1 |
3.03% |
| Uwe Kleine-König |
5 |
0.98% |
1 |
3.03% |
| Linus Walleij |
4 |
0.78% |
2 |
6.06% |
| Jani Nikula |
3 |
0.59% |
1 |
3.03% |
| Anton Vorontsov |
3 |
0.59% |
1 |
3.03% |
| Joe Perches |
2 |
0.39% |
1 |
3.03% |
| Paul Gortmaker |
2 |
0.39% |
1 |
3.03% |
| Shawn Guo |
2 |
0.39% |
1 |
3.03% |
| Bartosz Golaszewski |
2 |
0.39% |
1 |
3.03% |
| Greg Kroah-Hartman |
1 |
0.20% |
1 |
3.03% |
| Christophe Leroy |
1 |
0.20% |
1 |
3.03% |
| Randy Dunlap |
1 |
0.20% |
1 |
3.03% |
| Total |
512 |
|
33 |
|
/* 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 */