Linux kernel Fusion触摸屏设备树编译错误

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

我正在尝试在基于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";
};
其中,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>;
    };
};