【问题标题】:Can I query device tree items without creating a platform device?我可以在不创建平台设备的情况下查询设备树项目吗?
【发布时间】:2015-01-02 08:21:39
【问题描述】:

我正在编写一个内核模块,旨在对 ARM+FPGA SOC 系统的设备驱动程序内核模块进行功能测试。我的方法涉及通过查询设备树来查找设备驱动程序正在使用哪些中断。在设备驱动程序本身中,我使用platform_driver_register 注册了一个平台驱动程序,并在.probe 函数中传递了一个包含device 指针的platform_device* 指针。有了这个,我可以调用of_match_deviceirq_of_parse_and_map,检索中断号。

我不想注册第二个平台驱动程序只是为了在测试模块中以这种方式查询设备树。有没有其他方法可以查询设备树(也许更直接,也许是按名称?)

【问题讨论】:

标签: linux-kernel kernel-module device-tree


【解决方案1】:

这是我目前发现的,而且似乎有效。 of_find_compatible_node 做我想做的事。一旦我有了device_node*,我就可以调用irq_of_parse_and_map(因为of_irq_get_byname 似乎没有为我编译)。我可以像下面这样使用它:

#include <linux/of.h>
#include <linux/of_irq.h>
....
int get_dut_irq(char* dev_compatible_name)
{
    struct device_node* dev_node;
    int irq = -1;
    dev_node = of_find_compatible_node(NULL, NULL, dev_compatible_name);
    if (!dev_node)
        return -1;
    irq = irq_of_parse_and_map(dev_node, 0);
    of_node_put(dev_node);
    return irq;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 2013-06-11
    • 2016-11-14
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    相关资源
    最近更新 更多