imx6系列--引脚复用及特性设置(设备树)

一 简介
IOMUX:让IC的多个功能模块共享一个引脚。
每个模块都需要设置每个引脚的性能,如上下拉 高阻等,对于每个引脚都有高达8个复用选项。
相关寄存器:
32位的复用控制寄存器(IOMUXC_SW_MUX_CTL_PAD_ or IOMUXC_SW_MUX_CTL_GRP_) ,用于选择复用模式。
32位的引脚控制寄存(IOMUXC_SW_PAD_CTL_PAD_ orIOMUXC_SW_PAD_CTL_GRP_) ,用于配置每个引脚特性。
32位通用寄存器(GPR0 to GPR13)
32位输入选择寄存器 xxxxx_INPUT,用于选择输入信号。

模块功能简图
imx6系列--引脚复用及特性设置(设备树)_第1张图片

datasheet:相关章节
Chapter 4​: External Signals and Pin Multiplexing 引脚复用
Chapter 31​: IOMUX Controller (IOMUXC) 引脚复用控制器

二 驱动文件相关

寄存器配置宏: /arch/arm/boot/dts/Imx6ul-pinfunc.h
举例详解:

#define    MX6UL_PAD_SNVS_TAMPER5__GPIO5_IO05                0x0030 0x02BC 0x0000 5 0

其对应意义:
即:复用控制寄存器IOMUXC_SW_MUX_CTL_PAD_SNVS_TAMPER5 的偏移地址:30h offset
引脚控制寄存器IOMUXC_SW_PAD_CTL_PAD_SNVS_TAMPER5 的偏移地址:2BCh offset
输入寄存器的偏移地址:无,则写0 ; 有则写相应的 偏移地址。例如:IOMUXC_UART6_RX_DATA_SELECT_INPUT:64Ch offset
复用模式值:见 datasheet的Chapter 4: External Signals and Pin Multiplexing 章节,则,写5
输入值:输入寄存器值xxxx_INPUT。
读取设备树文件:/drivers/pinctrl/Pinctrl-imx.c

设备树设置:
例如:

pinctrl_uart4: uart4grp {
    fsl,pins = <
        MX6UL_PAD_LCD_CLK__UART4_DCE_TX     0x1b0b1
        MX6UL_PAD_LCD_ENABLE__UART4_DCE_RX  0x1b0b1
        /*设置为引脚流控*/
        //MX6UL_PAD_LCD_HSYNC__UART4_DTE_RTS    0x1b0b1
        //MX6UL_PAD_LCD_VSYNC__UART4_DTE_CTS    0x1b0b1
        /*设置为普通GPIO*/
        MX6UL_PAD_LCD_HSYNC__GPIO3_IO02     0xb0b0
        MX6UL_PAD_LCD_VSYNC__GPIO3_IO03     0xb0b0
    >;
};

注:最后一个值 为该引脚的性能配置值,可根据需求修改。 0x80000000表示无效配置,即取默认配置。0x4xxxxxxxxx,表示设置了SION软件标志位。

    0x80000000 is special and means "I don't know and don't change from the default"
    Bit 30 set to 1 means: software input on (SION) whcih means that the logical value of an output can be read back

你可能感兴趣的:(linux系统开发)