NXP提供Linux源码,具体文档目录:linux-imx-4.1.15\Documentation\devicetree\bindings\pinctrl\fsl,imx-pinctrl.txt。
适用于 i.MX 的飞思卡尔 IOMUX 控制器 (IOMUXC)。
IOMUX 控制器 (IOMUXC) 与 IOMUX 一起使 IC 能够将一个 PAD 共享给多个功能块。 共享是通过多路复用 PAD 输入/输出信号来完成的。 每个 PAD 最多有 8 个复用选项(称为 ALT 模式)。 由于不同的模块需要不同的 PAD 设置(如上拉、保持器等),IOMUXC 还控制 PAD 设置参数。
有关客户端设备使用的常用 pinctrl 绑定的详细信息,包括短语“pin configuration node”的含义,请参阅此目录中的 pinctrl-bindings.txt。
飞思卡尔 IMX 引脚配置节点是一组引脚中的一个节点,可用于特殊设备或功能。 该节点代表该组中引脚的多路复用和配置。 “mux”选择此引脚可以工作的功能模式(也称为 mux 模式),“config”配置 pad 设置,例如上拉、开漏、驱动强度等。
iomux 控制器所需的属性:
compatible: "fsl,<soc>-iomuxc"
请参阅每个 fsl,< soc >-pinctrl.txt 绑定文档以了解支持的 SoC。
引脚配置节点所需的属性:
fsl,pins:每条由 6 个整数组成,代表一个 pin 的 mux 和 config 设置。 前 5 个整数 <mux_reg conf_reg input_reg mux_val input_val> 使用 PIN_FUNC_ID 宏指定,该宏可在设备树源文件夹下的 imx-pinfunc.h 中找到*。 最后一个整数 CONFIG 是该引脚上的上拉等设置值。因此,fsl,pins 格式为 <PIN_FUNC_ID CONFIG>。
用于配置的位:
NO_PAD_CTL(1 << 31):表示此引脚不需要配置。
SION(1 << 30):软件输入。
无论 MUX_MODE 功能如何,都强制选择复用模式输入路径。默认情况下,输入路径由所选复用模式(常规)的功能确定。
其他位用于 PAD 设置。
请参阅每个 fsl,< soc >-pinctrl,txt 绑定文档了解 SoC 特定部分的位定义。
注意:
使用 fsl、imx-pinctrl 绑定的一些要求:
1、我们在 iomux 控制器节点下定义了 pin 功能节点,以表示该 SoC 支持的 pinmux 功能。
2、引脚配置节点打算在特定功能上工作,应在该特定功能节点下定义。功能节点的名称应该很好地代表此引脚配置节点中的这组引脚正在执行的功能。
3、驱动程序可以使用功能节点的名称和引脚配置节点的名称来描述引脚功能和组层次结构。例如,Linux IMX pinctrl 驱动以函数节点名作为函数名,引脚配置节点名作为组名来创建映射表。
4、每个管脚配置节点都应该有一个 phandle,设备可以通过参考该管脚配置节点的 phandle 来设置管脚配置。
例如:
usdhc@0219c000 { /* uSDHC4 */
non-removable;
vmmc-supply = <®_3p3v>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc4_1>;
};
iomuxc@020e0000 {
compatible = "fsl,imx6q-iomuxc";
reg = <0x020e0000 0x4000>;
/* shared pinctrl settings */
usdhc4 {
pinctrl_usdhc4_1: usdhc4grp-1 {
fsl,pins = <
MX6QDL_PAD_SD4_CMD__SD4_CMD 0x17059
MX6QDL_PAD_SD4_CLK__SD4_CLK 0x10059
MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17059
MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17059
MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17059
MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17059
MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17059
MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17059
MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17059
MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17059
>;
};
....
};
请参阅 imx6q 数据表中的 IOMUXC 控制器章节,0x17059 表示启用滞后、47KOhm Pull Up、50Mhz 速度、80Ohm 驱动器强度和 Fast Slew Rate。
用户应参考每个 SoC 规范来设置正确的值。