各位,我现在试用的是MX6Q-SDB开发板,因为没找到使用官方源码里面的IC的触摸屏,所以找了一个使用GT927 芯片的触摸屏,现在在移植厂商给的源码中需要直接指定中断引脚和RST引脚。部分代码如下:
void gtp_int_sync(s32 ms)
{
GTP_GPIO_OUTPUT(GTP_INT_PORT, 0);
msleep(ms);
GTP_GPIO_AS_INT(GTP_INT_PORT);
}
#define GTP_GPIO_OUTPUT(pin,level) gpio_direction_output(pin,level)
#define GTP_RST_PORT S5PV210_GPJ3(6)
#define GTP_INT_PORT S5PV210_GPH1(3)
其中S5PV210_GPJ3(6)和 S5PV210_GPH1(3) 就是厂商默认板子的寄存器名字,现在我需要查询我的板子对应的引脚,然后替换它们。
可以看到板子的LVDS接口提供了TP的中端引脚但是没有提供RST引脚。我根据下面两篇文档找到了引脚名的定义。、
http://www.armbbs.net/forum.php?mod=viewthread&tid=19291&extra=page%3D1
http://blog.csdn.net/xnwyd/article/details/9042159
我理解是这样的:
1、在 arch/arm/plat-mxc/include/mach/iomux-mx6q.h 中找到这个引脚你需要使用的功能宏定义,比如LVDS0对应的TP中断引脚为 CAP_TCH_INT0 , 连接到IMX6的名称为 NANDF_ALE, 所以我就应该在 iomux-mx6q.h中搜索 NANDF_ALE,找到如下内容:
#define MX6Q_PAD_NANDF_ALE__RAWNAND_ALE \
(_MX6Q_PAD_NANDF_ALE__RAWNAND_ALE | MUX_PAD_CTRL(MX6Q_GPMI_PAD_CTRL2))
#define MX6Q_PAD_NANDF_ALE__USDHC4_RST \
(_MX6Q_PAD_NANDF_ALE__USDHC4_RST | MUX_PAD_CTRL(MX6Q_USDHC_PAD_CTRL))
#define MX6Q_PAD_NANDF_ALE__PCIE_CTRL_DIAG_STATUS_BUS_MUX_0 \
(_MX6Q_PAD_NANDF_ALE__PCIE_CTRL_DIAG_STATUS_BUS_MUX_0 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_NANDF_ALE__USBOH3_UH3_DFD_OUT_12 \
(_MX6Q_PAD_NANDF_ALE__USBOH3_UH3_DFD_OUT_12 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_NANDF_ALE__USBOH3_UH2_DFD_OUT_12 \
(_MX6Q_PAD_NANDF_ALE__USBOH3_UH2_DFD_OUT_12 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_NANDF_ALE__GPIO_6_8 \
(_MX6Q_PAD_NANDF_ALE__GPIO_6_8 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_NANDF_ALE__MIPI_CORE_DPHY_TEST_IN_24 \
(_MX6Q_PAD_NANDF_ALE__MIPI_CORE_DPHY_TEST_IN_24 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_NANDF_ALE__TPSMP_HTRANS_1 \
(_MX6Q_PAD_NANDF_ALE__TPSMP_HTRANS_1 | MUX_PAD_CTRL(NO_PAD_CTRL))
而我们需要使用它作为GPIO功能使用,所以选择 “MX6Q_PAD_NANDF_ALE__GPIO_6_8” , 将这个宏添加进 arch/arm/mach-mx6/board-mx6q_sabresd.h 文件的 static iomux_v3_cfg_t mx6q_sabresd_pads[] 结构体中,这样就告诉了系统将这个引脚作为GPIO使用。
问题一:请问我这个理解是否有问题?
2、 在 arch/arm/mach-mx6/board-mx6q_sabresd.c 中有宏定义 #define SABRESD_CAP_TCH_INT0 IMX_GPIO_NR(6, 8) , 这个SABRESD_CAP_TCH_INT0 就是我要代替 S5PV210_GPH1(3) 的名字。
问题二:请问SABRESD_CAP_TCH_INT0是否就是最终的引脚名称?
问题三:如果我使用 MX6Q_PAD_NANDF_ALE__RAWNAND_ALE 这个功能,请问 #define SABRESD_CAP_TCH_INT0 IMX_GPIO_NR(6,8) 中的数字还是6和8么? 这个数字是通过哪里确定的?
3、 我在TP的代码中用SABRESD_CAP_TCH_INT0 代替了 S5PV210_GPH1(3) ,可是编译时会报“未定义”错误。所以我就把 “#define SABRESD_CAP_TCH_INT0 IMX_GPIO_NR(6,8) ” 直接放入TP的源码头文件中。
问题四:请问这样有问题吗?如果有,请问怎么改?
问题五:imx6的datasheet中介绍的IOMUX到底做什么用的呢?看了那么多介绍,我也没把它跟我看到的代码联系起来,请各位指点一下(我要用GPIO模拟reset信号时,估计能用到)。
问题有点多,请各位多多指教。
|