Linux驱动 2026年5月27日 3 分钟

Pinctrl子系统2-关键结构体以及作用

左边会抽象出一个pinctrl_dev结构体、右边有一个pinctrl结构体 pins和npins用来描述单个引脚 上述…

左边会抽象出一个pinctrl_dev结构体、右边有一个pinctrl结构体

pins和npins用来描述单个引脚

上述这个结构体主要用来获取有多少组引脚以及某一组的多个引脚,以及对设备树进行解析,上述一起构成了pinctrl子系统的第一个作用:引脚描述

作用2:引脚复用

用来将某一组引脚配置为某一个功能,还可以对设备支持多少个功能,功能的名字、每一个功能下面有多少组引脚以及相关gpio引脚功能函数

作用三:引脚配置

获取当前配置,设置配置、获取某一组引脚的配置、设置某一组引脚的配置

设置好结构体之后就可以注册生成一个pinctrl_dev设备结构体

上述结构体是服务端的关键结构体,接下来重点介绍客户端的重要结构体

dev_pin_info用来表示该设备的pinctrl信息,对于不能转化为平台设备的节点,其子设备节点下面也会有一个struct device结构体用来对设备树中信息进行描述

如上图所示dev_pin_info结构体(设备使用pinc)中的pinctrl结构体(某一个设备使用 pinctrl 子系统时,内核给这个设备创建的“引脚控制句柄”)中使用链表来多设备的多个状态进行管理。每一个pinctrl使用链表来管理多个状态,而每个状态又实用链表来管理某个状态下面又哪些设置

如何构造出pinctrl_state

调用函数dt_node_to_map函数将设备树节点转换为pinctrl_map节点

上一篇 设备树知识总结

本章内容用来对设备树相关的内容进行一个全局的总结 平台总线驱动的匹配过程 b. 如何确定platform_device和...

下一篇 Pincontroller构造过程分析

本章主要讲解服务端设备树的处理过程 更具设备树进行平台设备驱动匹配 上述代码的作用就是给引脚一个编号,然后又给每个引脚一...