在ACPI中,I2C驱动器应如何与HID PRP0001匹配 [英] How should I2C drivers be matched in ACPI with HID PRP0001

查看:13
本文介绍了在ACPI中,I2C驱动器应如何与HID PRP0001匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用特定于设备的数据在ACPI中实例化this sensor,即使用Name (_DSD, ...)和兼容的字符串,例如,使用以下ASL摘录:

Device (TOF1) {
    Name (_HID, "PRP0001")
    Name (_DDN, "STMicroelectronics VL53L0X laser rangefinder")
    Name (_CRS, ResourceTemplate () {
        I2cSerialBus (
            0x29,
            ControllerInitiated,
            I2C_SPEED,
            AddressingMode7Bit,
            "\_SB.PCI0.I2C1.MUX2.CH01",
            0x00,
            ResourceConsumer,,)
    })
    Name (_DSD, Package () {
        ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
        Package () {
            Package () {"compatible", "st,vl53l0x"},
        }
    })
}
我的印象是,如果我像在上面的ASL中那样指定我的设备,我将不需要修改驱动程序(例如,通过添加ACPI匹配表),并且可以使用驱动程序中现有的OF匹配表来匹配设备。然而,这似乎只是部分正确的。由于i2c-core-base.c中的内核检查:

,传感器无法探测
if (!driver->id_table &&
    !i2c_acpi_match_device(dev->driver->acpi_match_table, client) &&
    !i2c_of_match_device(dev->driver->of_match_table, client))
    return -ENODEV;
我对这句话的理解是,设备驱动程序必须具有(I)ID表或(Ii)匹配的ACPI ID表或(Iii)匹配的ID表。VL53L0X既没有ID表,也没有ACPI匹配表,因此我依赖使用OF表进行匹配。

现在,有两件事让我感到困惑。首先,我可以printk(KERN_ERR "%s", dev->driver->driver.name)并看到我确实已经在查看正确的驱动程序,那么我们到底为什么要检查该驱动程序是否再次匹配?

其次,如果i2c_of_match_device(dev->driver->of_match_table, client)不匹配,首先究竟是什么匹配导致能够printk(KERN_ERR "%s", dev->driver->driver.name)并查看驱动程序的正确名称?

推荐答案

实际上不是上述问题的答案,但解决此问题的一个办法是只将ID表添加到驱动程序。

static const struct i2c_device_id vl53l0x_id[] = {
    { "vl53l0x", 0 },
    { }
};
MODULE_DEVICE_TABLE(i2c, vl53l0x_id);

static struct i2c_driver vl53l0x_driver = {
    .driver = {
        .name = "vl53l0x-i2c",
        .of_match_table = st_vl53l0x_dt_match,
    },
    .probe_new = vl53l0x_probe,
    .id_table = vl53l0x_id,
};
module_i2c_driver(vl53l0x_driver);

这会导致跳过问题中的检查。这不是一个很好的解决方案,因为I2C ID表不会传递给probe_new,但是,它确实适用于此驱动程序,因为不需要进行进一步的配置。

然而,根据probe_new的介绍周围的评论和补丁,似乎不建议使用像这样匹配的i2c设备。

这篇关于在ACPI中,I2C驱动器应如何与HID PRP0001匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆