1

我的i2c clock-frequency价值观来自 BIOS。

我已经提取了DSDTi2c clock-frequency字段如下:

         Device (I2C1)
        {
            Name (_ADR, 0x00160001)  // _ADR: Address
            Name (_DDN, "Intel(R) I2C Controller #1")  // _DDN: DOS Device Name
            Name (_UID, 0x02)  // _UID: Unique ID
            Name (LINK, "\\_SB.PCI0.I2C1")
            Name (RBUF, ResourceTemplate ()
            {
            })
            Name (_DSD, Package (0x02)
            {
                Buffer (0x10)
                {
                    /* 0000 */   0x14, 0xD8, 0xFF, 0xDA, 0xBA, 0x6E, 0x8C, 0x4D,
                    /* 0008 */   0x8A, 0x91, 0xBC, 0x9B, 0xBF, 0x4A, 0xA3, 0x01
                }, 

                Package (0x01)
                {
                    Package (0x02)
                    {
                        "clock-frequency", 
                        IC1S
                    }
                }
            })

但是没有提到不同模式(如 400k、1M 等)的 i2c 时钟频率值。这些值在哪里定义?它是如何从 BIOS 传递到驱动程序的?

4

1 回答 1

0

这些i2c-clock-frequency值已在BIOS source code(显然)中定义。因为我们可以BIOS选择其中任何一个Standard Mode (100k), Fast Mode (400k), Fast Plus (1M) & High Speed (3.4M),所以这些值应该在 BIOS 源代码中的某处匹配。内核 API

`device_property_read_u32(&pdev->dev, "clock-frequency", &dev->clk_freq);` 

匹配&中的"clock-frequency" propname字段,从.ACPIi2c-clock-frequencyACPI object

于 2017-05-03T06:09:12.273 回答