2016-06-08 1 views
1

Я получаю вывод dmesg из моего ядра, созданного с помощью yocto.Взаимодействие с сенсорным экраном ft5x06 с yocto

bus: 'i2c': add driver edt_ft5x06 
bus: 'i2c': driver_probe_device: matched device 1-0038 with driver edt_ft5x06 
bus: 'i2c': really_probe: probing driver edt_ft5x06 with device 1-0038 
edt_ft5x06 1-0038: no default pinctrl state 
edt_ft5x06 1-0038: probe 
edt_ft5x06 1-0038: no platform data? 
edt_ft5x06: probe of 1-0038 failed with error -22 
i2c-core: driver [edt_ft5x06] registered 

Мое дерево устройство содержит:

smarc_i2c_cam: i2c-gpio-1 { 
    compatible = "i2c-gpio"; 
    pinctrl-names = "default"; 
    pinctrl-0 = <&pinctrl_smx6_i2c_gpio_1>; 
    gpios = 
     <&gpio4 10 0>, /* sda */ 
     <&gpio1 6 0>; /* scl */ 
    #address-cells = <1>; 
    #size-cells = <0>; 
    i2c-gpio,delay-us = <2>; 
}; 

polytouch: [email protected] { 
    compatible = "edt,edt-ft5x06"; 
    reg = <0x38>; 
    pinctrl-names = "default"; 
    //pinctrl-1 = <&edt_ft5x06_pins>; 
    interrupt-parent = <&gpio3>; 
    interrupts = <1 8>; 
}; 

Моя плата smarc-samx6i (imx6q "Freescale" процессор).
Ядро Linux - 3.10.17.

Но прикосновение не отвечает; даже i2c не отвечает. Есть ли что-то еще, о чем мне нужно позаботиться?

+0

У вас есть ошибки в дереве устройств. Но я думаю, что вы просто ошибаетесь здесь на стороне, иначе ваш образ не может быть создан. – h0ch5tr4355

+0

Ядро компилируется успешно, и я понимаю, что у моего дерева устройств есть некоторая конфигурация в конфигурации контактов прерываний. У вас есть какой-либо документ, который показывает, как этот два синтаксиса определяют «interrupt-parent = <&gpio3>; interrupts = <1 8>;» –

ответ

1

У меня есть сенсорный экран с 7 дюймовым сенсорным экраном с сенсорным контроллером EDT-FT5x06 на Lenmaker BananaPro (A20), работающий на ядре linux ядра 4.6.

Это патч моего дерева устройств. Посмотрите на wake-gpios и interrupts.

diff --git a/arch/arm/boot/dts/sun7i-a20-bananapro.dts b/arch/arm/boot/dts/sun7i-a20-bananapro.dts 
index 18fcc87..50f1a36 100644 
--- a/arch/arm/boot/dts/sun7i-a20-bananapro.dts 
+++ b/arch/arm/boot/dts/sun7i-a20-bananapro.dts 
@@ -147,6 +147,26 @@ 
status = "okay"; 
}; 

+&i2c3 { 
+ status = "okay"; 
+ pinctrl-names = "default"; 
+ pinctrl-0 = <&i2c3_pins_a>; 
+ edt: [email protected] { 
+   compatible = "edt,edt-ft5x06"; 
+   reg = <0x38>; 
+   interrupt-parent = <&pio>; 
+   interrupts = <7 9 IRQ_TYPE_EDGE_FALLING>; 
+   wake-gpios = <7 7 GPIO_ACTIVE_LOW>; 
+   pinctrl-names = "default"; 
+   pinctrl-0 = <&edt_ft5x06_pins>; 
+   touchscreen-size-x = <1024>; 
+   touchscreen-size-y = <600>; 
+   touchscreen-inverted-x; 
+   touchscreen-swapped-x-y; 
+ }; 
+}; 
+ 
+ 
&ir0 { 
    pinctrl-names = "default"; 
    pinctrl-0 = <&ir0_rx_pins_a>; 
@@ -222,6 +242,14 @@ 
allwinner,drive = <SUN4I_PINCTRL_10_MA>; 
    allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 
    }; 
+ 
+ edt_ft5x06_pins: [email protected] { 
+  allwinner,pins = "PH7", "PH9"; 
+  allwinner,function = "gpio_out"; 
+  allwinner,drive = <SUN4I_PINCTRL_40_MA>; 
+  allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 
+ }; 
+ 
}; 

&reg_usb1_vbus { 

Может быть, вы нашли больше в этой документации из модуля ядра Linux: https://www.kernel.org/doc/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt

или здесь: http://linux-sunxi.org/Touchscreen

+0

Я дал всю информацию в соответствии с приведенной выше надёжностью, и я обнаружил, что я использую gpio i2c и ту же шину разделяется двумя устройствами, поэтому я добавляю i2cmux в дереве устройств снова, ошибка при проверке edt-ft5x06 такая же, как edt_ft5x06 1-0038: нет данных платформы? edt_ft5x06: пробник 1-0038 не выполнен с ошибкой -22 i2c i2c-1: new_device: созданное устройство edt-ft5x06 при 0x38 –

1

Драйвер ВОСТОЧНОГО ft5x06 в 3.10.17 ядрах не дерево устройств включено. Вам придется выполнить резервное копирование драйвера из более раннего ядра, например, 4.1 или более позднего, и затем вы сможете использовать деревья устройств с драйвером.

+0

Помимо использования с помощью дерева устройств я могу вручную загрузить модуль сенсорного экрана в ядро ​​3.10.17 и используй это? –

+0

Я не совсем понял ваш вопрос. Если драйвер правильно изменен для дерева устройств и скомпилирован с правильным деревом устройства, вы можете динамически загружать модуль. – Sanchayan

+0

Я добавил модуль, используя menuconfig add make it.Is, что нормально добавлять вручную из cd /lib/modules/3.10.17-rel1.0\+g232293e/kernel/drivers/input/touchscreen/ после загрузки ядра. –

Смежные вопросы