一、pinctrl子系统
1、pinctrl子系统简介
pinctrl子系统的主要作用:
1)获取设备树的 pin 信息;
2)根据获取到的 pin 信息来设置 pin 的复用功能;
3)根据获取到的 pin 信息来设置 pin 的电气属性。
2、设备树中的 pin 配置信息
设备树中的 iomuxc 节点是 IOMUXC 外设对应的节点,用来描述各外设 pin 配置信息的。在 .dtsi 文件中定义了该节点:
iomuxc: iomuxc@020e0000 {
compatible = "fsl,imx6ul-iomuxc";
reg = <0x020e0000 0x4000>;
};
打开板子设备树文件,找到 iomuxc 节点的追加部分:
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog_1>;
imx6ul-evk {
gpioled: ledgrp {
//led外设
fsl,pins = <
MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0x10b0
>;
};
pinctrl_hog_1: hoggrp-1 {
fsl,pins = <
MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059 /* SD1 CD */
MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT 0x17059 /* SD1 VSELECT */
MX6UL_PAD_GPIO1_IO09__GPIO1_IO09 0x17059 /* SD1 RESET */
>;
};
pinctrl_csi1: csi1grp {
fsl,pins = <
MX6UL_PAD_CSI_MCLK__CSI_MCLK 0x1b088
MX6UL_PAD_CSI_PIXCLK__CSI_PIXCLK 0x1b088
MX6UL_PAD_CSI_VSYNC__CSI_VSYNC 0x1b088
MX6UL_PAD_CSI_HSYNC__CSI_HSYNC 0x1b088
MX6UL_P