|
@@ -6,6 +6,7 @@
|
|
|
#include <linux/irq.h>
|
|
|
#include <linux/irqchip/chained_irq.h>
|
|
|
#include <linux/irqdomain.h>
|
|
|
+#include <linux/pinctrl/pinctrl.h>
|
|
|
|
|
|
struct device;
|
|
|
struct gpio_desc;
|
|
@@ -173,6 +174,53 @@ int gpiochip_irqchip_add(struct gpio_chip *gpiochip,
|
|
|
|
|
|
#endif /* CONFIG_GPIOLIB_IRQCHIP */
|
|
|
|
|
|
+#ifdef CONFIG_PINCTRL
|
|
|
+
|
|
|
+/**
|
|
|
+ * struct gpio_pin_range - pin range controlled by a gpio chip
|
|
|
+ * @head: list for maintaining set of pin ranges, used internally
|
|
|
+ * @pctldev: pinctrl device which handles corresponding pins
|
|
|
+ * @range: actual range of pins controlled by a gpio controller
|
|
|
+ */
|
|
|
+
|
|
|
+struct gpio_pin_range {
|
|
|
+ struct list_head node;
|
|
|
+ struct pinctrl_dev *pctldev;
|
|
|
+ struct pinctrl_gpio_range range;
|
|
|
+};
|
|
|
+
|
|
|
+int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
|
|
|
+ unsigned int gpio_offset, unsigned int pin_offset,
|
|
|
+ unsigned int npins);
|
|
|
+int gpiochip_add_pingroup_range(struct gpio_chip *chip,
|
|
|
+ struct pinctrl_dev *pctldev,
|
|
|
+ unsigned int gpio_offset, const char *pin_group);
|
|
|
+void gpiochip_remove_pin_ranges(struct gpio_chip *chip);
|
|
|
+
|
|
|
+#else
|
|
|
+
|
|
|
+static inline int
|
|
|
+gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
|
|
|
+ unsigned int gpio_offset, unsigned int pin_offset,
|
|
|
+ unsigned int npins)
|
|
|
+{
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+static inline int
|
|
|
+gpiochip_add_pingroup_range(struct gpio_chip *chip,
|
|
|
+ struct pinctrl_dev *pctldev,
|
|
|
+ unsigned int gpio_offset, const char *pin_group)
|
|
|
+{
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static inline void
|
|
|
+gpiochip_remove_pin_ranges(struct gpio_chip *chip)
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+#endif /* CONFIG_PINCTRL */
|
|
|
+
|
|
|
struct gpio_desc *gpiochip_request_own_desc(struct gpio_chip *chip, u16 hwnum,
|
|
|
const char *label);
|
|
|
void gpiochip_free_own_desc(struct gpio_desc *desc);
|