概述
設備樹不僅僅描述常規硬件信息,還可以描述中斷,GPIO,DMA,PINCTRL,時鐘,電源管理等內核基礎設施信息及其使用情況,下面重點介紹中斷,GPIO等結點屬性
中斷控制器
對於中斷控制器結點,它提供如下屬性:
interrupt-controller 表明自己的身份爲中斷控制器
#interrupt-cells
該屬性與#address-cells屬性相似,它聲明瞭設備結點interrupt cells的個數。對於ARM GIC中斷控制器而言#interrupt-cells = <3>
具體含義如下:
第一個cell表示中斷類型,0代表SPI interrupts,1代表PPI interrupts
第二個cell表示中斷號碼,SPI interrupts的中斷號範圍是0 ~ 987,而PPI interrupts的中斷號範圍是0 ~ 15
第三個cell表示中斷觸發方式,它有4個值,分別爲1,2,4,8
1表示上升沿觸發
2表示下降沿觸發
4表示高電平觸發
8表示低電平觸發
圖1
上圖1爲典型的中斷控制器結點
從上圖1可知:
該中斷控制器包含4組寄存器,設備結點interrupt cells的個數爲3
第一個cell表示中斷類型,第二個cell表示中斷號碼,第三個cell表示中斷觸發方式
設備結點與中斷相關的屬性
interrupt-parent
指定設備結點所依附的中斷控制器,當結點沒有指定interrupt-parent時,則從父結點繼承
interrupts
指定設備結點的中斷號和觸發方式,該屬性cell個數,由它依附的中斷控制器#interrupt-cells決定,另外某些設備還可以使用多箇中斷號
比如:某設備結點中斷類型爲SPI interrupts,中斷號爲168和169,高電平觸發,該設備結點的中斷屬性定義爲
interrupts-parents = <&gic>;
interrupts = <0 168 4>, <0 169 4>;
圖2
上圖2爲watchdog結點信息,使用SPI interrupts方式,中斷號爲75,高電平觸發
GPIO控制器
對於GPIO控制器結點,它提供如下屬性:
gpio-controller 表明自己的身份爲gpio控制器
#gpio-cells
該屬性與#address-cells相似,它聲明瞭設備結點gpio cells的個數。
一般gpio控制器#gpio-cells = <2>
第一個cell表示gpio號,第二個cell表示gpio有效電平
圖3
上圖3爲典型的gpio控制器結點
從上圖3可知:
設備結點gpio cells的個數爲2
第一個cell表示gpio號,第二個cell表示gpio有效電平
設備結點與gpio相關的屬性
圖4
上圖4爲mmc1結點信息,該結點定義了cd-gpios屬性,該屬性表示使用219號gpio引腳(32*6+27)作爲熱插拔探測引腳,有效電平爲低電平。
在mmc控制器驅動中會通過如下方法獲取cd-gpios值
of_get_named_gpio(np, "cd-gpios", 0);