You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ACPI环境下Linux I2C驱动无法与设备绑定的排查求助

I2C Hwmon驱动ACPI绑定失败排查方案

问题概述

将仅支持设备树的hwmon驱动适配为兼容ACPI,采用_HID(DEVC1111)实现设备绑定,但驱动始终无法与ACPI设备建立绑定关系。经排查,故障点位于__acpi_match_device()函数的!device检查环节,该条件始终成立导致匹配失败。

已完成操作

  • 修改DSDT添加DEVC设备节点,包含_HID、_CRS(I2cSerialBusV2)、_DSD属性,且/sys/devices/LNXSYSTM:00/LNXSYBUS:00/下存在该设备条目
  • 在内核i2c_acpi_get_i2c_resource()中添加打印,确认已正常读取I2cSerialBusV2中的资源属性
  • 驱动中添加ACPI设备ID匹配表,注册I2C驱动时指定acpi_match_table
  • i2cdetect -r -y 1可识别设备地址0x45;执行echo my_device 0x45 > /sys/bus/i2c/devices/i2c-1/new_device可触发驱动探测,但ACPI_HANDLE(&i2c_client->dev)返回false,且ACPI设备目录缺少physical_node条目

排查步骤

1. 检查I2C控制器的ACPI配置与关联

  • 确认DSDT中I2C控制器节点(I2C1)的_HID是否符合内核I2C ACPI驱动的匹配规则,比如是否为标准控制器HID(如INT344x系列),或是否有对应内核驱动支持该控制器的ACPI枚举
  • 验证DEVC节点_CRS中指定的控制器路径"\_SB.I2C1"是否与实际I2C控制器的ACPI路径完全一致,路径的节点名称、大小写必须严格匹配

2. 验证ACPI设备与I2C客户端的关联逻辑

  • 查看内核启动日志(dmesg),搜索DEVC1111或I2C1关键词,确认ACPI子系统是否正确枚举DEVC设备,并尝试将其关联到I2C总线
  • 检查/sys/bus/acpi/devices/下是否存在DEVC对应的设备目录,查看其路径是否指向正确的I2C控制器总线
  • 手动触发ACPI设备与I2C总线的绑定:进入/sys/bus/acpi/devices/[DEVC设备目录]/,执行echo -n i2c > drivers_autoprobe,观察是否生成对应的I2C客户端设备

3. 排查physical_node缺失的原因

physical_node缺失说明ACPI设备未正确关联到物理总线设备(I2C客户端),可从以下方面排查:

  • 确认内核CONFIG_ACPI_I2C配置项已开启,该选项负责ACPI与I2C设备的关联逻辑
  • 尝试在DSDT的DEVC节点中添加Name (_ADR, 0x45)属性,部分内核版本依赖_ADR标识设备在总线上的地址
  • 临时在内核i2c_acpi_register_device()函数中添加printk,确认是否成功为ACPI设备创建I2C客户端

4. 检查驱动匹配逻辑细节

  • 尝试移除驱动中acpi_match_table赋值时的ACPI_PTR宏,直接改为.acpi_match_table = device_acpi_match_table,,部分内核版本无需该宏包装
  • 分析__acpi_match_device()中!device的触发原因:该条件通常表示匹配时传入的device指针为NULL,或ACPI设备对应的物理设备未正确创建。可在驱动probe_new函数中添加打印,查看i2c_client->dev.parent是否指向I2C控制器,以及ACPI_HANDLE(dev.parent)是否有效

5. 验证ACPI _DSD属性正确性

  • 确认_DSD中使用的UUIDdaffd814-6eba-4d8c-8a91-bc9bbf4aa301为通用属性标准UUID,无需修改
  • 将_DSD中"reg"属性的值改为十六进制0x45,确认内核是否能正确解析设备地址(当前为十进制45,需匹配_CRS中的0x45)

内容的提问来源于stack exchange,提问作者PlasticGlass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:25:17