我正在尝试在基于 IMX6 的 SoC 上启用 Fusion F07A-0114-01 触摸屏。我遵循了天马触摸屏的模板:
#include "imx6q-mercury.dtsi"
/ {
model = "AAA Mercury";
compatible = "aaa,imx6q-hydra13", "aaa,imx6q-mercury",
"aaa,imx6q-hydra", "fsl,imx6q";
};
&ssd_touch {
status = "okay";
};
其中 ssd_touch 在 imx6q-mercury.dtsi 中定义:
&i2c1 {
status = "okay";
clock-frequency = <250000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1_mercury
&pinctrl_touch_mercury>;
ssd_touch: touch@0x48 {
/* SSD touch panel */
compatible = "ssd254x-ts";
reg = <0x48>;
interrupt-parent = <&gpio7>;
interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
rst-gpio = <&gpio6 2 GPIO_ACTIVE_HIGH>;
xres = <1024>;
yres = <600>;
status = "disabled";
/* set up for an SSD2543QN4 in the TIANMA
* TM070DVHG01 ver1.4 display. This is a hardware specific implementation
* and no attempt has been made to make this driver applicable to all ssd254x
* devices.
*
* The SSD2543QN4 has 30 drive pins of which 26 are connected
* but only 25 are used, DRIVE25 is not used
* The SSD2543QN4 has 23 sense lines of which 17 are connected
* but only 15 are used, SENSE19 and SENSE35 are not used
*/
/* SSD/Tianma recommended settings with 1.1mm optically bonded cover glass
* Sept 30/2016
*/
ssd254x,cfg-regs = <
0x06190F // 25 drive, 15 sense
0x0700E0 // drive 0 set to pin 0xE0
0x0800E1
0x0900E2
0x0A00E3
0x0B00E4
0x0C00E5
0x0D00E6
0x0E00E7
0x0F00E8
0x1000E9
0x1100EA
0x1200EB
0x1300EC
0x1400ED
0x1500EE
0x1600EF
0x1700F0
0x1800F1
0x1900F2
0x1A00F3
0x1B00F4
0x280014 // sense offset 20
0x30080F // 1us start, 1.875us stop integration
0xD70003 // VREF is VCI/2 +/-.5V
0xD80006 // bias 23k ohm, default 14k ohm
0xDB0003 // integrator cap value?, default 0x0004
0x330003 // min area 3, default 0x0001
0x34C660 // min level, default 0x0064
0x360020 // max area, default 0x0018
0x3707C4 // register not found?
0x4010C8 // register not found?
0x410030 // register not found?
0x420050 // register not found?
0x430030 // register not found?
0x440050 // register not found?
0x450000 // register not found?
0x46101F // register not found?
0x568010 // register not found?
0x598010 // register not found?
0x650005 // transpose X
0x662580 // x scaling factor, default 0x4000
0x672760 // y scaling factor, default 0x4000
0x7AFFFF // register not found?
0x7B0003 // FIFO overflow, data valid masks
0x25000C // frame scan 12ms
>;
};
};
虽然上面编译得很好,但对于以下代码:
#include "imx6q-mercury7.dtsi"
/ {
model = "AAA Mercury";
compatible = "aaa,imx6q-hydra0F", "aaa,imx6q-mercury",
"aaa,imx6q-hydra", "fsl,imx6q";
};
&fusion_touch {
status = "okay";
};
其中 fusion_touch 在 imx6q-mercury7.dtsi 中定义:
&i2c1 {
status = "okay";
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1_mercury
&pinctrl_touch_mercury>;
fusion_touch {
compatible = "fusion-ts";
reg = <0x10>;
interrupts-extended = <&gpio7 12 IRQ_TYPE_EDGE_RISING>;
resets = <&fusion_reset>;
};
};
我在编译过程中遇到错误: DTC arch/arm/boot/dts/imx6q-hydra0F.dtb 错误:/android/vendor/nxp-opensource/kernel_imx/arch/arm/boot/dts/imx6q-hydra0F.dts:23.1-12 未找到标签或路径fusion_touch 致命错误:语法错误解析输入树
这个特定错误的解释是什么?两者的区别仅在于 ssd_touch 是完全定义的。