【问题标题】:How to match a Linux driver with a hardware device如何将 Linux 驱动程序与硬件设备匹配
【发布时间】:2021-10-14 03:34:57
【问题描述】:

我正在为一些自定义硬件编写 Linux 驱动程序。我的问题是 Linux 如何将硬件与我的驱动程序相匹配。硬件的DT入口是

nvme_host_sys@43c00000 {
        clock-names = "sys_clk_p", "sys_clk_n", "aclk";
        clocks = <0x13 0x13 0x13>;
        compatible = "xlnx,nvme-host-sys-1.0";
        interrupt-names = "intr";
        interrupt-parent = <0x4>;
        interrupts = <0x0 0x1d 0x4>;
        reg = <0x43c00000 0x80000>;
        phandle = <0x38>;
    };

我可以使用 modprobe 插入我的驱动程序,并且工作正常,因为我可以看到 init 中的 printk 正在编写。我还可以使用 mknod 在 /dev 中创建一个条目,这也可以正常工作。但是驱动程序现在是否与硬件相关联?我需要做其他事情吗?谢谢

【问题讨论】:

  • 它通过内核已分配给硬件的主要和次要设备编号以及您已在驱动程序中注册。

标签: linux module


【解决方案1】:

我找到了解决方案。在驱动程序代码中,我们只需要添加以下内容:-

static struct of_device_id nvmedrv_of_match[] = {
    { .compatible = "xlnx,nvme-host-sys-1.0", },
    { /* end of list */ },
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2010-09-06
    • 2013-03-25
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    相关资源
    最近更新 更多