内核中设备树的操作函数

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

 

原文地址:https://www.cnblogs.com/zhangshuaifeng/p/10013440.html