Дерево устройств связывает нужный драйвер устройства во время загрузки в Linux (raspberry pi) - PullRequest
0 голосов
/ 11 июня 2018

Я написал один драйвер платформы (фиктивный драйвер) и хочу знать, что, как я могу использовать дерево устройств или "где добавить мой узел устройства?"в дереве устройств, чтобы мой драйвер автоматически загружался во время загрузки, а prob () вызывался автоматически.и
Я не знаю, в каком каталоге дерево устройств находит конкретный драйвер для привязки?
спасибо в ожидании !!

1 Ответ

0 голосов
/ 07 июля 2018

Для этого вам нужно использовать:

#include <linux/of.h>       
#include <linux/of_device.h>

И в декларациях вашего устройства (обратите внимание, я использую <you thing here> для вас, чтобы изменить с именами вашего устройства):

#ifdef CONFIG_OF
static const struct of_device_id <your_device_name_here>_dt_match_table[] = {
    { .compatible = "<your compatible string here>" },
    { },
};
MODULE_DEVICE_TABLE(of, <your_device_name_here>_dt_match_table);
#endif

static struct platform_driver <your_device_name_here>_driver = {
    .probe = <your_device_name_here>_probe,
    .remove = <your_device_name_here>_remove,
    .driver = {
        .name = "<your_device_name_here>",
        .of_match_table = of_match_ptr(clap_sensor_dt_match_table),
    },
};
module_platform_driver(<your_device_name_here>_driver);

Используя это в своем драйвере, вы можете написать следующее в дереве устройств:

<your_device_name_here> {
        compatible = "<your compatible string here>";
        pinctrl-names = "default";
        pinctrl-0 = <&your_pins_pinctrl>;
        label = "trigger";
        trigger-gpios = <&gpio 23 GPIO_ACTIVE_LOW>;
};

Совместимое свойство должно быть одинаковым в файле дерева устройств и в файле драйвера вашего устройства, чтобы ядро ​​могло соответствоватьинформация о его узле в дереве устройств с вашим драйвером.

И запоминание дерева устройств предназначено только для описания аппаратного обеспечения, не используйте его для хранения программных переменных или других программных компонентов.

Я рекомендую вамизучите немного о дереве устройств pinctrl и gpio.У малинового основания есть материал для наложения дерева устройств: https://www.raspberrypi.org/documentation/configuration/device-tree.md

...