include/linux/目錄下有很多of開頭的頭文件是與設備樹相關的。
在內核中設備樹處理的一般過程為:.dts -> .dtb -> device_node -> platform_device
a. 處理DTB
of_fdt.h // dtb文件的相關操作函數, 我們一般用不到, 因為dtb文件在內核中已經被轉換為device_node樹(它更易於使用)
b. 處理device_node
of.h // 提供設備樹的一般處理函數, 比如 of_property_read_u32(讀取某個屬性的u32值), of_get_child_count(獲取某個device_node的子節點數)
of_address.h // 地址相關的函數, 比如 of_get_address(獲得reg屬性中的addr, size值)
of_match_device(從matches數組中取出與當前設備最匹配的一項)
of_dma.h // 設備樹中DMA相關屬性的函數
of_gpio.h // GPIO相關的函數
of_graph.h // GPU相關驅動中用到的函數, 從設備樹中獲得GPU信息
of_iommu.h // 很少用到
of_irq.h // 中斷相關的函數
of_mdio.h // MDIO (Ethernet PHY) API
of_net.h // OF helpers for network devices.
of_pci.h // PCI相關函數
of_pdt.h // 很少用到
of_reserved_mem.h // reserved_mem的相關函數
c. 處理 platform_device
of_platform.h // 把device_node轉換為platform_device時用到的函數,
// 比如of_device_alloc(根據device_node分配設置platform_device),
// of_find_device_by_node (根據device_node查找到platform_device),
// of_platform_bus_probe (處理device_node及它的子節點)
of_device.h // 設備相關的函數, 比如 of_match_device