diff options
Diffstat (limited to 'include/linux/gpio')
| -rw-r--r-- | include/linux/gpio/aspeed.h | 15 | ||||
| -rw-r--r-- | include/linux/gpio/consumer.h | 14 | ||||
| -rw-r--r-- | include/linux/gpio/driver.h | 3 |
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 | |||
| 4 | struct aspeed_gpio_copro_ops { | ||
| 5 | int (*request_access)(void *data); | ||
| 6 | int (*release_access)(void *data); | ||
| 7 | }; | ||
| 8 | |||
| 9 | int aspeed_gpio_copro_grab_gpio(struct gpio_desc *desc, | ||
| 10 | u16 *vreg_offset, u16 *dreg_offset, u8 *bit); | ||
| 11 | int aspeed_gpio_copro_release_gpio(struct gpio_desc *desc); | ||
| 12 | int 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); | |||
| 145 | int gpiod_cansleep(const struct gpio_desc *desc); | 142 | int gpiod_cansleep(const struct gpio_desc *desc); |
| 146 | 143 | ||
| 147 | int gpiod_to_irq(const struct gpio_desc *desc); | 144 | int gpiod_to_irq(const struct gpio_desc *desc); |
| 145 | void 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 */ |
| 150 | struct gpio_desc *gpio_to_desc(unsigned gpio); | 148 | struct 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 | ||
| 468 | static 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 | |||
| 470 | static inline struct gpio_desc *gpio_to_desc(unsigned gpio) | 474 | static 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; |
