如何识别 i2c 地址的设备?

How to identify device at i2c address?

我有一台笔记本电脑 运行 Ubuntu,内核 v5.8。它有两个缺少功能驱动程序的相机,我想尝试让它们工作。

我遇到了一个直接的障碍,因为这些设备似乎没有按照我(或者实际上是 ACPI 表)预期的方式出现。例如对于前置摄像头,ACPI 表是这样说的:

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Name (SBUF, ResourceTemplate ()
                {
                    I2cSerialBusV2 (0x0010, ControllerInitiated, 0x00061A80,
                        AddressingMode7Bit, "\_SB.PCI0.I2C2",
                        0x00, ResourceConsumer, , Exclusive,
                        )
                })
                Return (SBUF) /* \_SB_.PCI0.CAM1._CRS.SBUF */
            }

和数据表有些矛盾的地址:

The 8-bit address of the OV2680 is 0x20 when SID pin is set to 1 or 0x6C when SID pin is set to 0.

但其中的 none 很有用,因为在 0x10、0x6C 或 0x20 处没有芯片。在 0x0c 处有 个芯片,但 两个 相机的 I2C 总线上只有 一个 芯片。这让我怀疑相机可能在多路复用器或其他东西后面,但我找不到任何相关文档。我如何识别特定 I2C 端口上的 运行 是什么设备,以便我可以弄清楚 0x0c 上的东西是什么?

更多信息:

笔记本电脑规格:Lenovo Miix 510。原始设备制造商 OS 是 Windows10。摄像头传感器是 OVTI2680 和 OVTI5648。

this gist

中的完整 DSDT 表

您是否加载了相机 PMIC 驱动程序?您的相机传感器可能已关闭电源。 摄像头PMIC为TPS68470芯片,由三个驱动代表:

  1. PMIC 作为 Multi-Functional Device (MFD) driver,ACPI ID INT3472
  2. GPIO driver
  3. OpRegion driver 支持从 ACPI 代码访问

必须启用并加载所有三个才能使电源门控工作。

关于 I²C 地址的附注。在数据 sheet 中,地址很可能是 8 位格式,意味着真实地址(7 位)是 0x10 或 0x36。