эти строки точно закомментированы, при этом на этапе компиляции ошибок не выдает... что делать? могу отправить свой конфиг (сюда не прикрепляется почему-то)
может вообще ничего не инициализировать, а только описать структуры пинов клавиатуры? драйвер судя по всему их сам инитит:
1) А на одном прерывании никак не получится?
2) Можно-ли ROWS настраивать не как GPIO (External interrupt например) ?
3) Есть ли еще способ организации пары десятков клавиш, поддерживаемый ядром линуха? может IO expander? (Это конечно крайний вариант)
1 см 2
2 не совсем понял вопрос, matrix-keypad работает с GPIO. Конечно можно изменить немного драйвер - достаточно одного прерывания, номер прерывания не используется - вся матрица сканируется после прерывания от любого row, но тогда схему матрицы нужно дополнять.
3 USB клавиатура :)
Можно изменить немного драйвер - зарегистрировать обработчики по одному фронту в зависимости от активного уровеня (уровень который соответствует нажатой клавише), он определен в бордфайле, у вас он
.active_low = 1,
Изначально предполагаем что все клавиши отпущены и мы ожидаем первого нажатия
в самом обработчике irq никакой работы не делается - там только отключаются прерывания и ставится в очередь отложенный обработчик прерывания (matrix_keypad_scan), это нужно чтобы исключить влияние "дребезга" контактов. В отложенном обработчике сканируется вся матрица и определяются клавиши изменившие свое состояние - тут нам нужно переключать триггер для прерывания у row которые изменили состояние в зависимости от нового их состояния
работать это должно но кривовато - например сразу непонятно - как поведет себя клава при одновременном нажатии клавиш с одинаковым row.