日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

设备树之GPIO和中断实例

發(fā)布時(shí)間:2025/4/5 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设备树之GPIO和中断实例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概述

設(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。