добавить поддержку сенсорного экрана imx6 - PullRequest
0 голосов
/ 21 мая 2018

Я работаю с двойной световой цифровой платой imx6.Я хочу добавить сенсорную поддержку Ad7879.За мной следовали следующие шаги:

- Сначала я изменил файл конфигурации ядра, добавив поддержку сенсорного экрана и ad7879.В файле конфигурации ядра я сделал следующие изменения:

CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_AD7879=y
CONFIG_TOUCHSCREEN_AD7879_I2C=y

Сначала я настроил ad7879 как модуль:

CONFIG_INPUT_TOUCHSCREEN=y 
CONFIG_TOUCHSCREEN_AD7879=m  
CONFIG_TOUCHSCREEN_AD7879_I2C=m

После этого я произвел инициализацию устройства в устройстве.tree.

В файл imx6qdl-ccimx6sbc.dtsi я помещаю следующее:

&i2c3 {

ad7879@2c 
{
         compatible = "adi,ad7879-1";
         reg = <0x2c>;
         interrupt-parent = <&gpio6>;
         interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
         touchscreen-max-pressure = <4096>;
         adi,resistance-plate-x = <120>;
        adi,first-conversion-delay = /bits/ 8 <3>;
         adi,acquisition-time = /bits/ 8 <1>;
        adi,median-filter-size = /bits/ 8 <2>;
         adi,averaging = /bits/ 8 <1>;
         adi,conversion-interval = /bits/ 8 <255>;

};

Контроллер прерываний ad7879 подключен к выводу imx6 в EXP_I2C_IRQ_N, который является GPIO_6_15, по этой причине яположить interrupt-parent = <& gpio6> и interrupts = <15 IRQ_TYPE_EDGE_FALLING>;.

В файл imx6qdl-ccimx6sbc.dts я положил:

&i2c3 {
    ...



    ad7879@2c {
        status ="okay";
    };
    ...
};

Затем я скомпилировал образ linuxи дерево устройств.В imx6 с изображением linux, которое я настраиваю в качестве модуля ad7879, я загрузил модули ad7879, выполнив следующие действия:

root:~> modprobe ad7879
root:~> modprobe ad7879-i2c

, но нет сообщений журнала о ad7879, и нет привязанного узла ad7879.

Если я проверяю узел устройства, чтобы проверить узел устройства:

root@ccimx6sbc: ls -la /dev/input/
drwxr-xr-x    4 root     root           180 Jan  1  2000 .
drwxr-xr-x   14 root     root          3480 May 16 14:49 ..
drwxr-xr-x    2 root     root            80 Jan  1  2000 by-id
drwxr-xr-x    2 root     root           120 Jan  1  2000 by-path
crw-rw----    1 root     input      13,  64 Jan  1  2000 event0
crw-rw----    1 root     input      13,  65 Jan  1  2000 event1
crw-rw----    1 root     input      13,  66 Jan  1  2000 event2
crw-rw----    1 root     input      13,  63 Jan  1  2000 mice
crw-rw----    1 root     input      13,  32 Jan  1  2000 mouse0



root@ccimx6sbc:# cat /sys/class/input/input0/name
da9063-onkey
root@ccimx6sbc:# cat /sys/class/input/input1/name
Genius 4D Scroll Mouse
root@ccimx6sbc:# cat /sys/class/input/input2/name
sgtl5000-audio Headphone Jack

Вы можете увидеть, что ни один узел не связан.

root@ccimx6sbc:# cat /proc/interrupts
           CPU0       CPU1       
 29:     140884      13795       GIC  29  twd
 34:        406          0       GIC  34  sdma
 35:          0          0       GIC  35  VPU_JPG_IRQ
 37:          1          0       GIC  37  2400000.ipu
 38:         12          0       GIC  38  2400000.ipu
 42:         28          0       GIC  42
 44:          0          0       GIC  44  VPU_CODEC_IRQ
 50:          0          0       GIC  50  vdoa
 51:          0          0       GIC  51  rtc alarm
 54:         52          0       GIC  54  mmc3
 55:         52          0       GIC  55  mmc1
 57:       3580          0       GIC  57  mmc0
 61:        353          0       GIC  61  21f0000.serial
 63:          0          0       GIC  63  2008000.ecspi
 69:        472          0       GIC  69  21a4000.i2c
 70:       1367          0       GIC  70  21a8000.i2c
 72:        109          0       GIC  72  2184200.usb
 75:          0          0       GIC  75  2184000.usb
 79:          0          0       GIC  79  202c000.ssi
 81:          0          0       GIC  81  imx_thermal
 87:        167          0       GIC  87  i.MX Timer Tick
112:          0          0       GIC 112  20bc000.wdog
134:          0          0       GIC 134  mipi_dsi
137:        466          0       GIC 137  2101000.jr0
138:          0          0       GIC 138  2102000.jr1
139:          0          0       GIC 139  mmdc_1
144:          0          0       GIC 144  mmdc_1
147:          0          0       GIC 147  20e0000.hdmi_video
150:      62234          0       GIC 150  2188000.ethernet
151:          0          0       GIC 151  2188000.ethernet
192:          0          0  gpio-mxc   0  headphone detect
364:          1          0  gpio-mxc  12  da9063-irq
413:          0          1  da9063-irq   3  HWMON
414:          0          0  da9063-irq   0  ONKEY
415:          0          0  da9063-irq   1  ALARM
IPI0:          0          0  CPU wakeup interrupts
IPI1:          0         58  Timer broadcast interrupts
IPI2:       1405       2387  Rescheduling interrupts
IPI3:          0          0  Function call interrupts
IPI4:         19         33  Single function call interrupts
IPI5:          0          0  CPU stop interrupts
IPI6:        426        476  IRQ work interrupts
IPI7:          0          0  completion interrupts
Err:          0

Вы можете видеть, что естьне прерывает, связанный с ad7879.

Нет никакой разницы, когда я собираю ядро ​​linux с этой конфигурацией:

CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_AD7879=y
CONFIG_TOUCHSCREEN_AD7879_I2C=y

Я запустил dmesg и нет записей журнала, связанных с ad7879.

В imx6 linux я выполнил следующие команды:

>root@ccimx6sbc:i2cdetect 2

с таким ответом:

WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-2.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- UU -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- 2c -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --    

Если вы видите, что идентификатор устройства обнаружен (0x2c).

Затем я сделал:

>root@ccimx6sbc: i2cdump -r 0-0x40 2 0x2c

С этим ответом:

No size specified (using byte-data access)
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-2, address 0x2c, mode byte
Probe range limited to 0x00-0x40.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 00 40 00 00 00 00 00 00 00 00 00 00 00 03 00    ..@...........?.
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: 00  

Вы можете задать в 0x02 и 0x0e два значения по умолчанию для регистровиз ad7879, и они верны.Итак, я пришел к выводу, что контроллер хорошо подключен.

Не знаю, если я что-то упустил.

...