【Linux-驱动开发-pinctrl子系统】
Linux-驱动开发-pinctrl 子系统
- ■ pinctrl 子系统
- ■ PIN 配置信息详解 -iomuxc 节点
- ■ 设备树中添加 pinctrl 节点模板
■ pinctrl 子系统
pinctrl 子系统主要工作内容如下:
①、获取设备树中 pin 信息。
②、根据获取到的 pin 信息来设置 pin 的复用功能
③、根据获取到的 pin 信息来设置 pin 的电气特性,比如上/下拉、速度、驱动能力等。
对于我们使用者来讲,只需要在设备树里面设置好某个 pin 的相关属性即可,其他的初始
化工作均由 pinctrl 子系统来完成, pinctrl 子系统源码目录为 drivers/pinctrl。
■ PIN 配置信息详解 -iomuxc 节点
pinctrl_hog_1 子节点就是和热插拔有关的 PIN 集合,比如 USB OTG 的 ID 引脚。
pinctrl_flexcan1 子节点是 flexcan1 这个外设所使用的 PIN,
pinctrl_wdog 子节点是 wdog 外设所使用的 PIN。
■ 设备树中添加 pinctrl 节点模板
如果需要在 iomuxc 中添加我们自定义外设的 PIN,那么需要新建一个子节点,然后将这个自定义外设的所有 PIN 配置信息都放到这个子节点中。
1、创建对应的节点
2、添加“fsl,pins”属性
3、在“fsl,pins”属性中添加 PIN 配置信息
pinctrl_test: testgrp {
fsl,pins = <
MX6UL_PAD_GPIO1_IO00__GPIO1_IO00 config /*config 是具体设置值*/
>;
};