比如以下這個設備樹節點
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是怎么個對應關系呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/42950.html
標籤:內核源代碼研究區
上一篇:WSL中文本地化
