diff options
Diffstat (limited to 'include/linux/gpio/machine.h')
| -rw-r--r-- | include/linux/gpio/machine.h | 31 | 
1 files changed, 31 insertions, 0 deletions
diff --git a/include/linux/gpio/machine.h b/include/linux/gpio/machine.h index b2f2dc638463..daa44eac9241 100644 --- a/include/linux/gpio/machine.h +++ b/include/linux/gpio/machine.h @@ -39,6 +39,23 @@ struct gpiod_lookup_table {  	struct gpiod_lookup table[];  }; +/** + * struct gpiod_hog - GPIO line hog table + * @chip_label: name of the chip the GPIO belongs to + * @chip_hwnum: hardware number (i.e. relative to the chip) of the GPIO + * @line_name: consumer name for the hogged line + * @lflags: mask of GPIO lookup flags + * @dflags: GPIO flags used to specify the direction and value + */ +struct gpiod_hog { +	struct list_head list; +	const char *chip_label; +	u16 chip_hwnum; +	const char *line_name; +	enum gpio_lookup_flags lflags; +	int dflags; +}; +  /*   * Simple definition of a single GPIO under a con_id   */ @@ -59,10 +76,23 @@ struct gpiod_lookup_table {  	.flags = _flags,                                                  \  } +/* + * Simple definition of a single GPIO hog in an array. + */ +#define GPIO_HOG(_chip_label, _chip_hwnum, _line_name, _lflags, _dflags)  \ +{                                                                         \ +	.chip_label = _chip_label,                                        \ +	.chip_hwnum = _chip_hwnum,                                        \ +	.line_name = _line_name,                                          \ +	.lflags = _lflags,                                                \ +	.dflags = _dflags,                                                \ +} +  #ifdef CONFIG_GPIOLIB  void gpiod_add_lookup_table(struct gpiod_lookup_table *table);  void gpiod_add_lookup_tables(struct gpiod_lookup_table **tables, size_t n);  void gpiod_remove_lookup_table(struct gpiod_lookup_table *table); +void gpiod_add_hogs(struct gpiod_hog *hogs);  #else  static inline  void gpiod_add_lookup_table(struct gpiod_lookup_table *table) {} @@ -70,6 +100,7 @@ static inline  void gpiod_add_lookup_tables(struct gpiod_lookup_table **tables, size_t n) {}  static inline  void gpiod_remove_lookup_table(struct gpiod_lookup_table *table) {} +static inline void gpiod_add_hogs(struct gpiod_hog *hogs) {}  #endif  #endif /* __LINUX_GPIO_MACHINE_H */  | 
