1. 程式人生 > >imx6q平臺的gpio配置方法

imx6q平臺的gpio配置方法

這裡介紹一下imx6q平臺的gpio配置方式,如下圖所示為原理圖(從原理圖中可看到每個引腳的名稱)。



比如引腳名稱為GPIO_16,開啟kernel_imx/arch/arm/boot/dts/imx6q-pinfunc.h檔案(該檔案都是一些巨集定義,固定形式為MX6QDL_PAD_引腳名_引腳功能描述),搜尋GPIO_16,可看到如下結果

<mux_reg conf_reg input_reg mux_mode input_val>

#define MX6QDL_PAD_GPIO_16__ESAI_TX3_RX2            0x248 0x618 0x880 0x0 0x1
#define MX6QDL_PAD_GPIO_16__ENET_1588_EVENT2_IN     0x248 0x618 0x000 0x1 0x0
#define MX6QDL_PAD_GPIO_16__ENET_REF_CLK            0x248 0x618 0x83c 0x2 0x1
#define MX6QDL_PAD_GPIO_16__SD1_LCTL                0x248 0x618 0x000 0x3 0x0
#define MX6QDL_PAD_GPIO_16__SPDIF_IN                0x248 0x618 0x914 0x4 0x3
#define MX6QDL_PAD_GPIO_16__GPIO7_IO11              0x248 0x618 0x000 0x5 0x0
#define MX6QDL_PAD_GPIO_16__I2C3_SDA                0x248 0x618 0x8ac 0x6 0x2
#define MX6QDL_PAD_GPIO_16__JTAG_DE_B               0x248 0x618 0x000 0x7 0x0





這是引腳這個引腳可設定成7中種功能中的一種,這裡以設定成普通的GPIO口為例。

開啟kernel_imx/arch/arm/boot/dts/imx6qdl-sabresd.dtsi,找到iomuxc節點,新增

MX6QDL_PAD_GPIO_16__GPIO7_IO11 0x80000000(該已經的暫存器配置情況,0x80000000代表不需要配置,具體可見http://blog.csdn.net/mike8825/article/details/51475985)即可配置成普通IO模式。

MX6QDL_PAD_GPIO_16__GPIO7_IO11代表第7組gpio中的第11個gpio口,其中每組32個gpio口.

在驅動中使用gpio_request時,io埠號為IMX_GPIO_NR(7,11)=32×(7-1)+11=203;

在arch/arm/mach-imx/hardware.h,IMX_GPIO_NR定義為

#define IMX_GPIO_NR(bank, nr)        (((bank) - 1) * 32 + (nr))