设备树之GPIO和中断实例
概述
設(shè)備樹(shù)不僅僅描述常規(guī)硬件信息,還可以描述中斷,GPIO,DMA,PINCTRL,時(shí)鐘,電源管理等內(nèi)核基礎(chǔ)設(shè)施信息及其使用情況,下面重點(diǎn)介紹中斷,GPIO等結(jié)點(diǎn)屬性
中斷控制器
對(duì)于中斷控制器結(jié)點(diǎn),它提供如下屬性:
interrupt-controller 表明自己的身份為中斷控制器
interrupt-cells
該屬性與#address-cells屬性相似,它聲明了設(shè)備結(jié)點(diǎn)interrupt cells的個(gè)數(shù)。對(duì)于ARM GIC中斷控制器而言#interrupt-cells = <3>
具體含義如下:
第一個(gè)cell表示中斷類(lèi)型,0代表SPI interrupts,1代表PPI interrupts
第二個(gè)cell表示中斷號(hào)碼,SPI interrupts的中斷號(hào)范圍是0 ~ 987,而PPI interrupts的中斷號(hào)范圍是0 ~ 15
第三個(gè)cell表示中斷觸發(fā)方式,它有4個(gè)值,分別為1,2,4,8
1表示上升沿觸發(fā)
2表示下降沿觸發(fā)
4表示高電平觸發(fā)
8表示低電平觸發(fā)
上圖為典型的中斷控制器結(jié)點(diǎn)
從上圖可知:
該中斷控制器包含4組寄存器,設(shè)備結(jié)點(diǎn)interrupt cells的個(gè)數(shù)為3
第一個(gè)cell表示中斷類(lèi)型,第二個(gè)cell表示中斷號(hào)碼,第三個(gè)cell表示中斷觸發(fā)方式
irq_clr_reg = of_iomap(pdev->dev.of_node, 0);讀取設(shè)備樹(shù)中reg節(jié)點(diǎn)值對(duì)應(yīng)地址值;
irq = platform_get_irq(pdev, 0);獲取中斷號(hào);
status = devm_request_irq(&pdev->dev, irq, siglent_reg_handler, IRQF_TRIGGER_RISING,
?? ??? ??? ?"siglent_vnc", pdev);
當(dāng)這個(gè)函數(shù)初始化中斷觸發(fā)方式強(qiáng)制為上升源中斷時(shí),則設(shè)備樹(shù)中的配置無(wú)效;
設(shè)備結(jié)點(diǎn)與中斷相關(guān)的屬性?
interrupt-parent
指定設(shè)備結(jié)點(diǎn)所依附的中斷控制器,當(dāng)結(jié)點(diǎn)沒(méi)有指定interrupt-parent時(shí),則從父結(jié)點(diǎn)繼承
interrupts
指定設(shè)備結(jié)點(diǎn)的中斷號(hào)和觸發(fā)方式,該屬性cell個(gè)數(shù),由它依附的中斷控制器#interrupt-cells決定,另外某些設(shè)備還可以使用多個(gè)中斷號(hào)
比如:某設(shè)備結(jié)點(diǎn)中斷類(lèi)型為SPI interrupts,中斷號(hào)為168和169,高電平觸發(fā),該設(shè)備結(jié)點(diǎn)的中斷屬性定義為
interrupts-parents = <&gic>;
interrupts = <0 168 4>, <0 169 4>;
上圖為watchdog結(jié)點(diǎn)信息,使用SPI interrupts方式,中斷號(hào)為75,高電平觸發(fā)
GPIO控制器
對(duì)于GPIO控制器結(jié)點(diǎn),它提供如下屬性:
gpio-controller 表明自己的身份為gpio控制器
gpio-cells
該屬性與#address-cells相似,它聲明了設(shè)備結(jié)點(diǎn)gpio cells的個(gè)數(shù)。
一般gpio控制器#gpio-cells = <2>
第一個(gè)cell表示gpio號(hào),第二個(gè)cell表示gpio有效電平
上圖為典型的gpio控制器結(jié)點(diǎn)
從上圖可知:
設(shè)備結(jié)點(diǎn)gpio cells的個(gè)數(shù)為2
第一個(gè)cell表示gpio號(hào),第二個(gè)cell表示gpio有效電平
設(shè)備結(jié)點(diǎn)與gpio相關(guān)的屬性
上圖4為mmc1結(jié)點(diǎn)信息,該結(jié)點(diǎn)定義了cd-gpios屬性,該屬性表示使用219號(hào)gpio引腳(32*6+27)作為熱插拔探測(cè)引腳,有效電平為低電平。
在mmc控制器驅(qū)動(dòng)中會(huì)通過(guò)如下方法獲取cd-gpios值
of_get_named_gpio(np, “cd-gpios”, 0);
?
?
總結(jié)
以上是生活随笔為你收集整理的设备树之GPIO和中断实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux设备支持ntfs类型U盘笔记
- 下一篇: SVN迁移历史日志记录笔记