Ник:
Пароль:

Контакты

Cтатус Skype: starterkit.ru
тел.: (+7 3412) 478-448
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
E-mail: info@starterkit.ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Помогите разобраться с DeviceTree
ad
Добавлено 23.10.2017 16:28
0
Сообщение: 1
ad
0

Пункты: 433
Регистрация: 25.02.2016
Комплект оборудования
модуль SK-IMX6S-SODIMM
плата SK-IMX6-MB-SODIMM (V1.0)
LCD модуль SK-ATM0700D4-Plug (V3.A)

пытаюсь к модулю подключить тач Goodix (чип GT911)
подключаю к разъему х14 модуля SK-ATM0700D4-Plug

в конфигурации ядра включаю
Device Drivers > Input device support > Touchscreens > Goodix I2C touchscreen
Device Drivers > HID support > I2C HID support > HID over I2C transport layer

Далее насколько я понимаю необходимо прописать конфигурацию, в документации есть пример:
http://elixir.free-electrons.com/linux/v4.1.15/source/Documentation/devicetree/bindings/input/touchscreen/goodix.txt

Смотрю описание на GT911
https://focuslcds.com/wp-content/uploads/2014/12/GT911.pdf
GT911 supports two I2C slave addresses: 0xBA/0xBB and 0x28/0x29

в файл arch/arm/boot/dts/imx6qdl-sodimm.dtsi
в блок &i2c2 добавляю

gt911@28 {
compatible = "goodix,gt911";
reg = <0x28>;
interrupt-parent = <&i2c2>;
interrupts = <0 0>;
};

При старте системы получаю ошибку
Goodix-TS 1-0028: i2c test failed attempt 1: -5
Goodix-TS 1-0028: i2c test failed attempt 2: -5
Goodix-TS 1-0028: I2C communication failure: -5
Goodix-TS: probe of 1-0028 failed with error -5

Насколько я понимаю неверно указываю interrupt-parent и interrupts.
Объясните пожалуйста, каким образом искать эти значения.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 23.10.2017 17:58 Редактировалось 23.10.2017 18:04 Сообщение: 2
sasamy
4.77

Пункты: 64524
Регистрация: 14.08.2009
reg = <0x28>;

насчет этого надо смотреть мануал - адрес можно сконфигурировать - какой там адрес если не конфигурировать

Цитата

GT911 supports two I 2 C slave addresses: 0xBA/0xBB and 0x28/0x29. The host can select the
address by changing the status of Reset and INT pins during the power-on initialization phase. See
the diagram below for configuration methods and timings:


Цитата

Насколько я понимаю неверно указываю interrupt-parent и interrupts.
Объясните пожалуйста, каким образом искать эти значения.


у вас должна быть линия запроса на прерывание подключена к какомму-то пину процессора

https://focuslcds.com/wp-content/uploads/2014/12/GT911.pdf

стр.6

4.Pin Configurations

16 INT Interrupt signal

Например по аналогии как для spi тачскрина штатного пропишите gpio от которого прерывания ловить

1) переключите пин на GPIO

&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;

hog {
pinctrl_hog: hoggrp {
fsl,pins = <
.....
/* LVDS1 TS PENIRQ */
MX6QDL_PAD_EIM_D27__GPIO3_IO27 0x80000000
.....

2) прописать его прерывание для вашего контроллера

/* pen irq is GPIO3_27 */
interrupt-parent = <&gpio3>;
interrupts = <27 0x2>;
Спуститься к концу Подняться к началу
Персональная информация
ad
Добавлено 24.10.2017 16:43 Сообщение: 3
ad
0

Пункты: 433
Регистрация: 25.02.2016
тач подключаю к разъему х14 модуля SK-ATM0700D4-Plug
по схеме http://starterkit.ru/html/doc/SK-ATM0700D4-Plug_3A.pdf
х14 пин 4 -> пин 14 х10
х10 SK-ATM0700D4-Plug соеденил с х12 SK-IMX6-MB-SODIMM
по схеме http://starterkit.ru/html/doc/SK-iMX6-MB-SODIMM_V1B.pdf
х12 пин 14 -> PENIRQ1

пытаюсь по аналогии с тем что прописано
/* LVDS0 TS PENIRQ */
MX6QDL_PAD_KEY_COL2__GPIO4_IO10 0x80000000

в секцию
&i2c2 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2_sodimm>;
status = "okay";

gt911@28 {
compatible = "goodix,gt911";
reg = <0x28>;
interrupt-parent = <&gpio4>;
interrupts = <10 0x2>;
};

если прописать адрес 0х28 при старте выдает ошибку
Goodix-TS 1-0028: i2c test failed attempt 1: -5
Goodix-TS 1-0028: i2c test failed attempt 2: -5
Goodix-TS 1-0028: I2C communication failure: -5
Goodix-TS: probe of 1-0028 failed with error -5

если указать адрес 0хBA вывод об ошибке отсутствует, но и устройство в системе не появляется

пробовал комментировать блоки tsc2046 в spi результат тот же.

Задайте пожалуйста направление для следующих шагов.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 24.10.2017 19:01 Редактировалось 24.10.2017 19:11 Сообщение: 4
sasamy
4.77

Пункты: 64524
Регистрация: 14.08.2009
Цитата

reg = <0x28>;


надо адрес не по даташиту брать, в документации

http://elixir.free-electrons.com/linux/v4.1.15/source/Documentation/devicetree/bindings/input/touchscreen/goodix.txt

вместо 0xBA или 0x28 надо указывать

Цитата

reg : I2C address of the chip. Should be 0x5d or 0x14


т.е. сдвинут на 1 бит вправо, совсем забыл про это. Перерывание вроде верно прописали.
Спуститься к концу Подняться к началу
Персональная информация
ad
Добавлено 25.10.2017 10:59 Сообщение: 5
ad
0

Пункты: 433
Регистрация: 25.02.2016
Результат тот же
5d
Goodix-TS 1-005d: i2c test failed attempt 1: -5
Goodix-TS 1-005d: i2c test failed attempt 2: -5
Goodix-TS 1-005d: I2C communication failure: -5
Goodix-TS: probe of 1-005d failed with error -5

14
Goodix-TS 1-0014: i2c test failed attempt 1: -5
Goodix-TS 1-0014: i2c test failed attempt 2: -5
Goodix-TS 1-0014: I2C communication failure: -5
Goodix-TS: probe of 1-0014 failed with error -5

imx6qdl-sodimm.dtsi
https://drive.google.com/open?id=0B5LE5cvtR2bsS2t3TWowV1F0MVk
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.10.2017 12:26 Сообщение: 6
Jury093
4.58

Пункты: 54126
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
1. покажите, что у вас в /dev с i2c командой
Код
ls -l /dev/i2c*


2. запустите утилиту
Код
i2cdetect -y 2

где вместо "2" впишите свой номер шины

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
ad
Добавлено 25.10.2017 13:01 Сообщение: 7
ad
0

Пункты: 433
Регистрация: 25.02.2016
# ls /dev/i2c*
/dev/i2c-1
# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
20: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.10.2017 13:30 Сообщение: 8
Jury093
4.58

Пункты: 54126
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
прелестно.. утилита i2cdetect показала занятые адреса 0x1a, 0x21, 0x50, не факт, что там есть микросхемы, но драйвера заняли адреса
но вашего чипа на шине не видно, разбирайтесь с физикой соединения - питание, крест sda/scl, пуллапы и тыпы
когда контроллер появится на шине, тогда и драйвер прикручивайте

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 25.10.2017 14:05 Редактировалось 25.10.2017 14:19 Сообщение: 9
sasamy
4.77

Пункты: 64524
Регистрация: 14.08.2009
Плюсом к тому что Юра написал

1) Проверьте линию RESET ее надо подтягивать к 1 (+3.3 В), нельзя оставлять не подключенной

Цитата

External 10K pull-up resistor
required, active-low reset


2) Попробуйте сделать подтяжку к 0 для линии INT (10 кОм), после сброса процессора там 1 из-за внутренней подтяжки 100 кОм а на всех диаграммах в даташите на ней 0 нужен. Еще надо в DTS изменить прерывание - сделать по нарастающему фронту

interrupts = <10 0x1>;

3) Проверьте пин

18 Sensor_OPT2 Module ID pin External pull-down resistor required
Спуститься к концу Подняться к началу
Персональная информация
ad
Добавлено 25.10.2017 17:00 Сообщение: 10
ad
0

Пункты: 433
Регистрация: 25.02.2016
Добавил соединение
разьем Х9 пин 5 SK-IMX6-MB-SODIMM -> разьем Х1 пин 9 SK-ATM0700D4-Plug
разьем Х9 пин 6 SK-IMX6-MB-SODIMM -> разьем Х1 пин 15 SK-ATM0700D4-Plug

# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
20: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: UU -- -- -- -- -- -- -- -- -- -- -- -- 5d -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

прописал блок с адресом 5d
при загрузке получил
Goodix-TS 1-005d: IC VERSION: 39 31 31 00 50 10
input: Goodix Capacitive TouchScreen as /devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-005d/input/input0

запустил команду
# cat /dev/input/event0

при нажатии на тач в консоль идет вывод...

спасибо за помощь
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux