[imx6][Linux4.9]IMX6平台 pinctrl子系统

在这里插入图片描述

文章目录

    • 1、Pinctrl 子系统
      • 1.1、Pinctrl 子系统的作用
      • 1.2、设备树中PIN的配置信息
      • 1.2、设备树中PIN的配置信息中的复用信息解析
      • 1.3、PINCTRL子系统驱动

主控芯片 硬件开发板 内核版本
imx6 100ask_imx6ull Linux-4.9.88

1、Pinctrl 子系统

1.1、Pinctrl 子系统的作用

  • 获取设备树中的pin信息;
  • 根据获取到的pin信息来设置pin的复用功能;
  • 根据获取到的pin信息来设置pin的电气特性。

1.2、设备树中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
                        >;
                };
                ......
		}
}

1.2、设备树中PIN的配置信息中的复用信息解析

MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x17059

这个宏定义在:Linux-4.9.88/arch/arm/boot/dts/imx6ul-pinfunc.h

                                                    /*  */
#define MX6UL_PAD_UART1_RTS_B__GPIO1_IO19               0x0090   0x031c    0x0000     5        0

从芯片手册:IMX6ULLRM.pdf可知

  • mux_regSW_MUX_CTL_PAD_UART1_RTS_B偏移地址:0x0090

  • mux_mode5代表为普通GPIO模式
    [imx6][Linux4.9]IMX6平台 pinctrl子系统_第1张图片

  • conf_regIOMUXC_SW_PAD_CTL_PAD_UART1_RTS_B 偏移地址:0x031c

  • 0x17059 就是 conf_reg 寄存器值,对应二级制为:10111000001011001
    [imx6][Linux4.9]IMX6平台 pinctrl子系统_第2张图片

1.3、PINCTRL子系统驱动

文件目录:Linux-4.9.88/drivers/pinctrl/freescale/pinctrl-imx6ul.c
文件目录:Linux-4.9.88/rivers/pinctrl/freescale/pinctrl-imx.c

你可能感兴趣的:(嵌入式硬件,驱动开发)