如何解决单个 acpi 驱动程序可以为两个设备工作,一个是普通设备,另一个是平台设备
我想了解是否可以在以下两个设备之间共享一个驱动程序。例如。从 ACPI 表中,两个设备的映射如下:
Scope (\_SB)
{
Device (XYZ)
{
Name (_HID,"XYZ123") // _HID: Hardware ID
Name (_UID,"XYZ") // _UID: Unique ID
Method (_DIS,NotSerialized) // _DIS: Disable Device
{
}
Method (_DSM,4,Serialized) // _DSM: Device-Specific Method
{
}
...
}
}
Scope (\_SB.PCI0.PEG0.ABC)
{
OperationRegion (PCIM,SystemMemory,)
Method (_DSM,Serialized) // _DSM: Device-Specific Method
{
...
}
}
IIUC,设备 XYZ 是平台设备,设备 ABC 是可发现的 PCI 设备。
我需要使用设备 ABC (_SB.PCI0.PEG0.ABC) 的 ACPI 驱动程序访问设备 (XYZ) 的 _DSM 方法。从 https://lwn.net/Articles/367630/ 我了解到,为了为设备编写 ACPI 驱动程序,我们需要具备以下条件
static const struct acpi_device_id bt_device_ids[] = {
{ "TOS6205",0},{ "",};
MODULE_DEVICE_TABLE(acpi,bt_device_ids);
static struct acpi_driver toshiba_bt_driver = {
.name = "Toshiba BT",.class = "Toshiba",.ids = bt_device_ids,.ops = {
.add = toshiba_bt_rfkill_add,.remove = toshiba_bt_rfkill_remove,},.owner = THIS_MODULE,};
我想知道在“acpi_device_id”中添加一个新的附加条目是否对相同的“acpi_driver”有所帮助。还有为什么我们为“acpi_device_id”添加一个额外的空条目 { "",0}
?我知道每个设备都必须向 ACPI 注册自己,并注册通知程序才能接收来自 ACPI 的任何通知,我发现 https://www.kernel.org/doc/Documentation/acpi/enumeration.txt 但我无法完全理解它。是否可以修改设备 ABC 的现有驱动程序以访问 XYZ 设备的 _DSM()
功能?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。