Linux kernel Fusion触摸屏设备树编译错误
我正在尝试在基于IMX6的SoC上启用Fusion F07A-0114-01触摸屏。我遵循了天马触摸屏的模板:Linux kernel Fusion触摸屏设备树编译错误,linux-kernel,touchscreen,device-tree,Linux Kernel,Touchscreen,Device Tree,我正在尝试在基于IMX6的SoC上启用Fusion F07A-0114-01触摸屏。我遵循了天马触摸屏的模板: #include "imx6q-mercury.dtsi" / { model = "AAA Mercury"; compatible = "aaa,imx6q-hydra13", "aaa,imx6q-mercury", "aaa,imx6
#include "imx6q-mercury.dtsi"
/ {
model = "AAA Mercury";
compatible = "aaa,imx6q-hydra13", "aaa,imx6q-mercury",
"aaa,imx6q-hydra", "fsl,imx6q";
};
&ssd_touch {
status = "okay";
};
其中,imx6q-mercury.dtsi中定义了ssd_touch:
&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
>;
};
};
其中,imx6q-mercury7.dtsi中定义了fusion_touch:
&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>;
};
};
&i2c1{
status=“好”;
时钟频率=;
pinctrl names=“默认”;
pinctrl-0=;
融合触摸{
compatible=“fusion ts”;
reg=;
中断扩展=;
重置=;
};
};
我在编译过程中遇到错误:
DTC arch/arm/boot/dts/imx6q-hydra0F.dtb
错误:/android/vendor/nxp opensource/kernel\u imx/arch/arm/boot/dts/imx6q-hydra0F.dts:23.1-12标签或路径未找到
致命错误:分析输入树时出现语法错误
如何解释这一特殊错误?两者之间的区别只是ssd_touch已完全定义。我看不出您发布的代码中包含了imx6-mercury7.dtsi。引用
&fusion\u touch
的文件包含文件imx6q-mercury7.dtsi。也许是一个简单的打字错误?我在帖子中纠正了这个错误。没有imx6-mercury.dtsi,只有imx6q-mercury.dtsi。我认为问题在于&fusion\u-touch
不是有效的参考,因为fusion\u-touch
不是标签,而是(相对)节点名。按照与ssd\u touch
相同的模板,您可以将节点名称和标签更改为fusion\u touch:touch@10{
(对于ssd\u触摸屏:touch@0x48{
我认为将0x
前缀放在地址中是不可取的。)
&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>;
};
};