Как использовать дерево устройств для получения устройства с поворотным кодировщиком (NXP Yocto) - PullRequest
1 голос
/ 03 марта 2020

Что я хочу сделать:

Создать устройство поворотного кодировщика в Linux с Yocto Project и деревом устройств (/ dev / input / rotary-encoder). Устройство должно быть видно после загрузки, чтобы его можно было использовать в пользовательском пространстве.

Мое оборудование:

Оценочная плата i.MX8M Mini (imx8mm evk)

Поворотный энкодер с использованием двух GP IOs

EXP_GPIO13, EXP_GPIO14: Заголовок расширения

Мое программное обеспечение:

Yocto из NXP строит минимальное изображение для оценочной платы i.MX8M Mini.

Изображение:

inherit core-image

IMAGE_FEATURES += "debug-tweaks"

IMAGE_INSTALL = "\
    packagegroup-core-boot \
    kernel-modules \
    console-tools \
    kbd-keymaps \
    gcc \
    packagegroup-core-buildessential \
    nano \
    ntp \
    "

Распространяется на основе:

require conf/distro/poky.conf

Что Я попытался:

Я изменил файл dts и добавил код для поворотного кодировщика (arch / arm64 / boot / dts / freescale / fsl-imx8mm-evk.dts):

/ {
    ...

    rotary@0 {
        compatible = "rotary-encoder";
        gpios = <&pca6416 14 GPIO_ACTIVE_HIGH>, <&pca6416 13 GPIO_ACTIVE_HIGH>;
        linux,axis = <REL_WHEEL>;
        rotary-encoder,relative-axis;
        rotary-encoder,half-period;
        status = "okay";
    };
};

Какой правильный путь, и может мне нужен драйвер устройства в дополнение к файлу дерева устройств? Я думал, что Linux будет иметь один для поворотных энкодеров. Проблема в том, что мои знания о деревьях устройств ограничены. Я пытался найти решение через Google, но не смог. Может быть, кто-то может помочь, как интегрировать это с оценочной платой.

Я также нашел эту ссылку: https://www.kernel.org/doc/Documentation/input/devices/rotary-encoder.rst и интерпретировал текст так, что мне не нужен драйвер / module:

Поскольку драйвер использует общие свойства устройства c, это можно сделать либо через дерево устройств, ACPI, либо с помощью файлов плат stati c, как в примере ниже:

Я также открыл тему в сообществе NXP: https://community.nxp.com/thread/525581

...