从设备树中获取的gpio其数值代表的什么意思

弋阳yoga 2020-03-21 08:38:06
比如以下这个设备树节点
buttons {
compatible = "jz2440_button";
eint-pins = <&gpf 0 0>, <&gpf 2 0>, <&gpg 3 0>, <&gpg 11 0>;
interrupts-extended = <&intc 0 0 0 3>,
<&intc 0 0 2 3>,
<&gpg 3 3>,
<&gpg 11 3>;
};

我在驱动中使用以下代码获取gpio和中断
for ( i=0; i< ( sizeof ( pins_desc ) /sizeof ( pins_desc[0] ) ); i++ )
{
res = platform_get_resource ( pdev, IORESOURCE_IRQ, i ); //获取irq资源
if ( res )
{
pins_desc[i].irq = res->start;
printk ( "get irq:%d\n",pins_desc[i].irq );
}
else
{
printk ( "can't get irq:%d\n",i );
return -1;
}
pins_desc[i].pin = of_get_named_gpio(dev_node,"eint-pins",i); //在节点中查找名字为eint-pins的属性
printk("pins_desc[%d].pin = %d\n", i, pins_desc[i].pin);
}


打印出来以下字段
get irq:1
pins_desc[0].pin = 84
get irq:2
pins_desc[1].pin = 86
get irq:3
pins_desc[2].pin = 95
get irq:15
pins_desc[3].pin = 103

这些pin的数值与实际上的gpio是怎么个对应关系呢?
...全文
394 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zarelaky 2021-02-09
  • 打赏
  • 举报
回复
这个和gpiochip驱动有关系,一般来说<&gpf 0 0>中,gpf表示的是控制器的名称,在驱动中定义,第一个0表示控制器中的gpio偏移编号,第二个0表示中断触发条件(高电平、低电平、上升/下降沿)
引用 楼主 弋阳yoga 的回复:
比如以下这个设备树节点
buttons {
compatible = "jz2440_button";
eint-pins = <&gpf 0 0>, <&gpf 2 0>, <&gpg 3 0>, <&gpg 11 0>;
interrupts-extended = <&intc 0 0 0 3>,
<&intc 0 0 2 3>,
<&gpg 3 3>,
<&gpg 11 3>;
};

我在驱动中使用以下代码获取gpio和中断
for ( i=0; i< ( sizeof ( pins_desc ) /sizeof ( pins_desc[0] ) ); i++ )
{
res = platform_get_resource ( pdev, IORESOURCE_IRQ, i ); //获取irq资源
if ( res )
{
pins_desc[i].irq = res->start;
printk ( "get irq:%d\n",pins_desc[i].irq );
}
else
{
printk ( "can't get irq:%d\n",i );
return -1;
}
pins_desc[i].pin = of_get_named_gpio(dev_node,"eint-pins",i); //在节点中查找名字为eint-pins的属性
printk("pins_desc[%d].pin = %d\n", i, pins_desc[i].pin);
}


打印出来以下字段
get irq:1
pins_desc[0].pin = 84
get irq:2
pins_desc[1].pin = 86
get irq:3
pins_desc[2].pin = 95
get irq:15
pins_desc[3].pin = 103

这些pin的数值与实际上的gpio是怎么个对应关系呢?

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧