Для этого вам нужно использовать:
#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