struct device中的fwnode在linux内核中起什么作用?

dow*_*ney 6 c acpi linux-kernel device-tree

在struct device \xef\xbc\x8c的定义中有一个fwnode字段\xef\xbc\x8c

\n
struct device {\n    ...\n    struct fwnode_handle    *fwnode; /* firmware device node */\n    ...\n}\n
Run Code Online (Sandbox Code Playgroud)\n

相应的文件位于include/linux/fwnode.h中:

\n
struct fwnode_reference_args {\n    struct fwnode_handle *fwnode;\n    unsigned int nargs;\n    unsigned int args[NR_FWNODE_REFERENCE_ARGS];\n};\n...\n
Run Code Online (Sandbox Code Playgroud)\n

然后我在网站上搜索它,但找不到内核这部分(fwnode)的详细解释,那么这是什么意思?它有什么作用?\n你能提供一个文档以供参考吗?

\n

Jor*_*dan 3

fwnode 指的是固件节点,通常代表设备树或 ACPI(通常是 DSDT 表)中的条目。设备树和 ACPI 是定义设备及其属性以及它们之间的互连的两种不同方式。它们都使用树结构来编码这些信息。

给定的 fwnode 成员struct device是该设备相应固件表中的节点。ACPI 在基于 x86/UEFI 的系统中很常见,设备树在 ARM 系统中很常见。

fwnode 可以与接受 fwnode 句柄的内核 API 一起使用。其中一种 API 是 V4l2(Linux 视频 2)fwnode API:https ://www.kernel.org/doc/html/latest/media/kapi/v4l2-fwnode.html

一些很好的参考文档: