diff options
| author | Anton Vorontsov <avorontsov@ru.mvista.com> | 2008-12-05 03:15:54 -0500 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2008-12-20 22:21:14 -0500 |
| commit | 749820928a2fd47ff536773d869d2c3f8038b7d1 (patch) | |
| tree | 69f7f37a63f9c194f33fb7a16d12f62b583da6c8 /drivers/of | |
| parent | 7736a3db98bed028d0e5235f8958a730acfd822e (diff) | |
of/gpio: Implement of_gpio_count()
This function is used to count how many GPIOs are specified for
a device node.
Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'drivers/of')
| -rw-r--r-- | drivers/of/gpio.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/drivers/of/gpio.c b/drivers/of/gpio.c index a4ba217116eb..6eea601a9204 100644 --- a/drivers/of/gpio.c +++ b/drivers/of/gpio.c | |||
| @@ -80,6 +80,40 @@ err0: | |||
| 80 | EXPORT_SYMBOL(of_get_gpio_flags); | 80 | EXPORT_SYMBOL(of_get_gpio_flags); |
| 81 | 81 | ||
| 82 | /** | 82 | /** |
| 83 | * of_gpio_count - Count GPIOs for a device | ||
| 84 | * @np: device node to count GPIOs for | ||
| 85 | * | ||
| 86 | * The function returns the count of GPIOs specified for a node. | ||
| 87 | * | ||
| 88 | * Note that the empty GPIO specifiers counts too. For example, | ||
| 89 | * | ||
| 90 | * gpios = <0 | ||
| 91 | * &pio1 1 2 | ||
| 92 | * 0 | ||
| 93 | * &pio2 3 4>; | ||
| 94 | * | ||
| 95 | * defines four GPIOs (so this function will return 4), two of which | ||
| 96 | * are not specified. | ||
| 97 | */ | ||
| 98 | unsigned int of_gpio_count(struct device_node *np) | ||
| 99 | { | ||
| 100 | unsigned int cnt = 0; | ||
| 101 | |||
| 102 | do { | ||
| 103 | int ret; | ||
| 104 | |||
| 105 | ret = of_parse_phandles_with_args(np, "gpios", "#gpio-cells", | ||
| 106 | cnt, NULL, NULL); | ||
| 107 | /* A hole in the gpios = <> counts anyway. */ | ||
| 108 | if (ret < 0 && ret != -EEXIST) | ||
| 109 | break; | ||
| 110 | } while (++cnt); | ||
| 111 | |||
| 112 | return cnt; | ||
| 113 | } | ||
| 114 | EXPORT_SYMBOL(of_gpio_count); | ||
| 115 | |||
| 116 | /** | ||
| 83 | * of_gpio_simple_xlate - translate gpio_spec to the GPIO number and flags | 117 | * of_gpio_simple_xlate - translate gpio_spec to the GPIO number and flags |
| 84 | * @of_gc: pointer to the of_gpio_chip structure | 118 | * @of_gc: pointer to the of_gpio_chip structure |
| 85 | * @np: device node of the GPIO chip | 119 | * @np: device node of the GPIO chip |
