我正在将外部键盘(带有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*/
>;
};
谢谢 Zev。