【问题标题】:How to define a relay in a device tree如何在设备树中定义继电器
【发布时间】:2021-03-26 01:56:43
【问题描述】:

我有一块板子,SoC 运行 Linux 5+,带有一个继电器。继电器由 GPIO 触发。我正在寻找一种在设备树文件中定义继电器的好方法。

我将 LED 定义为

led {
    compatible = "gpio-leds";
    debug {
        label = "debug";
        gpios = ...
        default-state = "off";
    };
};

这会导致

# ls /sys/class/leds/
debug

我想让继电器类似

# ls /sys/class/{relays,outputs,gpios}/
relay1

有什么好的方法可以做到这一点?

【问题讨论】:

  • 谢谢。我确实通过“gpio-line-names”命名它们。但是,当我通过设备 API 进行交互时,这些名称就像一个标签。我想象在 sysfs 中有 GPIO,比如“leds”。也许我只是从错误的角度来解决这个问题。
  • 再次感谢您。我认为这足以回答。 IE。避免使用 sysfs,使用gpio-line-names,并通过更新的字符设备 API 进行交互。

标签: embedded-linux device-tree


【解决方案1】:

由于继电器的行为与 GPIO 输出(或更准确地说是 GPO)一样简单,因此您只需命名相应的线路即可。可以通过在 ACPI 或设备树中分配 GPIO 控制器的gpio-line-names 属性来完成。使用libgpiod工具(如gpiofindgpioinfo),通过字符设备节点访问GPIO控制器,您可以找到您的线路并对其进行操作。请注意,GPIO sysfs 接口已被弃用,它将在大约 5 年左右的时间内从内核中删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2015-06-28
    • 1970-01-01
    相关资源
    最近更新 更多