Loading drivers/of/gpio.c +34 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,40 @@ int of_get_gpio_flags(struct device_node *np, int index, } EXPORT_SYMBOL(of_get_gpio_flags); /** * of_gpio_count - Count GPIOs for a device * @np: device node to count GPIOs for * * The function returns the count of GPIOs specified for a node. * * Note that the empty GPIO specifiers counts too. For example, * * gpios = <0 * &pio1 1 2 * 0 * &pio2 3 4>; * * defines four GPIOs (so this function will return 4), two of which * are not specified. */ unsigned int of_gpio_count(struct device_node *np) { unsigned int cnt = 0; do { int ret; ret = of_parse_phandles_with_args(np, "gpios", "#gpio-cells", cnt, NULL, NULL); /* A hole in the gpios = <> counts anyway. */ if (ret < 0 && ret != -EEXIST) break; } while (++cnt); return cnt; } EXPORT_SYMBOL(of_gpio_count); /** * of_gpio_simple_xlate - translate gpio_spec to the GPIO number and flags * @of_gc: pointer to the of_gpio_chip structure Loading include/linux/of_gpio.h +6 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ static inline struct of_mm_gpio_chip *to_of_mm_gpio_chip(struct gpio_chip *gc) extern int of_get_gpio_flags(struct device_node *np, int index, enum of_gpio_flags *flags); extern unsigned int of_gpio_count(struct device_node *np); extern int of_mm_gpiochip_add(struct device_node *np, struct of_mm_gpio_chip *mm_gc); Loading @@ -81,6 +82,11 @@ static inline int of_get_gpio_flags(struct device_node *np, int index, return -ENOSYS; } static inline unsigned int of_gpio_count(struct device_node *np) { return 0; } #endif /* CONFIG_OF_GPIO */ /** Loading Loading
drivers/of/gpio.c +34 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,40 @@ int of_get_gpio_flags(struct device_node *np, int index, } EXPORT_SYMBOL(of_get_gpio_flags); /** * of_gpio_count - Count GPIOs for a device * @np: device node to count GPIOs for * * The function returns the count of GPIOs specified for a node. * * Note that the empty GPIO specifiers counts too. For example, * * gpios = <0 * &pio1 1 2 * 0 * &pio2 3 4>; * * defines four GPIOs (so this function will return 4), two of which * are not specified. */ unsigned int of_gpio_count(struct device_node *np) { unsigned int cnt = 0; do { int ret; ret = of_parse_phandles_with_args(np, "gpios", "#gpio-cells", cnt, NULL, NULL); /* A hole in the gpios = <> counts anyway. */ if (ret < 0 && ret != -EEXIST) break; } while (++cnt); return cnt; } EXPORT_SYMBOL(of_gpio_count); /** * of_gpio_simple_xlate - translate gpio_spec to the GPIO number and flags * @of_gc: pointer to the of_gpio_chip structure Loading
include/linux/of_gpio.h +6 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ static inline struct of_mm_gpio_chip *to_of_mm_gpio_chip(struct gpio_chip *gc) extern int of_get_gpio_flags(struct device_node *np, int index, enum of_gpio_flags *flags); extern unsigned int of_gpio_count(struct device_node *np); extern int of_mm_gpiochip_add(struct device_node *np, struct of_mm_gpio_chip *mm_gc); Loading @@ -81,6 +82,11 @@ static inline int of_get_gpio_flags(struct device_node *np, int index, return -ENOSYS; } static inline unsigned int of_gpio_count(struct device_node *np) { return 0; } #endif /* CONFIG_OF_GPIO */ /** Loading