Не может получить данные от ИК-датчика на встроенном Linux с помощью официального драйвера

Я запускаю образ linux (созданный с помощью buildroot и ядра 4.11.2, предоставленного производителем) на плате NANOPI NEO Air с ИК-датчиком, подключенным непосредственно к ИК-контакту. Я хочу использовать датчик для получения данных с пульта дистанционного управления.

Я следовал процедуре, найденной здесь, с тем же драйвером и получил те же результаты, но я не могу получить данные от /dev/input/eventX, и при этом я не могу заставить свой пульт появляться в /proc/bus/input/devices (Я пытался отправить данные с пульта дистанционного управления при вставке драйвера или при загрузке, когда драйвер встроен, но, очевидно, это не сработало, и я не нашел много информации об этом).

Я также попытался с lirc и evtest / irrecord, но я все еще не могу получить какие-либо данные, и я думаю, что проблема в другом месте.

Я проверил датчик и пульт дистанционного управления с помощью осциллографа, поэтому я знаю, что датчик получает кадры от пульта. Я также уверен, что это не несоответствие протокола на стороне водителя.

Итак, у меня есть два вопроса:

  • В чем здесь проблема и почему я не могу ничего получить, когда бегу cat /dev/input/eventX?
  • Должен ли мой пульт показываться в /proc/bus/input/devices и есть ли процедура сопряжения, о которой я должен знать?

Прошу прощения, если это тривиальные вопросы (я никогда раньше не работал над IR), и заранее благодарю.

РЕДАКТИРОВАТЬ

Мне удалось заставить мой пульт работать с одним из старых образов, предоставленных производителем (ядро 3.4.39-h3), и я заметил, что:

  • Драйвер, который я использую, не работает (он никогда не входит в функцию прерывания, которая читает FIFO, а физические адреса, связанные с FIFO, всегда равны 0)
  • Драйвер для старого образа регистрирует следующее устройство ввода в своей функции инициализации (жестко), которую я затем использую для получения данных с пульта (используя cat /dev/input/event1):
    pi @ NanoPi-NEO-Air: ~ $ cat / proc / bus / input / devices...    
    I: Автобус =0019 Продавец =0001 Продукт =0001 Версия =0100
    N: Name="sunxi-ir"
    P: Phys=RemoteIR/input1
    S: Sysfs=/devices/virtual/input/input1
    U: Uniq=
    H: обработчики =sysrq kbd event1 cpufreq_interactive 
    B: PROP=0
    B: EV=100003
    B: KEY=ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe

Так что теперь мне интересно, стоит ли мне регистрировать это устройство в используемом мной драйвере, и если да, то как мне это сделать?

1 ответ

Решение

Один из моих коллег по работе решил это, проблема была в дтс.
В sun8i-h3-nanopi-neo-air.dts, просто активировав IR следующим образом:

&ir {
    status = "okay";
};

не достаточно, контакты для IR тоже должны быть переопределены:

​&ir {
​    pinctrl-names = "default";
​    pinctrl-0 = <&ir_pins_a>;
​    status = "okay";
​};

Надеюсь, это кому-нибудь поможет.

Другие вопросы по тегам