Внешняя клавиатура - события ввода общего назначения (GPI) - PullRequest
0 голосов
/ 18 декабря 2018

Я подключаю внешнюю клавиатуру (с микросхемой TCA8418) к пользовательской плате (через i2c), и мы запускаем linux yocto 4.9.11.

В нашем дереве устройств мы используем MATRIX_KEY для определения клавиш иэто прекрасно работает!Проблема в том, что в дополнение к нашим клавишам MATRIX у нас есть 6 отдельных клавиш ввода (для них нет матрицы).Эти выдвинутые высокие клавиши разрешены как события ввода общего назначения (GPI).(документы 8.3.1.2)

Мой вопрос заключается в том, что если MATRIX_KEY является макросом для определения ключей ROW / COL, то каким макросом определяется ключ события GPI?Я включил свое дерево устройств, и вы видите, что фальшивый ряд 0x04, к которому я пытался прикрепить его, не работает.

схема клавиатуры: https://www.dropbox.com/s/jg1z76kipx5pxgz/Schematic_KEYPAD.pdf?dl=0 TCA8418 документы: https://www.dropbox.com/s/30xzugrq12fb329/tca8418.pdf?dl=0

Дерево устройств:

keypad: tca8418@34 {
compatible = "ti,tca8418";
reg = <0x34>;
debounce-delay-ms = <4>;
interrupt-parent = <&gpio5>;
interrupts = <13 IRQ_TYPE_EDGE_RISING>;
keypad,num-columns = <10>;
keypad,num-rows = <5>;
linux,no-autorepeat;

linux,keymap = <
MATRIX_KEY(0x00, 0x02, KEY_NUMERIC_1) /*ROW0, COLUMN2*/
MATRIX_KEY(0x00, 0x01, KEY_NUMERIC_2) /*ROW0, COLUMN1*/
MATRIX_KEY(0x00, 0x00, KEY_NUMERIC_3) /*ROW0, COLUMN0*/

MATRIX_KEY(0x01, 0x02, KEY_NUMERIC_4)  /*ROW1, COLUMN2*/
MATRIX_KEY(0x01, 0x01, KEY_NUMERIC_5)  /*ROW1, COLUMN1*/
MATRIX_KEY(0x01, 0x00, KEY_NUMERIC_6) /*ROW1, COLUMN0*/

MATRIX_KEY(0x02, 0x02, KEY_NUMERIC_7)  /*ROW2, COLUMN2*/
MATRIX_KEY(0x02, 0x01, KEY_NUMERIC_8)  /*ROW2, COLUMN1*/
MATRIX_KEY(0x02, 0x00, KEY_NUMERIC_9)  /*ROW2, COLUMN0*/

MATRIX_KEY(0x03, 0x02, KEY_NUMERIC_STAR)  /*ROW3, COLUMN2*/
MATRIX_KEY(0x03, 0x01, KEY_NUMERIC_0)  /*ROW3, COLUMN1*/
MATRIX_KEY(0x03, 0x00, KEY_ENTER)       /*ROW3, COLUMN0*/ 

MATRIX_KEY(0x04, 0x04, KEY_F1) /*ROW4, COLUMN4*/
MATRIX_KEY(0x04, 0x05, KEY_F2) /*ROW4, COLUMN5*/
MATRIX_KEY(0x04, 0x06, KEY_F3) /*ROW4, COLUMN6*/
MATRIX_KEY(0x04, 0x07, KEY_F4) /*ROW4, COLUMN7*/
MATRIX_KEY(0x04, 0x08, KEY_F5) /*ROW4, COLUMN8*/
MATRIX_KEY(0x04, 0x09, KEY_F6) /*ROW4, COLUMN9*/
>;
};

спасибо Зев.

...