Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Embedded Linux
подключение тач FT5x06
z00b
Добавлено 22.10.2012 14:46 Редактировалось 23.10.2012 15:13
0
Сообщение: 1
z00b
0

Пункты: 5587
Регистрация: 11.02.2012
Подключаю тач на дисплее NHD-5.0-800480TF-ATXI#-CTP, контроллер тача FT5x06. Работает по i2c шине. Утилитами i2ctools видется по адреcу 0x38, опрашивается, все ок.
Плата SK-iMX53-oem + SK-iMX53-MB. ядро китовое.
Нагуглились драйвера http://gnu.su/Qy и http://gnu.su/Q2 Пытаюсь сейчас завести второй (edt-ft5x06) , не пойму, что добавить в файл борды, подскажите как инициализировать драйвер на i2c.
Добавлял структуру:


struct edt_ft5x06_platform_data ads_info={

.irq_pin=TS0_MOSI,
.reset_pin=TS0_MISO,


/* startup defaults for operational parameters */
.gain=0x30,
.threshold=0x00,
.offset=0x31,
.report_rate=0x08,
};




static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {
{
.type = "adv7180",
.addr = 0x21,
.platform_data = (void *)&adv7180_data,
},
{
.type = "tlv320aic23",
.addr = 0x1a,
},
{
.type = "ds1338",
.addr = 0x68,
},

{
.type="FT5x06",
.addr=0x38,
.platform_data=(void *)&ads_info,


},
};



Ну и :

static void __init mx53_loco_io_init(void)
{
mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads,
ARRAY_SIZE(mx53_loco_pads));

mxc_iomux_v3_setup_multiple_pads(mx53_nand_pads,
ARRAY_SIZE(mx53_nand_pads));

/* SD1 */
gpio_request(SD1_CD, "sd1-cd");
gpio_direction_input(SD1_CD);

/* SD2 */
gpio_request(SD2_CD, "sd2-cd");
gpio_direction_input(SD2_CD);
/*
#if defined(CONFIG_TOUCHSCREEN_ADS7846)
gpio_request(TS0_PENIRQ, "ts0-penirq");
gpio_direction_input(TS0_PENIRQ);

gpio_request(TS1_PENIRQ, "ts1-penirq");
gpio_direction_input(TS1_PENIRQ,"ts_int);
#endif
*/

gpio_request(TS0_MOSI, "ts_irq_int");
gpio_direction_input(TS0_MOSI); //INT

gpio_request(TS0_MISO, "ts_wake");
gpio_direction_output(TS0_MISO,1); // WAKE

}
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 22.10.2012 15:47 Редактировалось 22.10.2012 15:47 Сообщение: 2
sasamy
4.70

Пункты: 76994
Регистрация: 14.08.2009
попробуйте
{
.type="edt-ft5x06",
.addr=0x38,
.platform_data=(void *)&ads_info,

},
Спуститься к концу Подняться к началу
Персональная информация
z00b
Добавлено 22.10.2012 16:14 Сообщение: 3
z00b
0

Пункты: 5587
Регистрация: 11.02.2012
Цитата
попробуйте
{
.type="edt-ft5x06",
.addr=0x38,
.platform_data=(void *)&ads_info,

},


к сожалению не помогает
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 22.10.2012 22:13 Сообщение: 4
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
в какой-то момент телепатом быть надоедает..
вы в схему то заглядывали?
в курсе, что у этого АРМа 3 шины i2c?
небось к разъему Х1 прицепили - так часики и аудиокодек на другой шинке висят, не?

чтобы понять, есть тачконтроллер на шине и на какой, надо:
дать команду ls /dev/i2c*
запомнить номера шинок(и)
потом воспользоваться утилитой
i2cdetect -y N (где N - это номер существующей шины)
и если в дампе устройств увидится заветный номер 0x38, то тогда и только тогда запускать драйвер.. прописав устройство на правильную шину..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
z00b
Добавлено 23.10.2012 10:49 Сообщение: 5
z00b
0

Пункты: 5587
Регистрация: 11.02.2012
День добрый, Jury093!
Да я в курсе, что там три шины, дисплей подключил как раз к X1, а i2c контроллера тача напаяны на X3, все устройства системы подключенные по i2c(RTC,звук, videoADC-Plug(adv7180) и тач. соответственно) в итоге висят на одной шине, i2ctoolsaми все детектится, и даже корректно высылыает количество нажатий на тач и т.п.
Вопрос в том, как инициализировать правильно драйвер в системе.
Да кстати, утилита i2ctool по всем адресам устройств кроме тача пишет UU, а по адресу тача просто 0x38...
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.10.2012 11:40 Сообщение: 6
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
ну допустим, убедили по железу..
далее, в исходниках драйвера находите, как он зовется в системе
это же имя прописываете в описание устройств файла платы..
далее в тех же исходниках драйвера находите функцию пробы инита железа и структур - ключевое слово для поиска _probe
там в са-а-мом начале функции прописываете отладочный принтк
printk("*** touch driver probe\n");
если в логе ядра будет эта строка, то можно копать - чего не хватает драйверу
если строки нет, а значит ядро не увидело структуру в файле борды - копать там на предмет правильности написания имени драйвера..

Цитата
Да кстати, утилита i2ctool по всем адресам устройств кроме тача пишет UU, а по адресу тача просто 0x38..

все честно - драйвер занял устройство и утилиты получают отлуп по доступу..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 23.10.2012 11:44 Редактировалось 23.10.2012 11:49 Сообщение: 7
sasamy
4.70

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

Да кстати, утилита i2ctool по всем адресам устройств кроме тача пишет UU, а по адресу тача просто 0x38...


включите отладку в ядре для i2c
Device Drivers --->
<*> I2C support --->
[*] I2C Core debugging messages
[*] I2C Algorithm debugging messages
[*] I2C Bus debugging messages

не помню точно - нужно ли добавить debug в строке загрузки ядра - добавьте, хуже не будет. По логу будет более понятно что происходит, инициализируется ли вообще ваш драйвер.

Цитата

Да я в курсе, что там три шины, дисплей подключил как раз к X1, а i2c контроллера тача напаяны на X3,


потом как с драйвером разберетесь - проще добавить 4-ю софтовую шину на GPIO вместо spi-gpio для штатного тачскрина чтобы все на одном разъеме было.

PS кстати драйвер который вы пытаете есть в ванильном ядре 3.6.х
Спуститься к концу Подняться к началу
Персональная информация
z00b
Добавлено 29.10.2012 11:45 Сообщение: 8
z00b
0

Пункты: 5587
Регистрация: 11.02.2012
Добился того, что по нажатию тач сыпет координаты в консоль.
Но на /dev/input/event0 нет никаких данных.
Вывод при загрузке такой:
Цитата
input: edt-ft5x06 as /devices/platform/imx-i2c.1/i2c-1/1-0038/input/input0
evbug.c: Connected device: input0 (edt-ft5x06 at unknown)

Вот смущает вторая строчка, подскажите куда копать, плз.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 29.10.2012 14:29 Сообщение: 9
sasamy
4.70

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

Вот смущает вторая строчка, подскажите куда копать, плз.


подозреваю что-то изменилось в интерфейсе ядра за несколько лет после выхода 2.6.35 и 3.6.х
Спуститься к концу Подняться к началу
Персональная информация
z00b
Добавлено 29.10.2012 15:06 Сообщение: 10
z00b
0

Пункты: 5587
Регистрация: 11.02.2012
=) да, драйвер изрядно приходится перелопачивать, делаю вывод пока одной точки нажатия. Вроде с /dev/input/event* получилось разобраться.
ts_print_raw координаты выводит
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux