驱动Driver-Pinctrl系统
pinctrl子系统的作用介绍
- 在驱动中有没有更通用的方法,可以不涉及到具体的寄存器操作的内容呢?---》 pinctrl 子系统和 GPIO 子系统。
- pinctrl 子系统主要用于管理芯片的引脚。
- 在驱动程序中我们需要手动设置每个引脚的复用功能,不仅增加了工作量,编写的驱动程序不方便移植,可重用性差等。
- pinctrl 子系统是由芯片厂商来实现的, 简单来说用于帮助我们管理芯片引脚并自动完成引脚的初始化,而我们要做的只是在设备树中按照规定的格式写出想要的配置参数即可。
- 即pinctrl 子系统是在驱动设备树中统一添加引脚复用寄存器管理和配置,这样就不需要开发功能是去配置寄存器的值,减少寄存器配置错误的可能性和复杂度。
设备树iomuxc内容
先在主要soc上创建节点
添加PIN管理内容
在其他dts文件包含该dtsi文件,然后添加节点信息
- 这里引脚的宏定义,左边的宏可以在pinfunc.h中知道各个寄存器的偏移地址,右边的数值是用户根据需要配置寄存器计算出来的值
子节点介绍&自定义节点添加方法
合并以上两个文件成一个iomuxc
查询引脚定义复用功能的文件-pinfunc.h
在pinctrl节点中自定义添加iomuxc子节点的模板