aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/gpio
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/gpio')
-rw-r--r--include/linux/gpio/aspeed.h15
-rw-r--r--include/linux/gpio/consumer.h14
-rw-r--r--include/linux/gpio/driver.h3
3 files changed, 27 insertions, 5 deletions
diff --git a/include/linux/gpio/aspeed.h b/include/linux/gpio/aspeed.h
new file mode 100644
index 000000000000..1bfb3cdc86d0
--- /dev/null
+++ b/include/linux/gpio/aspeed.h
@@ -0,0 +1,15 @@
1#ifndef __GPIO_ASPEED_H
2#define __GPIO_ASPEED_H
3
4struct aspeed_gpio_copro_ops {
5 int (*request_access)(void *data);
6 int (*release_access)(void *data);
7};
8
9int aspeed_gpio_copro_grab_gpio(struct gpio_desc *desc,
10 u16 *vreg_offset, u16 *dreg_offset, u8 *bit);
11int aspeed_gpio_copro_release_gpio(struct gpio_desc *desc);
12int aspeed_gpio_copro_set_ops(const struct aspeed_gpio_copro_ops *ops, void *data);
13
14
15#endif /* __GPIO_ASPEED_H */
diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h
index 243112c7fa7d..21ddbe440030 100644
--- a/include/linux/gpio/consumer.h
+++ b/include/linux/gpio/consumer.h
@@ -41,11 +41,8 @@ enum gpiod_flags {
41 GPIOD_OUT_LOW = GPIOD_FLAGS_BIT_DIR_SET | GPIOD_FLAGS_BIT_DIR_OUT, 41 GPIOD_OUT_LOW = GPIOD_FLAGS_BIT_DIR_SET | GPIOD_FLAGS_BIT_DIR_OUT,
42 GPIOD_OUT_HIGH = GPIOD_FLAGS_BIT_DIR_SET | GPIOD_FLAGS_BIT_DIR_OUT | 42 GPIOD_OUT_HIGH = GPIOD_FLAGS_BIT_DIR_SET | GPIOD_FLAGS_BIT_DIR_OUT |
43 GPIOD_FLAGS_BIT_DIR_VAL, 43 GPIOD_FLAGS_BIT_DIR_VAL,
44 GPIOD_OUT_LOW_OPEN_DRAIN = GPIOD_FLAGS_BIT_DIR_SET | 44 GPIOD_OUT_LOW_OPEN_DRAIN = GPIOD_OUT_LOW | GPIOD_FLAGS_BIT_OPEN_DRAIN,
45 GPIOD_FLAGS_BIT_DIR_OUT | GPIOD_FLAGS_BIT_OPEN_DRAIN, 45 GPIOD_OUT_HIGH_OPEN_DRAIN = GPIOD_OUT_HIGH | GPIOD_FLAGS_BIT_OPEN_DRAIN,
46 GPIOD_OUT_HIGH_OPEN_DRAIN = GPIOD_FLAGS_BIT_DIR_SET |
47 GPIOD_FLAGS_BIT_DIR_OUT | GPIOD_FLAGS_BIT_DIR_VAL |
48 GPIOD_FLAGS_BIT_OPEN_DRAIN,
49}; 46};
50 47
51#ifdef CONFIG_GPIOLIB 48#ifdef CONFIG_GPIOLIB
@@ -145,6 +142,7 @@ int gpiod_is_active_low(const struct gpio_desc *desc);
145int gpiod_cansleep(const struct gpio_desc *desc); 142int gpiod_cansleep(const struct gpio_desc *desc);
146 143
147int gpiod_to_irq(const struct gpio_desc *desc); 144int gpiod_to_irq(const struct gpio_desc *desc);
145void gpiod_set_consumer_name(struct gpio_desc *desc, const char *name);
148 146
149/* Convert between the old gpio_ and new gpiod_ interfaces */ 147/* Convert between the old gpio_ and new gpiod_ interfaces */
150struct gpio_desc *gpio_to_desc(unsigned gpio); 148struct gpio_desc *gpio_to_desc(unsigned gpio);
@@ -467,6 +465,12 @@ static inline int gpiod_to_irq(const struct gpio_desc *desc)
467 return -EINVAL; 465 return -EINVAL;
468} 466}
469 467
468static inline void gpiod_set_consumer_name(struct gpio_desc *desc, const char *name)
469{
470 /* GPIO can never have been requested */
471 WARN_ON(1);
472}
473
470static inline struct gpio_desc *gpio_to_desc(unsigned gpio) 474static inline struct gpio_desc *gpio_to_desc(unsigned gpio)
471{ 475{
472 return ERR_PTR(-EINVAL); 476 return ERR_PTR(-EINVAL);
diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h
index 5382b5183b7e..0ea328e71ec9 100644
--- a/include/linux/gpio/driver.h
+++ b/include/linux/gpio/driver.h
@@ -201,6 +201,8 @@ static inline struct gpio_irq_chip *to_gpio_irq_chip(struct irq_chip *chip)
201 * @reg_set: output set register (out=high) for generic GPIO 201 * @reg_set: output set register (out=high) for generic GPIO
202 * @reg_clr: output clear register (out=low) for generic GPIO 202 * @reg_clr: output clear register (out=low) for generic GPIO
203 * @reg_dir: direction setting register for generic GPIO 203 * @reg_dir: direction setting register for generic GPIO
204 * @bgpio_dir_inverted: indicates that the direction register is inverted
205 * (gpiolib private state variable)
204 * @bgpio_bits: number of register bits used for a generic GPIO i.e. 206 * @bgpio_bits: number of register bits used for a generic GPIO i.e.
205 * <register width> * 8 207 * <register width> * 8
206 * @bgpio_lock: used to lock chip->bgpio_data. Also, this is needed to keep 208 * @bgpio_lock: used to lock chip->bgpio_data. Also, this is needed to keep
@@ -267,6 +269,7 @@ struct gpio_chip {
267 void __iomem *reg_set; 269 void __iomem *reg_set;
268 void __iomem *reg_clr; 270 void __iomem *reg_clr;
269 void __iomem *reg_dir; 271 void __iomem *reg_dir;
272 bool bgpio_dir_inverted;
270 int bgpio_bits; 273 int bgpio_bits;
271 spinlock_t bgpio_lock; 274 spinlock_t bgpio_lock;
272 unsigned long bgpio_data; 275 unsigned long bgpio_data;