of_get_named_gpio中得index属性怎样跟dtsi里面对应起来
时间: 2023-08-02 17:10:39 浏览: 153
ZYNQ 7010实现axi_gpio驱动(PYNQ_Design实现).zip
在设备树中,通常会定义一个GPIO节点,包含了GPIO的引脚号、方向、中断等信息。这个节点的名称通常是"gpio",并且在驱动程序中可以通过of_find_node_by_name函数来获取它的地址。
在GPIO节点中,可以通过属性(属性名通常是"index")来指定GPIO的引脚号。这个属性值可以通过of_get_named_gpio函数来获取,该函数的第二个参数是属性名,第三个参数是默认值,第四个参数是错误信息。
例如,假设设备树中定义了一个GPIO节点,名称为"mygpio",引脚号为10,那么在驱动程序中可以通过以下代码来获取这个GPIO引脚:
```
struct device_node *np = of_find_node_by_name(NULL, "mygpio");
if (np) {
int gpio;
if (of_get_named_gpio(np, "index", 0) < 0) {
printk(KERN_ERR "Failed to get GPIO index\n");
}
gpio = of_get_named_gpio(np, "index", 0);
printk(KERN_INFO "GPIO index is %d\n", gpio);
}
```
在这个例子中,of_get_named_gpio函数会从"mygpio"节点中获取名为"index"的属性值,如果获取失败,则返回负数。如果获取成功,则返回这个属性值,该值就是GPIO的引脚号。在实际应用中,可能需要将这个引脚号传递给GPIO驱动程序,以便对GPIO进行控制。
阅读全文