当前位置: 首页 > article >正文

设备树常用of操作函数

of函数作用:

Linux驱动中的设备树用来描述板级信息的,比如:GPIO,IIC,SPI等外设以及声卡,SD卡灯硬件。驱动开发人员在编写驱动代码的时候是需要根据设备树提供的信息来写驱动程序的,那么如何获取这些信息成了问题。

Linux内核提供了一系列读取设备树信息的函数,他们都以of开头,所以称为of函数

of_find_node_by_path

该函数通过节点路径名称来查找结点,是比较常用的查找节点的函数

函数原型:

inline struct device_node *of_find_node_by_path(const char *path)

参数解释:

path:带有全路径的节点名,可以使用节点的别名
返回值:成功返回device_node类型的节点结构体,失败返回NULL


of_find_property

static inline struct property *of_find_property(const struct device_node *np,
						const char *name,
						int *lenp)

参数一:要查找的属性所在的节点结构体
参数二:要查找的属性名字
参数三:返回值property结构体的name的长度,一般给NULL
(其实我很疑惑,调用这个函数的目的就是读取属性值的,那我们肯定实现不知道属性值啊?设置参数三的意义何在?)


of_property_read_string:

这个函数用于读取值是字符串的属性的值

static inline int of_property_read_string(const struct device_node *np,
					  const char *propname,
					  const char **out_string)

参数一:节点结构体
参数二:要读取的属性的名字
参数三:字符串指针,用于存放返回值,返回值就是读取到的字符串


of_property_read_u32_array

此函数也很常用,用于读取数组元素,存放在传入的指针指向的内存中

static inline int of_property_read_u32_array(const struct device_node *np,
					     const char *propname,
					     u32 *out_values, size_t sz)

参数一:节点结构体
参数二:要读取的属性名字(属性的元素是数组类型的)
参数三:u32类型的指针
参数四:要从指定属性读取的元素个数


of_iomap

把设备树节点中reg属性中的地址段映射为虚拟内存地址段,返回映射后的虚拟内存地址段指针。注意:reg中是以:”起始地址,地址长度“的格式来表示地址段的,通过of_iomap函数的参数三可以索引reg中要映射的地址段(从0开始索引),也就是说,reg属性元素的两个元素对应一个索引号

void __iomem *of_iomap(struct device_node *np, int index)

参数一:节点结构体
参数二:地址段索引
返回值:返回虚拟地址的指针,void __iomen *类型


of_property_read_bool

此函数判断设备节点是否含有某个属性

static inline bool of_property_read_bool(const struct device_node *np,
					 const char *propname)

参数一:节点结构体
参数二:属性名字
返回值:如果存在则返回非零,否则返回0

of_get_named_gpio

获取GPIO编号

static inline int of_get_named_gpio(struct device_node *np,
                                   const char *propname, int index)

参数一:节点结构体
参数二:属性名字
参数三:GPIO 索引 因为一个属性里面可能包含多个 GPIO,此参数指定要获取哪个 GPIO的编号,如果只有一个 GPIO 信息的话此参数为 0。
返回值:如果为正值,则是获取到的gpio编号,如果为负值;则函数调用失败


of_gpio_named_count

获取某个节点的某个属性中定义了几个gpio信息

int of_gpio_named_count(struct device_node *np, const char *propname)

参数一:节点结构体
参数二:要统计的属性名字
返回值:失败返回负数,成功返回统计个数


of_gpio_count

与of_gpio_named_count功能相同,只不过它只能统计属性名为gpios的gpio数量

nt of_gpio_count(struct device_node *np)


http://www.kler.cn/a/13815.html

相关文章:

  • UE4: Niagara系统实现雨天效果,并跟随人物移动
  • hadoop之MapReduce框架原理
  • Java基于POI动态合并单元格
  • 大语言模型-中文Langchain
  • ElasticSearch索引文档写入和近实时搜索
  • 86页2023年新型智慧城市顶层设计规划解决方案(ppt可编辑)
  • 火车站闸机web3d数字展示平台全方位动态呈现设备细节
  • MIT6.824 Lecture18 Fork Consistency
  • 赛题解析 | kaggle百万奖金新赛--图书墨水检测大赛
  • Zimbra 远程代码执行漏洞(CVE-2019-9670)漏洞分析
  • 非计算机专业如何转行成为程序员?我用亲身经历教你用这三种方法
  • 【LeetCode】数据结构题解(3)[查找链表中倒数第k个节点]
  • Mongo集群化部署+高可用架构
  • 使用chatgpt 调试 paddleocr 的模型迁移学习
  • 内卷的上海车展上,百度Apollo带来新型开放整零关系
  • Linux文件IO常用函数
  • IT知识百科:什么是SSID?
  • nodejs+vue 蛋糕甜品商城系统
  • chown 命令
  • Windows逆向安全(一)之基础知识(十五)