
一、函数接口
1、计算子节点数量
这个函数的作用是统计指定设备节点下有多少子节点。它帮助开发者在设备驱动程序中快速查看某个设备下直接连接的子设备数量,方便了解设备的层级关系。
函数说明
函数原型unsigned int device_get_child_node_count(struct device *dev);
头文件<linux/device.h>
参数
dev:struct device类型的指针,表示要计算子节点数量的设备节点。
功能 用于计算给定设备节点 dev 的子节点数量。
返回值 如果成功获取子节点数量,返回一个大于 0 的无符号整数,表示设备节点的子节点数量。如果获取失败,返回值为 0。
2、获取指定节点的 GPIO 结构描述
该函数的作用是根据设备节点地址 fwnode,从指定的属性名称 propname 中获取 GPIO 的配置信息。可以通过 index 参数指定要获取属性中的第几个条目。获取到的 GPIO 信息可用于后续的 GPIO 操作。
函数支持通过 dflags 参数设置 GPIO 的初始配置,例如设置为输入或输出模式,并可指定输出时的默认电平状态。label 参数用于给该 GPIO 添加可读性描述标签。
函数执行成功时会返回 GPIO 的配置描述信息指针,若获取失败则返回空指针 (NULL)。
函数说明
函数原型struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode, const char *propname, int index, enum gpiod_flags dflags, const char *label);
头文件<linux/gpio/consumer.h>
参数
fwnode: 指向struct fwnode_handle的指针,表示要获取 GPIO 的节点对象地址。propname: 属性名,指定要获取的 GPIO 的属性名称。index: 索引值,用于指定要获取的 GPIO 在属性中的索引,用于 GPIO 属性值包含多个 GPIO 引脚描述时。dflags: 获得到 GPIO 后的初始化配置,可以使用以下枚举值:GPIOD_ASIS: 不进行初始化。GPIOD_IN: 初始化为输入模式。GPIOD_OUT_LOW: 初始化为输出模式,输出低电平。GPIOD_OUT_HIGH: 初始化为输出模式,输出高电平。
label: 标签,用于标识 GPIO 的描述。
功能 该函数通过指定节点的对象地址获取子节点中的 GPIO 结构描述。
返回值 返回一个指向 struct gpio_desc 的指针,表示获取到的 GPIO 结构描述。如果获取失败,返回值为 NULL。
3、获取下一个子节点对象地址
函数说明
函数原型struct fwnode_handle *device_get_next_child_node(struct device *dev, struct fwnode_handle *child);
头文件<linux/device.h>
参数
dev: 指向struct device的指针,表示父设备节点。child: 指向struct fwnode_handle的指针,表示当前子设备节点。
功能 用于获取给定父设备节点 dev 的下一个子设备节点。
返回值 返回一个指向 struct fwnode_handle 的指针,表示下一个子设备节点。如果没有下一个子设备节点,返回值为 NULL。
该函数的作用是:在指定的父设备(dev)下,找到当前子设备(child)的下一个兄弟子设备。调用这个函数可以逐个遍历父设备下的所有子设备节点。函数会返回指向下一个子设备的指针(struct fwnode_handle 类型),如果已经没有后续子设备了,就返回空值 NULL。在开发设备驱动时,这个函数常被用来逐个访问设备树中某个父节点下的所有子设备节点。