“gpio指数”是什么意思?

时间:2018-01-12 07:09:07

标签: linux-kernel linux-device-driver

我想知道“gpio指数”是什么意思。

这是我在of_gpio.h中看到的

/**
* of_get_named_gpio() - Get a GPIO number to use with GPIO API
* @np:      device node to get GPIO from
* @propname:    Name of property containing gpio specifier(s)
* @index:   index of the GPIO
*
* Returns GPIO number to use with Linux generic GPIO API, or one of the 
  errno
* value on the error condition.
*/
static inline int of_get_named_gpio(struct device_node *np,
                                  const char *propname, int index)
{
    return of_get_named_gpio_flags(np, propname, index, NULL);
}

我无法理解其含义,因为我看不到任何函数正在使用“int index”。

1 个答案:

答案 0 :(得分:0)

它是gpios列表的索引。在设备树中描述gpios时,您始终可以指定gpio引脚列表,它可以指定单个驱动程序,无论它只需要一个引脚还是多个引脚。

查看documentation,其中介绍了如何一般性地指定gpios:

  

使用GPIO的节点应使用一个或多个指定它们   属性,每个属性包含一个'gpio-list':

gpio-list ::= <single-gpio> [gpio-list]
single-gpio ::= <gpio-phandle> <gpio-specifier>
gpio-phandle : phandle to gpio controller node
gpio-specifier : Array of #gpio-cells specifying specific gpio
                 (controller specific)

使用引脚列表的驱动程序的一个很好的示例是gpio-matix-keyboard,因此在其documentation中有一个示例:

row-gpios = <&gpio2 25 0
             &gpio2 26 0
             &gpio2 27 0>;

以及解析此内容的code

for (i = 0; i < pdata->num_row_gpios; i++)
    gpios[i] = of_get_named_gpio(np, "row-gpios", i);