主控芯片 | 硬件开发板 | 内核版本 |
---|---|---|
imx6 | 100ask_imx6ull | Linux-4.9.88 |
pin
信息;pin
信息来设置pin
的复用功能;pin
信息来设置pin
的电气特性。设备树里面创建一个节点来描述 GPIO
PIN
的配置信息:
设备树文件目录:Linux-4.9.88/arch/arm/boot/dts/imx6ull.dtsi
对iomuxc
节点进行数据的追加:
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog_1>;
imx6ul-evk {
pinctrl_hog_1: hoggrp-1 {
fsl,pins = <
MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059 /* SD1 CD */
MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID 0x17059 /* USB OTG1 ID */
MX6UL_PAD_CSI_DATA07__GPIO4_IO28 0x000010B0
MX6ULL_PAD_SNVS_TAMPER5__GPIO5_IO05 0x000110A0
>;
};
......
pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX6UL_PAD_UART4_TX_DATA__I2C1_SCL 0x4001b8b0
MX6UL_PAD_UART4_RX_DATA__I2C1_SDA 0x4001b8b0
>;
};
......
}
}
MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059
这个宏定义在:Linux-4.9.88/arch/arm/boot/dts/imx6ul-pinfunc.h
/* <mux_reg conf_reg input_reg mux_mode input_val> */
#define MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x0090 0x031c 0x0000 5 0
从芯片手册:IMX6ULLRM.pdf
可知
mux_reg
为SW_MUX_CTL_PAD_UART1_RTS_B
偏移地址:0x0090
mux_mode
为5
代表为普通GPIO
模式
conf_reg
为 IOMUXC_SW_PAD_CTL_PAD_UART1_RTS_B
偏移地址:0x031c
0x17059
就是 conf_reg
寄存器值,对应二级制为:10111000001011001
文件目录:Linux-4.9.88/drivers/pinctrl/freescale/pinctrl-imx6ul.c
文件目录:Linux-4.9.88/rivers/pinctrl/freescale/pinctrl-imx.c