我需要指定EDT-FT5206
显示的GPIO引脚,但我不知道从哪里开始。
我知道linux内核有一些针对此类屏幕的特定驱动程序,位于"/drivers/input/touchscreen/edt-ft5x06. c"
,可以通过modprobe命令调用;但我不知道如何指定从哪个引脚接收信息。
到目前为止,我已经能够收集一些文档,如屏幕数据表和一些有关驱动程序的信息,但我还没有做更多的事情。
我事先感谢你的帮助。
答案 0 :(得分:0)
在该驱动程序的最后,您可以看到设备树匹配表:
#ifdef CONFIG_OF
static const struct of_device_id edt_ft5x06_of_match[] = {
{ .compatible = "edt,edt-ft5206", .data = &edt_ft5x06_data },
{ .compatible = "edt,edt-ft5306", .data = &edt_ft5x06_data },
{ .compatible = "edt,edt-ft5406", .data = &edt_ft5x06_data },
{ .compatible = "edt,edt-ft5506", .data = &edt_ft5506_data },
/* Note focaltech vendor prefix for compatibility with ft6236.c */
{ .compatible = "focaltech,ft6236", .data = &edt_ft6236_data },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, edt_ft5x06_of_match);
#endif
这样,您可以在电路板设备树中查找兼容属性,我以arch/arm/boot/dts/imx28tx.dts
为例,其节点为:
polytouch: edt-ft5x06@38 {
compatible = "edt,edt-ft5x06";
reg = <0x38>;
pinctrl-names = "default";
pinctrl-0 = <&tx28_edt_ft5x06_pins>;
interrupt-parent = <&gpio2>;
interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
wake-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
wakeup-source;
};
这样,我们可以使用属性pinctrl-0
中使用的引用来检查屏幕所使用的引脚:
tx28_edt_ft5x06_pins: tx28-edt-ft5x06-pins@0 {
reg = <0>;
fsl,pinmux-ids = <
MX28_PAD_SSP0_DATA6__GPIO_2_6 /* RESET */
MX28_PAD_SSP0_DATA5__GPIO_2_5 /* IRQ */
MX28_PAD_ENET0_RXD2__GPIO_4_9 /* WAKE */
>;
fsl,drive-strength = <MXS_DRIVE_4mA>;
fsl,voltage = <MXS_VOLTAGE_HIGH>;
fsl,pull-up = <MXS_PULL_DISABLE>;
};
如果imx28tx
不是您的电路板,则您必须在电路板设备树中编写此配置,或者使用电路板的GPIO制作用于触摸屏的DT覆盖。