Я подключаю внешнюю клавиатуру (с микросхемой 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*/
>;
};
спасибо Зев.