1 #include 2 #include 3 #include 4 #include 5 #include 678#define u32_data_len 4910
static
intis_good;
11static
intirqno;
1213 irqreturn_t key_irq_handler(int irqno, void *devid)
1418
19static
int __init dt_drv_init(void)20
;32*/33
34//
在**中獲取節點的所有資訊
35//
先把節點獲取到
36struct device_node *np =null;
3738
39 np = of_find_node_by_path("
/test_nod@12345678");
40if
(np)else
4950
//獲取到節點中的屬性
51struct property *prop =null;
52 prop = of_find_property(np, "
compatible
",null);
53if
(prop)
54else
6263
if(of_device_is_compatible(np, "
farsight,test"))
6467
68//
讀取到屬性中的整數的陣列
6970
u32 regdata[u32_data_len];
71int
ret;
7273 ret = of_property_read_u32_array(np, "
reg"
, regdata, u32_data_len);
74if(!ret)
75else
8384
//讀取到屬性中的字串的陣列
85const
char *pstr[3
];86
87int
i;88
for(i=0; i<3; i++)
89else97}
9899
//屬性的值為空,實際可以用於設定標誌
100if(of_find_property(np, "
testprop,mytest
", null))
101105
106//
獲取到中斷的號碼
107 irqno = irq_of_parse_and_map(np, 0
);108 printk("
-----irqno = %d\n
", irqno);
109110
//驗證中斷號碼是否有效
111 ret = request_irq(irqno, key_irq_handler, irqf_trigger_falling|irqf_trigger_rising,
112"
key_irq
", null);
113if
(ret)
114118
119120
return0;
121122
}123
124static
void __exit dt_drv_exit(void
)125
129130
131132
133module_init(dt_drv_init);
134module_exit(dt_drv_exit);
135 module_license("
gpl");
linux裝置樹(裝置驅動)
一 裝置樹的簡單概念 裝置樹 由一系列的節點,屬性組成,節點本身包含子節點 屬性 成對出現的名稱和值 裝置樹可描述的資訊 原先大多數被編碼在核心中 它是電路板上cpu,匯流排,裝置組成的樹,bootloader會將這棵樹傳遞給核心,並根據它展開linux核心中的platform device等裝置。...
Linux裝置驅動 DMA 介面API
目錄 dma概述 dma與cache的一致性 相關api dma資料結構 dma是一種無需cpu的參加就可以讓外設與系統記憶體之間進行雙向資料傳輸的硬體機制。它可以使系統cpu從實際的i o資料傳輸過程中擺脫出來,大大提高系統的吞吐率,並且在傳輸期間,cpu還可以併發執行其他任務。cache用作cp...
驅動開發 字元裝置 塊裝置簡介 sky原創
驅動開發 字元裝置,塊裝置,網路裝置 字元裝置 以位元組流的方式訪問,不能隨機訪問 有例外,顯示卡 eeprom可以隨機訪問 eeprom可以擦寫1億次,是一種字元裝置,可以隨機訪問 讀寫是直接訪問硬體的 flash 擦寫次數有限,一百萬次,容易有壞塊 塊裝置 能隨機訪問 以 塊 為單位進行訪問 塊...